From 399ed1f1bda0546f4fbd73cd5c4d1dc0acc51fb1 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 15 Apr 2022 20:08:43 +0100 Subject: [PATCH] graalvmXX-ce: remove Ruby/Python/WASM support Those additional languages does not seem to really have much usage (e.g.: none in nixpkgs). For example, Ruby is pretty much broken for all environments for quite sometime already, however nobody seemed to border enough to fix it. They also add a good amount of size to the derivation. So let's remove them. It should be really easy if someone still cares for them and want to add them back on their own system: just use the `mkGraal` function (that we export) to generate their own version of GraalVM with all extra features they want. --- .../graalvm/community-edition/default.nix | 24 +++----- .../graalvm11-ce-sources.json | 44 ++----------- .../graalvm17-ce-sources.json | 36 ++--------- .../graalvm/community-edition/mkGraal.nix | 61 +++++++++---------- .../graalvm/community-edition/update.nix | 3 +- 5 files changed, 52 insertions(+), 116 deletions(-) diff --git a/pkgs/development/compilers/graalvm/community-edition/default.nix b/pkgs/development/compilers/graalvm/community-edition/default.nix index 6f42bfcc4539..b4448cda9c39 100644 --- a/pkgs/development/compilers/graalvm/community-edition/default.nix +++ b/pkgs/development/compilers/graalvm/community-edition/default.nix @@ -18,11 +18,9 @@ let graalvm11-ce-dev-version = "22.2.0-dev-20220401_1942"; graalvm17-ce-dev-version = "22.2.0-dev-20220401_1942"; - commonProducts = [ + products = [ "graalvm-ce" "native-image-installable-svm" - "ruby-installable-svm" - "wasm-installable-svm" ]; in @@ -32,24 +30,21 @@ in graalvm11-ce = mkGraal rec { config = { x86_64-darwin = { + inherit products; arch = "darwin-amd64"; - products = commonProducts ++ [ "python-installable-svm" ]; }; x86_64-linux = { + inherit products; arch = "linux-amd64"; - products = commonProducts ++ [ "python-installable-svm" ]; }; aarch64-darwin = { + inherit products; arch = "darwin-aarch64"; - products = [ - "graalvm-ce" - "native-image-installable-svm" - ]; version = graalvm11-ce-dev-version; }; aarch64-linux = { + inherit products; arch = "linux-aarch64"; - products = commonProducts; }; }; defaultVersion = graalvm11-ce-release-version; @@ -65,19 +60,16 @@ in graalvm17-ce = mkGraal rec { config = { x86_64-darwin = { + inherit products; arch = "darwin-amd64"; - products = commonProducts ++ [ "python-installable-svm" ]; }; x86_64-linux = { + inherit products; arch = "linux-amd64"; - products = commonProducts ++ [ "python-installable-svm" ]; }; aarch64-darwin = { + inherit products; arch = "darwin-aarch64"; - products = [ - "graalvm-ce" - "native-image-installable-svm" - ]; version = graalvm17-ce-dev-version; }; }; diff --git a/pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json b/pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json index 070c783d0336..e3d514d58b9d 100644 --- a/pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json +++ b/pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json @@ -1,12 +1,12 @@ { "darwin-aarch64": { - "graalvm-ce|java11|22.2.0-dev-20220401_1942": { - "sha256": "c83dee740ae148486598759e44a717b09d8124e4ea50f9da1e7d49d016572b89", - "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220401_1942/graalvm-ce-java11-darwin-aarch64-dev.tar.gz" + "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" }, - "native-image-installable-svm|java11|22.2.0-dev-20220401_1942": { - "sha256": "661311ae26bfd6c46360b9e65aabe9361dc5cd05878a404343adf16925ae78fa", - "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220401_1942/native-image-installable-svm-java11-darwin-aarch64-dev.jar" + "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" } }, "darwin-amd64": { @@ -17,18 +17,6 @@ "native-image-installable-svm|java11|22.0.0.2": { "sha256": "03c27de6cce61ee8073e89252212457f3fbac2c0bc9bfa4acbff12176476c176", "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/native-image-installable-svm-java11-darwin-amd64-22.0.0.2.jar" - }, - "python-installable-svm|java11|22.0.0.2": { - "sha256": "67ee2f1cc10b0189e359344c31b22f423e636ff4ec2dd7d9437c3eb0ef54e601", - "url": "https://github.com/graalvm/graalpython/releases/download/vm-22.0.0.2/python-installable-svm-java11-darwin-amd64-22.0.0.2.jar" - }, - "ruby-installable-svm|java11|22.0.0.2": { - "sha256": "a25c0099a21ca1ca9904dd3acdeef509f67a13b96c6135b6de199e9805330df9", - "url": "https://github.com/oracle/truffleruby/releases/download/vm-22.0.0.2/ruby-installable-svm-java11-darwin-amd64-22.0.0.2.jar" - }, - "wasm-installable-svm|java11|22.0.0.2": { - "sha256": "d74c210a8a87b8eb0c4d18a65fde6f2c03ebc94d9bf7ed87bbb9cacc460006d7", - "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/wasm-installable-svm-java11-darwin-amd64-22.0.0.2.jar" } }, "linux-aarch64": { @@ -39,14 +27,6 @@ "native-image-installable-svm|java11|22.0.0.2": { "sha256": "51d41e890a5aabf8e7b9d4f4e0f88206ee70a261f7dbb0315d51770ab8f3009e", "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/native-image-installable-svm-java11-linux-aarch64-22.0.0.2.jar" - }, - "ruby-installable-svm|java11|22.0.0.2": { - "sha256": "e0fb582a9c6b4167e7dc267c58ca1968bd1c471b3bc5c56061b436f175486d80", - "url": "https://github.com/oracle/truffleruby/releases/download/vm-22.0.0.2/ruby-installable-svm-java11-linux-aarch64-22.0.0.2.jar" - }, - "wasm-installable-svm|java11|22.0.0.2": { - "sha256": "a48470ae391c75cb2805b7fe27cde2c925c0466fdbc0623dfbb67c54f19dbf8c", - "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/wasm-installable-svm-java11-linux-aarch64-22.0.0.2.jar" } }, "linux-amd64": { @@ -57,18 +37,6 @@ "native-image-installable-svm|java11|22.0.0.2": { "sha256": "8504a3441f5b28b8fd625f676674a9216f082ae63a4e30d43930c80f9672e71d", "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/native-image-installable-svm-java11-linux-amd64-22.0.0.2.jar" - }, - "python-installable-svm|java11|22.0.0.2": { - "sha256": "2f01d1bbc2ed2c507952d8ceaab1cb2176fc67e2d8c4b3bf5864e8d930c60c55", - "url": "https://github.com/graalvm/graalpython/releases/download/vm-22.0.0.2/python-installable-svm-java11-linux-amd64-22.0.0.2.jar" - }, - "ruby-installable-svm|java11|22.0.0.2": { - "sha256": "e90f7ebc13b6c1f8e3f98881bb4fe2336870744174b2b6d41dc672d15f0b9a40", - "url": "https://github.com/oracle/truffleruby/releases/download/vm-22.0.0.2/ruby-installable-svm-java11-linux-amd64-22.0.0.2.jar" - }, - "wasm-installable-svm|java11|22.0.0.2": { - "sha256": "c0fdfc40374b70f6f1597dd21660535c813dc5c3948c8a6ea9559a20f4d3fb5e", - "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/wasm-installable-svm-java11-linux-amd64-22.0.0.2.jar" } } } diff --git a/pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json b/pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json index 65e28b8b11cc..861f5e454e27 100644 --- a/pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json +++ b/pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json @@ -1,12 +1,12 @@ { "darwin-aarch64": { - "graalvm-ce|java17|22.2.0-dev-20220401_1942": { - "sha256": "f0409c59adbce62da7be46ab7d0e01abe5c080ef97d0b555e6c773f94dbfdecf", - "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220401_1942/graalvm-ce-java17-darwin-aarch64-dev.tar.gz" + "graalvm-ce|java17|22.2.0-dev-20220414_2112": { + "sha256": "1ae8991d95814945d33cf8758a1e7072c48660680d1d90ec5629671e25f99344", + "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220414_2112/graalvm-ce-java17-darwin-aarch64-dev.tar.gz" }, - "native-image-installable-svm|java17|22.2.0-dev-20220401_1942": { - "sha256": "3770dc4810d7ebae8f9ca2212e91112629096a964d3caea1667b0aaf5f70c1e0", - "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220401_1942/native-image-installable-svm-java17-darwin-aarch64-dev.jar" + "native-image-installable-svm|java17|22.2.0-dev-20220414_2112": { + "sha256": "8a35491ea5487e755c087072fc827d81ec37a23075dcb29850e6f6cd5ff9630f", + "url": "https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/22.2.0-dev-20220414_2112/native-image-installable-svm-java17-darwin-aarch64-dev.jar" } }, "darwin-amd64": { @@ -17,18 +17,6 @@ "native-image-installable-svm|java17|22.0.0.2": { "sha256": "007fa742cd139d447f83d776b6d78e717c9df11d56a61061a5937547c20028b7", "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/native-image-installable-svm-java17-darwin-amd64-22.0.0.2.jar" - }, - "python-installable-svm|java17|22.0.0.2": { - "sha256": "af887b0304d5ec98fab1be2cd1fca2aa3b10e84e823142a7f274560b1e0ea7c1", - "url": "https://github.com/graalvm/graalpython/releases/download/vm-22.0.0.2/python-installable-svm-java17-darwin-amd64-22.0.0.2.jar" - }, - "ruby-installable-svm|java17|22.0.0.2": { - "sha256": "fc5eb6f833136ae3fda61f46fe0af66a8454ca2f803ca35eaff7336521cb468d", - "url": "https://github.com/oracle/truffleruby/releases/download/vm-22.0.0.2/ruby-installable-svm-java17-darwin-amd64-22.0.0.2.jar" - }, - "wasm-installable-svm|java17|22.0.0.2": { - "sha256": "b76e6d872ce07ca9facd5b997dbb6e557ba72aa369ddd5f1664431bd11b98796", - "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/wasm-installable-svm-java17-darwin-amd64-22.0.0.2.jar" } }, "linux-amd64": { @@ -39,18 +27,6 @@ "native-image-installable-svm|java17|22.0.0.2": { "sha256": "8c25f650d58c2649c97061cb806dfaec9e685d5d2b80afc7cf72fe61d6891831", "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/native-image-installable-svm-java17-linux-amd64-22.0.0.2.jar" - }, - "python-installable-svm|java17|22.0.0.2": { - "sha256": "b3b78a15bd29b4eaaf0f2607e21181ca2a5b41b38ba43a3ff2656c2f6effda8a", - "url": "https://github.com/graalvm/graalpython/releases/download/vm-22.0.0.2/python-installable-svm-java17-linux-amd64-22.0.0.2.jar" - }, - "ruby-installable-svm|java17|22.0.0.2": { - "sha256": "d86c9ad50cbed980fa69d69b2eccd47d31880d8c55553483f59ce9eda15628bd", - "url": "https://github.com/oracle/truffleruby/releases/download/vm-22.0.0.2/ruby-installable-svm-java17-linux-amd64-22.0.0.2.jar" - }, - "wasm-installable-svm|java17|22.0.0.2": { - "sha256": "7f7e51e4a24384b3dd960c12ab9b05b1fea58a0457d6b80e3797228fab93c0bd", - "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/wasm-installable-svm-java17-linux-amd64-22.0.0.2.jar" } } } diff --git a/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix b/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix index 5b20890ced1b..9758ca020671 100644 --- a/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix +++ b/pkgs/development/compilers/graalvm/community-edition/mkGraal.nix @@ -59,6 +59,11 @@ let (writeShellScriptBin "${stdenv.system}-musl-gcc" ''${lib.getDev musl}/bin/musl-gcc "$@"'') ]); + withNativeImageSvm = builtins.any (p: p == "native-image-installable-svm") platform.products; + withRubySvm = builtins.any (p: p == "ruby-installable-svm") platform.products; + withPythonSvm = builtins.any (p: p == "python-installable-svm") platform.products; + withWasmSvm = builtins.any (p: p == "wasm-installable-svm") platform.products; + graalvmXXX-ce = stdenv.mkDerivation rec { inherit version; pname = name; @@ -69,7 +74,6 @@ let alsa-lib # libasound.so wanted by lib/libjsound.so fontconfig freetype - openssl # libssl.so wanted by languages/ruby/lib/mri/openssl.so stdenv.cc.cc.lib # libstdc++.so.6 xorg.libX11 xorg.libXext @@ -77,6 +81,8 @@ let xorg.libXrender xorg.libXtst zlib + ] ++ lib.optionals withRubySvm [ + openssl # libssl.so wanted by languages/ruby/lib/mri/openssl.so ]; nativeBuildInputs = [ unzip perl makeWrapper ] @@ -172,7 +178,7 @@ let # Workaround for libssl.so.10 wanted by TruffleRuby # Resulting TruffleRuby cannot use `openssl` library. - autoPatchelfIgnoreMissingDeps = stdenv.isDarwin; + autoPatchelfIgnoreMissingDeps = withRubySvm && stdenv.isDarwin; preFixup = lib.optionalString (stdenv.isLinux) '' # We cannot use -exec since wrapProgram is a function but not a @@ -191,10 +197,14 @@ let find "$out" -name libfontmanager.so -exec \ patchelf --add-needed libfontconfig.so {} \; - # Workaround for libssl.so.10/libcrypto.so.10 wanted by TruffleRuby - patchelf $out/languages/ruby/lib/mri/openssl.so \ - --replace-needed libssl.so.10 libssl.so \ - --replace-needed libcrypto.so.10 libcrypto.so + ${ + lib.optionalString withRubySvm '' + # Workaround for libssl.so.10/libcrypto.so.10 wanted by TruffleRuby + patchelf $out/languages/ruby/lib/mri/openssl.so \ + --replace-needed libssl.so.10 libssl.so \ + --replace-needed libcrypto.so.10 libcrypto.so + '' + } ''; # $out/bin/native-image needs zlib to build native executables. @@ -222,7 +232,7 @@ let $out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World' ${# --static flag doesn't work for darwin - lib.optionalString (stdenv.isLinux && !useMusl) '' + lib.optionalString (withNativeImageSvm && stdenv.isLinux && !useMusl) '' echo "Ahead-Of-Time compilation" $out/bin/native-image -H:-CheckToolchain -H:+ReportExceptionStackTraces --no-server HelloWorld ./helloworld | fgrep 'Hello World' @@ -234,49 +244,38 @@ let } ${# --static flag doesn't work for darwin - lib.optionalString (stdenv.isLinux && useMusl) '' + lib.optionalString (withNativeImageSvm && stdenv.isLinux && useMusl) '' echo "Ahead-Of-Time compilation with --static and --libc=musl" $out/bin/native-image --no-server --libc=musl --static HelloWorld ./helloworld | fgrep 'Hello World' '' } - ${# TODO: Doesn't work on MacOS, we have this error: - # "Launching JShell execution engine threw: Operation not permitted (Bind failed)" - lib.optionalString (stdenv.isLinux) '' + ${ + lib.optionalString withWasmSvm '' echo "Testing Jshell" echo '1 + 1' | $out/bin/jshell '' } ${ - lib.optionalString (builtins.any (a: a == "python-installable-svm") platform.products) '' + lib.optionalString withPythonSvm '' echo "Testing GraalPython" $out/bin/graalpython -c 'print(1 + 1)' echo '1 + 1' | $out/bin/graalpython '' } - echo "Testing TruffleRuby" ${ - lib.optionalString (builtins.any (a: a == "ruby-installable-svm") platform.products) '' - # Hide warnings about wrong locale - export LANG=C - export LC_ALL=C - $out/bin/ruby -e 'puts(1 + 1)' - '' - } - ${# FIXME: irb is broken in all platforms - # TODO: `irb` on MacOS gives an error saying "Could not find OpenSSL - # headers, install via Homebrew or MacPorts or set OPENSSL_PREFIX", even - # though `openssl` is in `propagatedBuildInputs`. For more details see: - # https://github.com/NixOS/nixpkgs/pull/105815 - # TODO: "truffleruby: an internal exception escaped out of the interpreter" - # error on linux-aarch64 - # TODO: "core/kernel.rb:234:in `gem_original_require': - # /nix/store/wlc5xalzj2ip1l83siqw8ac5fjd52ngm-graalvm11-ce/languages/llvm/native/lib: - # cannot read file data: Is a directory (RuntimeError)" error on linux-amd64 - lib.optionalString false '' + lib.optionalString withRubySvm '' + echo "Testing TruffleRuby" + # Hide warnings about wrong locale + export LANG=C + export LC_ALL=C + $out/bin/ruby -e 'puts(1 + 1)' + '' + # FIXME: irb is broken in all platforms + + lib.optionalString false '' echo '1 + 1' | $out/bin/irb '' } diff --git a/pkgs/development/compilers/graalvm/community-edition/update.nix b/pkgs/development/compilers/graalvm/community-edition/update.nix index 191f3cb45a15..6201ab100177 100644 --- a/pkgs/development/compilers/graalvm/community-edition/update.nix +++ b/pkgs/development/compilers/graalvm/community-edition/update.nix @@ -8,6 +8,7 @@ , writeShellScript , jq , gnused +, forceUpdate ? false }: /* @@ -199,7 +200,7 @@ let */ updateScriptText = newVersion: currentVersion: - if isNew newVersion currentVersion + if (forceUpdate || (isNew newVersion currentVersion)) then let versionKey = versionKeyInDefaultNix currentVersion;