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;