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"; graalvm11-ce-release-version = "22.0.0.2";
graalvm17-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"; graalvm11-ce-dev-version = "22.2.0-dev-20220415_1945";
graalvm17-ce-dev-version = "22.2.0-dev-20220401_1942"; graalvm17-ce-dev-version = "22.2.0-dev-20220415_1945";
products = [ products = [
"graalvm-ce" "graalvm-ce"

View file

@ -1,12 +1,12 @@
{ {
"darwin-aarch64": { "darwin-aarch64": {
"graalvm-ce|java11|22.2.0-dev-20220414_2112": { "graalvm-ce|java11|22.2.0-dev-20220415_1945": {
"sha256": "7d1d39a7cc2579112e745943fa5b557405b501f5c3c3fde441f9a31c7627d18d", "sha256": "ab81b00177124d746a3871b6e48ce7611e93dd3b4f6dee45d77300ef214fbab8",
"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" "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": { "native-image-installable-svm|java11|22.2.0-dev-20220415_1945": {
"sha256": "5ec82588bf493c38656ca7c31fff276342ce1cbadee41309ae7a3486f56f7ba7", "sha256": "9d3753736fe71f55f3fb3bcbdf43271dd96dda0c4b731d11f3f890d5bddf3bbb",
"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" "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": { "darwin-amd64": {

View file

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

View file

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