graalvmXX-ce: add sourcesPath parameter

In #168816, we removed support for Python/Ruby/WASM to reduce the
support burden of GraalVM languages that, arguably, are not really being
used.

However, the way that `pkgs.graalvmCEPackages.mkGraal` function works
right now doesn't allow passing a custom sources file, that would allow
someone to compile GraalVM with the additional products (e.g.: Python).
This PR adds this possibility.

So if someone wants to create a custom graalvm11-ce derivation with
Python support, for example, they can do something like this:

```nix
let
   graalvm11-ce-custom = pkgs.graalvmCEPackages.mkGraal {
      config = {
         x86_64-linux = {
            products = [ "graalvm-ce" "python-installable-svm" ];
            arch = "linux-amd64";
         };
      };
      defaultVersion = "22.0.0.2";
      javaVersion = "11";
      platforms = "x86_64-linux";
      sourcesPath = /home/someone/graalvm11-ce-sources.json;
   };
in
{
   environment.systemPackages = [ graalvm11-ce-custom ];
}
```
This commit is contained in:
Thiago Kenji Okada 2022-04-16 12:37:37 +01:00
parent f699697857
commit 5c9a866551
4 changed files with 28 additions and 26 deletions

View file

@ -15,8 +15,8 @@ let
*/
graalvm11-ce-release-version = "22.0.0.2";
graalvm17-ce-release-version = "22.0.0.2";
graalvm11-ce-dev-version = "22.2.0-dev-20220401_1942";
graalvm17-ce-dev-version = "22.2.0-dev-20220401_1942";
graalvm11-ce-dev-version = "22.2.0-dev-20220415_1945";
graalvm17-ce-dev-version = "22.2.0-dev-20220415_1945";
products = [
"graalvm-ce"

View file

@ -1,12 +1,12 @@
{
"darwin-aarch64": {
"graalvm-ce|java11|22.2.0-dev-20220414_2112": {
"sha256": "7d1d39a7cc2579112e745943fa5b557405b501f5c3c3fde441f9a31c7627d18d",
"url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220414_2112/graalvm-ce-java11-darwin-aarch64-dev.tar.gz"
"graalvm-ce|java11|22.2.0-dev-20220415_1945": {
"sha256": "ab81b00177124d746a3871b6e48ce7611e93dd3b4f6dee45d77300ef214fbab8",
"url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220415_1945/graalvm-ce-java11-darwin-aarch64-dev.tar.gz"
},
"native-image-installable-svm|java11|22.2.0-dev-20220414_2112": {
"sha256": "5ec82588bf493c38656ca7c31fff276342ce1cbadee41309ae7a3486f56f7ba7",
"url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220414_2112/native-image-installable-svm-java11-darwin-aarch64-dev.jar"
"native-image-installable-svm|java11|22.2.0-dev-20220415_1945": {
"sha256": "9d3753736fe71f55f3fb3bcbdf43271dd96dda0c4b731d11f3f890d5bddf3bbb",
"url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220415_1945/native-image-installable-svm-java11-darwin-aarch64-dev.jar"
}
},
"darwin-amd64": {

View file

@ -1,7 +1,9 @@
{ javaVersion
{ config
, defaultVersion
, javaVersion
, platforms
, config
, forceUpdate ? false
, sourcesPath ? ./. + "/graalvm${javaVersion}-ce-sources.json"
, useMusl ? false
}:
@ -32,10 +34,11 @@
, gtkSupport ? stdenv.isLinux
, cairo
, glib
, gtk3
, writeShellScript
, jq
# updateScript deps
, gnused
, gtk3
, jq
, writeShellScript
}:
assert useMusl -> stdenv.isLinux;
@ -44,8 +47,7 @@ let
platform = config.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
version = platform.version or defaultVersion;
name = "graalvm${javaVersion}-ce";
sourcesFilename = "${name}-sources.json";
sources = builtins.fromJSON (builtins.readFile (./. + "/${sourcesFilename}"));
sources = builtins.fromJSON (builtins.readFile sourcesPath);
runtimeLibraryPath = lib.makeLibraryPath
([ cups ] ++ lib.optionals gtkSupport [ cairo glib gtk3 ]);
@ -285,7 +287,7 @@ let
inherit (platform) products;
home = graalvmXXX-ce;
updateScript = import ./update.nix {
inherit lib writeShellScript jq sourcesFilename name config gnused defaultVersion;
inherit config defaultVersion forceUpdate gnused jq lib name sourcesPath writeShellScript;
graalVersion = version;
javaVersion = "java${javaVersion}";
};

View file

@ -1,14 +1,14 @@
{ javaVersion
, graalVersion
{ config
, defaultVersion
, config
, sourcesFilename
, name
, lib
, writeShellScript
, jq
, forceUpdate
, gnused
, forceUpdate ? false
, graalVersion
, javaVersion
, jq
, lib
, name
, sourcesPath
, writeShellScript
}:
/*
@ -185,7 +185,7 @@ let
newVersion = getLatestVersion graalVersion;
sourcesJson = genSources javaVersion defaultVersion config;
sourcesJsonPath = lib.strings.escapeShellArg ./. + "/${sourcesFilename}";
sourcesJsonPath = lib.strings.escapeShellArg sourcesPath;
# versionKeyInDefaultNix String -> String
versionKeyInDefaultNix = graalVersion: