From a98e9f4892660c164b910461dad1abd734382736 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 26 Mar 2024 14:11:31 +0000 Subject: [PATCH 1/3] buildGraalvm: fix native-image warnings in installCheckPhase --- .../graalvm/community-edition/buildGraalvm.nix | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix index 858d7443ff62..99e1a053769d 100644 --- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix +++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix @@ -165,33 +165,27 @@ let echo "Testing GraalVM" $out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World' - # Workaround GraalVM issue where the builder does not have access to the - # environment variables since 21.0.0 - # Only needed for native-image tests - # https://github.com/oracle/graal/pull/6095 - # https://github.com/oracle/graal/pull/6095 - # https://github.com/oracle/graal/issues/7502 - export NATIVE_IMAGE_DEPRECATED_BUILDER_SANITATION="true"; + extraNativeImageArgs="$(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n)" echo "Ahead-Of-Time compilation" - $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces HelloWorld + $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces -march=compatibility $extraNativeImageArgs HelloWorld ./helloworld | fgrep 'Hello World' ${# --static is only available in Linux lib.optionalString (stdenv.isLinux && !useMusl) '' echo "Ahead-Of-Time compilation with -H:+StaticExecutableWithDynamicLibC" - $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:+StaticExecutableWithDynamicLibC HelloWorld + $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:+StaticExecutableWithDynamicLibC -march=compatibility $extraNativeImageArgs HelloWorld ./helloworld | fgrep 'Hello World' echo "Ahead-Of-Time compilation with --static" - $out/bin/native-image --static HelloWorld + $out/bin/native-image $extraNativeImageArgs -march=compatibility --static HelloWorld ./helloworld | fgrep 'Hello World' ''} ${# --static is only available in Linux lib.optionalString (stdenv.isLinux && useMusl) '' echo "Ahead-Of-Time compilation with --static and --libc=musl" - $out/bin/native-image --static HelloWorld --libc=musl + $out/bin/native-image $extraNativeImageArgs -march=compatibility --libc=musl --static HelloWorld ./helloworld | fgrep 'Hello World' ''} From 2fea2459368625067a730446fbd97f2ea8744042 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 26 Mar 2024 14:12:31 +0000 Subject: [PATCH 2/3] buildGraalvm: use macOS SDK 11 Fix x86_64-darwin builds. --- .../graalvm/community-edition/buildGraalvm.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix index 99e1a053769d..0e899a0a17d5 100644 --- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix +++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix @@ -51,7 +51,13 @@ let "meta" ]; - cLibs = lib.optionals stdenv.isLinux ( + stdenv' = + if stdenv.isDarwin then + darwin.apple_sdk_11_0.stdenv + else + stdenv; + + cLibs = lib.optionals stdenv'.isLinux ( [ glibc zlib.static ] ++ lib.optionals (!useMusl) [ glibc.static ] ++ lib.optionals useMusl [ musl ] @@ -61,14 +67,14 @@ let # GraalVM 21.3.0+ expects musl-gcc as -musl-gcc musl-gcc = (runCommandCC "musl-gcc" { } '' mkdir -p $out/bin - ln -s ${lib.getDev musl}/bin/musl-gcc $out/bin/${stdenv.hostPlatform.system}-musl-gcc + ln -s ${lib.getDev musl}/bin/musl-gcc $out/bin/${stdenv'.hostPlatform.system}-musl-gcc ''); - binPath = lib.makeBinPath (lib.optionals useMusl [ musl-gcc ] ++ [ stdenv.cc ]); + binPath = lib.makeBinPath (lib.optionals useMusl [ musl-gcc ] ++ [ stdenv'.cc ]); runtimeLibraryPath = lib.makeLibraryPath ([ cups ] ++ lib.optionals gtkSupport [ cairo glib gtk3 ]); - graalvm-ce = stdenv.mkDerivation ({ + graalvm-ce = stdenv'.mkDerivation ({ pname = "graalvm-ce"; unpackPhase = '' @@ -107,7 +113,7 @@ let ++ lib.optional stdenv.isLinux autoPatchelfHook; propagatedBuildInputs = [ setJavaClassPath zlib ] - ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Foundation; + ++ lib.optional stdenv.isDarwin darwin.apple_sdk_11_0.frameworks.Foundation; buildInputs = lib.optionals stdenv.isLinux [ alsa-lib # libasound.so wanted by lib/libjsound.so From e1a7ec5583b2c1b5fef89153ee0727d1f4d61904 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 26 Mar 2024 14:56:08 +0000 Subject: [PATCH 3/3] graalvm-ce: make it a scope --- .../community-edition/buildGraalvm.nix | 14 +++------ .../graalvm/community-edition/default.nix | 29 +++++++++++-------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix index 0e899a0a17d5..34ed06e1de12 100644 --- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix +++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix @@ -51,13 +51,7 @@ let "meta" ]; - stdenv' = - if stdenv.isDarwin then - darwin.apple_sdk_11_0.stdenv - else - stdenv; - - cLibs = lib.optionals stdenv'.isLinux ( + cLibs = lib.optionals stdenv.isLinux ( [ glibc zlib.static ] ++ lib.optionals (!useMusl) [ glibc.static ] ++ lib.optionals useMusl [ musl ] @@ -67,14 +61,14 @@ let # GraalVM 21.3.0+ expects musl-gcc as -musl-gcc musl-gcc = (runCommandCC "musl-gcc" { } '' mkdir -p $out/bin - ln -s ${lib.getDev musl}/bin/musl-gcc $out/bin/${stdenv'.hostPlatform.system}-musl-gcc + ln -s ${lib.getDev musl}/bin/musl-gcc $out/bin/${stdenv.hostPlatform.system}-musl-gcc ''); - binPath = lib.makeBinPath (lib.optionals useMusl [ musl-gcc ] ++ [ stdenv'.cc ]); + binPath = lib.makeBinPath (lib.optionals useMusl [ musl-gcc ] ++ [ stdenv.cc ]); runtimeLibraryPath = lib.makeLibraryPath ([ cups ] ++ lib.optionals gtkSupport [ cairo glib gtk3 ]); - graalvm-ce = stdenv'.mkDerivation ({ + graalvm-ce = stdenv.mkDerivation ({ pname = "graalvm-ce"; unpackPhase = '' diff --git a/pkgs/development/compilers/graalvm/community-edition/default.nix b/pkgs/development/compilers/graalvm/community-edition/default.nix index a29a81783c9c..bfc9c729689c 100644 --- a/pkgs/development/compilers/graalvm/community-edition/default.nix +++ b/pkgs/development/compilers/graalvm/community-edition/default.nix @@ -1,23 +1,28 @@ { lib -, stdenv -, callPackage -, fetchurl +, pkgs }: +lib.makeScope pkgs.newScope (self: { - buildGraalvm = callPackage ./buildGraalvm.nix; + stdenv = + if pkgs.stdenv.isDarwin then + pkgs.darwin.apple_sdk_11_0.stdenv + else + pkgs.stdenv; - buildGraalvmProduct = callPackage ./buildGraalvmProduct.nix; + buildGraalvm = self.callPackage ./buildGraalvm.nix; - graalvm-ce = callPackage ./graalvm-ce { }; + buildGraalvmProduct = self.callPackage ./buildGraalvmProduct.nix; - graalvm-ce-musl = callPackage ./graalvm-ce { useMusl = true; }; + graalvm-ce = self.callPackage ./graalvm-ce { }; - graaljs = callPackage ./graaljs { }; + graalvm-ce-musl = self.callPackage ./graalvm-ce { useMusl = true; }; - graalnodejs = callPackage ./graalnodejs { }; + graaljs = self.callPackage ./graaljs { }; - graalpy = callPackage ./graalpy { }; + graalnodejs = self.callPackage ./graalnodejs { }; - truffleruby = callPackage ./truffleruby { }; -} + graalpy = self.callPackage ./graalpy { }; + + truffleruby = self.callPackage ./truffleruby { }; +})