From 1415e30830e9fae776cbd08a4934a4cdc66e1a02 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 11:56:37 -0300 Subject: [PATCH 1/9] buildGraalvmNativeImage: init For now it only takes care of the single Jar <-> single Executable case. This will take care of the majority (all?) use cases we have in nixpkgs currently. --- .../build-graalvm-native-image/default.nix | 53 +++++++++++++++++++ .../tools/misc/clojure-lsp/default.nix | 41 ++++---------- pkgs/top-level/all-packages.nix | 1 + 3 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 pkgs/build-support/build-graalvm-native-image/default.nix diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix new file mode 100644 index 000000000000..d6c07f0d69d7 --- /dev/null +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv, graalvmCEPackages, glibcLocales }: + +{ name ? "${args.pname}-${args.version}" + # Final executable name +, executable + # JAR used as input for GraalVM derivation, defaults to src +, jar ? args.src +, dontUnpack ? (jar == args.src) + # Extra arguments to be passed to the native-image +, extraNativeImageBuildArgs ? [ ] + # XMX size of GraalVM during build +, graalvmXmx ? "-J-Xmx6g" + # The GraalVM to use +, graalvm ? graalvmCEPackages.graalvm11-ce +, ... +} @ args: + +stdenv.mkDerivation (args // { + inherit dontUnpack; + + nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ graalvm glibcLocales ]; + + nativeImageBuildArgs = lib.flatten ([ + "-jar" + jar + "-H:CLibraryPath=${lib.getLib graalvm}/lib" + "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" + "-H:Name=${executable}" + extraNativeImageBuildArgs + graalvmXmx + ]); + + buildPhase = args.buildPhase or '' + runHook preBuild + + native-image ''${nativeImageBuildArgs[@]} + + runHook postBuild + ''; + + installPhase = args.installPhase or '' + runHook preInstall + + install -Dm755 ${executable} -t $out/bin + + runHook postInstall + ''; + + meta = { + platforms = lib.attrByPath [ "meta" "platforms" ] graalvm.meta.platforms args; + mainProgram = lib.attrByPath [ "meta" "mainProgram" ] executable args; + }; +}) diff --git a/pkgs/development/tools/misc/clojure-lsp/default.nix b/pkgs/development/tools/misc/clojure-lsp/default.nix index 9128b3f190e1..66166e469a80 100644 --- a/pkgs/development/tools/misc/clojure-lsp/default.nix +++ b/pkgs/development/tools/misc/clojure-lsp/default.nix @@ -1,6 +1,6 @@ -{ lib, stdenv, graalvm11-ce, babashka, fetchurl, fetchFromGitHub, clojure, writeScript }: +{ lib, stdenv, buildGraalvmNativeImage, graalvm11-ce, babashka, fetchurl, fetchFromGitHub, clojure, writeScript }: -stdenv.mkDerivation rec { +buildGraalvmNativeImage rec { pname = "clojure-lsp"; version = "2021.11.02-15.24.47"; @@ -16,39 +16,17 @@ stdenv.mkDerivation rec { sha256 = "sha256-k0mzibcLAspklCPE6f2qsUm9bwSvcJRgWecMBq7mpF0="; }; - GRAALVM_HOME = graalvm11-ce; - CLOJURE_LSP_JAR = jar; - CLOJURE_LSP_XMX = "-J-Xmx6g"; - - buildInputs = [ graalvm11-ce clojure ]; - - buildPhase = with lib; '' - runHook preBuild + extraNativeImageBuildArgs = [ + "-H:CLibraryPath=$DTLV_LIB_EXTRACT_DIR" + "--verbose" + "--no-fallback" + "--native-image-info" + ]; + preBuild = '' # https://github.com/clojure-lsp/clojure-lsp/blob/2021.11.02-15.24.47/graalvm/native-unix-compile.sh#L18-L27 DTLV_LIB_EXTRACT_DIR=$(mktemp -d) export DTLV_LIB_EXTRACT_DIR=$DTLV_LIB_EXTRACT_DIR - - args=("-jar" "$CLOJURE_LSP_JAR" - "-H:+ReportExceptionStackTraces" - "-H:CLibraryPath=${graalvm11-ce.lib}/lib" - "-H:CLibraryPath=$DTLV_LIB_EXTRACT_DIR" - "--verbose" - "--no-fallback" - "--native-image-info" - "$CLOJURE_LSP_XMX") - - native-image ''${args[@]} - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - install -Dm755 ./clojure-lsp $out/bin/clojure-lsp - - runHook postInstall ''; doCheck = true; @@ -88,7 +66,6 @@ stdenv.mkDerivation rec { homepage = "https://github.com/clojure-lsp/clojure-lsp"; license = licenses.mit; maintainers = with maintainers; [ ericdallo babariviere ]; - platforms = graalvm11-ce.meta.platforms; # Depends on datalevin that is x86_64 only # https://github.com/juji-io/datalevin/blob/bb7d9328f4739cddea5d272b5cd6d6dcb5345da6/native/src/java/datalevin/ni/Lib.java#L86-L102 broken = !stdenv.isx86_64; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f8681ff3a5c5..dccbf729fc27 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12344,6 +12344,7 @@ with pkgs; }); graalvm11-ce = graalvmCEPackages.graalvm11-ce; graalvm17-ce = graalvmCEPackages.graalvm17-ce; + buildGraalvmNativeImage = callPackage ../build-support/build-graalvm-native-image { }; inherit (callPackages ../development/compilers/graalvm/enterprise-edition.nix { }) graalvm8-ee From 052fb6a228ea1c573aec957b95a804ba70e41527 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 11:58:32 -0300 Subject: [PATCH 2/9] babashka: use buildGraalvmNativeImage --- .../interpreters/clojure/babashka.nix | 53 ++++--------------- 1 file changed, 9 insertions(+), 44 deletions(-) diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix index 85daec0d2ac9..acd7eccaadfd 100644 --- a/pkgs/development/interpreters/clojure/babashka.nix +++ b/pkgs/development/interpreters/clojure/babashka.nix @@ -1,6 +1,6 @@ -{ lib, stdenv, fetchurl, graalvm11-ce, glibcLocales, writeScript }: +{ lib, buildGraalvmNativeImage, fetchurl, writeScript }: -stdenv.mkDerivation rec { +buildGraalvmNativeImage rec { pname = "babashka"; version = "0.6.5"; @@ -9,48 +9,14 @@ stdenv.mkDerivation rec { sha256 = "sha256-72D/HzDIxkGD4zTPE9gHf/uFtboLbNnT7CTslSlAqjc="; }; - dontUnpack = true; + executable = "bb"; - nativeBuildInputs = [ graalvm11-ce glibcLocales ]; - - LC_ALL = "en_US.UTF-8"; - BABASHKA_JAR = src; - BABASHKA_BINARY = "bb"; - BABASHKA_XMX = "-J-Xmx4500m"; - - buildPhase = '' - runHook preBuild - - # https://github.com/babashka/babashka/blob/v0.6.2/script/compile#L41-L52 - args=("-jar" "$BABASHKA_JAR" - "-H:CLibraryPath=${graalvm11-ce.lib}/lib" - # Required to build babashka on darwin. Do not remove. - "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" - "-H:Name=$BABASHKA_BINARY" - "-H:+ReportExceptionStackTraces" - # "-H:+PrintAnalysisCallTree" - # "-H:+DashboardAll" - # "-H:DashboardDump=reports/dump" - # "-H:+DashboardPretty" - # "-H:+DashboardJson" - "--verbose" - "--no-fallback" - "--native-image-info" - "$BABASHKA_XMX") - - native-image ''${args[@]} - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out/bin - cp bb $out/bin/bb - - runHook postInstall - ''; + extraNativeImageBuildArgs = [ + "-H:+ReportExceptionStackTraces" + "--verbose" + "--no-fallback" + "--native-image-info" + ]; installCheckPhase = '' $out/bin/bb --version | grep '${version}' @@ -102,7 +68,6 @@ stdenv.mkDerivation rec { homepage = "https://github.com/babashka/babashka"; changelog = "https://github.com/babashka/babashka/blob/v${version}/CHANGELOG.md"; license = licenses.epl10; - platforms = graalvm11-ce.meta.platforms; maintainers = with maintainers; [ bandresen bhougland From 7c632551c1f5e6430779f03e45ce0d0296e54442 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 12:26:19 -0300 Subject: [PATCH 3/9] clojure-lsp: use buildGraalvmNativeImage --- .../tools/misc/clojure-lsp/default.nix | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pkgs/development/tools/misc/clojure-lsp/default.nix b/pkgs/development/tools/misc/clojure-lsp/default.nix index 66166e469a80..c36f1695702d 100644 --- a/pkgs/development/tools/misc/clojure-lsp/default.nix +++ b/pkgs/development/tools/misc/clojure-lsp/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, buildGraalvmNativeImage, graalvm11-ce, babashka, fetchurl, fetchFromGitHub, clojure, writeScript }: +{ lib, stdenv, buildGraalvmNativeImage, babashka, fetchurl, fetchFromGitHub, clojure, writeScript }: buildGraalvmNativeImage rec { pname = "clojure-lsp"; @@ -16,26 +16,25 @@ buildGraalvmNativeImage rec { sha256 = "sha256-k0mzibcLAspklCPE6f2qsUm9bwSvcJRgWecMBq7mpF0="; }; + executable = "clojure-lsp"; + + # https://github.com/clojure-lsp/clojure-lsp/blob/2021.11.02-15.24.47/graalvm/native-unix-compile.sh#L18-L27 + DTLV_LIB_EXTRACT_DIR = "/tmp"; + extraNativeImageBuildArgs = [ - "-H:CLibraryPath=$DTLV_LIB_EXTRACT_DIR" + "-H:CLibraryPath=${DTLV_LIB_EXTRACT_DIR}" "--verbose" "--no-fallback" "--native-image-info" ]; - preBuild = '' - # https://github.com/clojure-lsp/clojure-lsp/blob/2021.11.02-15.24.47/graalvm/native-unix-compile.sh#L18-L27 - DTLV_LIB_EXTRACT_DIR=$(mktemp -d) - export DTLV_LIB_EXTRACT_DIR=$DTLV_LIB_EXTRACT_DIR - ''; - doCheck = true; checkPhase = '' runHook preCheck export HOME="$(mktemp -d)" - ./clojure-lsp --version | fgrep -q '${version}' - ${babashka}/bin/bb integration-test ./clojure-lsp + ./${executable} --version | fgrep -q '${version}' + ${babashka}/bin/bb integration-test ./${executable} runHook postCheck ''; From a277e9d457925d917f1288d3cef16665d423320e Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 12:31:56 -0300 Subject: [PATCH 4/9] clj-kondo: use buildGraalvmNativeImage --- pkgs/development/tools/clj-kondo/default.nix | 36 +++++--------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/pkgs/development/tools/clj-kondo/default.nix b/pkgs/development/tools/clj-kondo/default.nix index 97f41b0c8a7e..efb97513a300 100644 --- a/pkgs/development/tools/clj-kondo/default.nix +++ b/pkgs/development/tools/clj-kondo/default.nix @@ -1,6 +1,6 @@ -{ stdenv, lib, graalvm11-ce, fetchurl }: +{ lib, buildGraalvmNativeImage, fetchurl }: -stdenv.mkDerivation rec { +buildGraalvmNativeImage rec { pname = "clj-kondo"; version = "2021.10.19"; @@ -9,38 +9,18 @@ stdenv.mkDerivation rec { sha256 = "sha256-i0OeQPZfQPUeXC/Bs84I91IahBKK6W1mFix97s8/lVA="; }; - dontUnpack = true; + executable = "clj-kondo"; - buildInputs = [ graalvm11-ce ]; - - buildPhase = '' - runHook preBuild - - # https://github.com/clj-kondo/clj-kondo/blob/v2021.10.19/script/compile#L17-L21 - args=("-jar" "$src" - "-H:CLibraryPath=${graalvm11-ce.lib}/lib" - # Required to build babashka on darwin. Do not remove. - "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" - "-H:+ReportExceptionStackTraces" - "--verbose" - "--no-fallback" - "-J-Xmx3g") - - native-image ''${args[@]} - - runHook postBuild - ''; - - installPhase = '' - mkdir -p $out/bin - cp clj-kondo $out/bin/clj-kondo - ''; + extraNativeImageBuildArgs = [ + "-H:+ReportExceptionStackTraces" + "--verbose" + "--no-fallback" + ]; meta = with lib; { description = "A linter for Clojure code that sparks joy"; homepage = "https://github.com/clj-kondo/clj-kondo"; license = licenses.epl10; - platforms = graalvm11-ce.meta.platforms; maintainers = with maintainers; [ jlesquembre bandresen thiagokokada ]; }; } From 3100248dbb4b47c5b4f9fbc836feab46bed87e37 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 12:34:30 -0300 Subject: [PATCH 5/9] jet: use buildGraalvmNativeImage --- pkgs/development/tools/jet/default.nix | 51 ++++++++------------------ 1 file changed, 15 insertions(+), 36 deletions(-) diff --git a/pkgs/development/tools/jet/default.nix b/pkgs/development/tools/jet/default.nix index 9ba85cb8fc4f..07855f8eabe5 100644 --- a/pkgs/development/tools/jet/default.nix +++ b/pkgs/development/tools/jet/default.nix @@ -1,6 +1,6 @@ -{ stdenv, lib, graalvm11-ce, fetchurl }: +{ lib, buildGraalvmNativeImage, fetchurl }: -stdenv.mkDerivation rec { +buildGraalvmNativeImage rec { pname = "jet"; version = "0.1.0"; @@ -14,46 +14,25 @@ stdenv.mkDerivation rec { sha256 = "sha256-mOUiKEM5tYhtpBpm7KtslyPYFsJ+Wr+4ul6Zi4aS09Q="; }; - dontUnpack = true; + executable = "jet"; - buildInputs = [ graalvm11-ce ]; - - buildPhase = '' - runHook preBuild - - # https://github.com/borkdude/jet/blob/v0.1.0/script/compile#L16-L29 - args=("-jar" "$src" - "-H:CLibraryPath=${graalvm11-ce.lib}/lib" - # Required to build jet on darwin. Do not remove. - "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" - "-H:Name=jet" - "-H:+ReportExceptionStackTraces" - "-J-Dclojure.spec.skip-macros=true" - "-J-Dclojure.compiler.direct-linking=true" - "-H:IncludeResources=JET_VERSION" - "-H:ReflectionConfigurationFiles=${reflectionJson}" - "--initialize-at-build-time" - "-H:Log=registerResource:" - "--verbose" - "--no-fallback" - "--no-server" - "-J-Xmx3g") - - native-image ''${args[@]} - - runHook postBuild - ''; - - installPhase = '' - mkdir -p $out/bin - cp jet $out/bin/jet - ''; + extraNativeImageBuildArgs = [ + "-H:+ReportExceptionStackTraces" + "-J-Dclojure.spec.skip-macros=true" + "-J-Dclojure.compiler.direct-linking=true" + "-H:IncludeResources=JET_VERSION" + "-H:ReflectionConfigurationFiles=${reflectionJson}" + "--initialize-at-build-time" + "-H:Log=registerResource:" + "--verbose" + "--no-fallback" + "--no-server" + ]; meta = with lib; { description = "CLI to transform between JSON, EDN and Transit, powered with a minimal query language"; homepage = "https://github.com/borkdude/jet"; license = licenses.epl10; - platforms = graalvm11-ce.meta.platforms; maintainers = with maintainers; [ ericdallo ]; }; } From d352856ea2148e4ec1de2b5769dfcf79c1356d99 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 12:35:55 -0300 Subject: [PATCH 6/9] buildGraalvmNativeImage: default executable to pname --- pkgs/build-support/build-graalvm-native-image/default.nix | 2 +- pkgs/development/tools/clj-kondo/default.nix | 2 -- pkgs/development/tools/jet/default.nix | 2 -- pkgs/development/tools/misc/clojure-lsp/default.nix | 6 ++---- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix index d6c07f0d69d7..082787498e49 100644 --- a/pkgs/build-support/build-graalvm-native-image/default.nix +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -2,7 +2,7 @@ { name ? "${args.pname}-${args.version}" # Final executable name -, executable +, executable ? args.pname # JAR used as input for GraalVM derivation, defaults to src , jar ? args.src , dontUnpack ? (jar == args.src) diff --git a/pkgs/development/tools/clj-kondo/default.nix b/pkgs/development/tools/clj-kondo/default.nix index efb97513a300..22a4582c5bb7 100644 --- a/pkgs/development/tools/clj-kondo/default.nix +++ b/pkgs/development/tools/clj-kondo/default.nix @@ -9,8 +9,6 @@ buildGraalvmNativeImage rec { sha256 = "sha256-i0OeQPZfQPUeXC/Bs84I91IahBKK6W1mFix97s8/lVA="; }; - executable = "clj-kondo"; - extraNativeImageBuildArgs = [ "-H:+ReportExceptionStackTraces" "--verbose" diff --git a/pkgs/development/tools/jet/default.nix b/pkgs/development/tools/jet/default.nix index 07855f8eabe5..9713a736cd3c 100644 --- a/pkgs/development/tools/jet/default.nix +++ b/pkgs/development/tools/jet/default.nix @@ -14,8 +14,6 @@ buildGraalvmNativeImage rec { sha256 = "sha256-mOUiKEM5tYhtpBpm7KtslyPYFsJ+Wr+4ul6Zi4aS09Q="; }; - executable = "jet"; - extraNativeImageBuildArgs = [ "-H:+ReportExceptionStackTraces" "-J-Dclojure.spec.skip-macros=true" diff --git a/pkgs/development/tools/misc/clojure-lsp/default.nix b/pkgs/development/tools/misc/clojure-lsp/default.nix index c36f1695702d..5dd0f4a9e290 100644 --- a/pkgs/development/tools/misc/clojure-lsp/default.nix +++ b/pkgs/development/tools/misc/clojure-lsp/default.nix @@ -16,8 +16,6 @@ buildGraalvmNativeImage rec { sha256 = "sha256-k0mzibcLAspklCPE6f2qsUm9bwSvcJRgWecMBq7mpF0="; }; - executable = "clojure-lsp"; - # https://github.com/clojure-lsp/clojure-lsp/blob/2021.11.02-15.24.47/graalvm/native-unix-compile.sh#L18-L27 DTLV_LIB_EXTRACT_DIR = "/tmp"; @@ -33,8 +31,8 @@ buildGraalvmNativeImage rec { runHook preCheck export HOME="$(mktemp -d)" - ./${executable} --version | fgrep -q '${version}' - ${babashka}/bin/bb integration-test ./${executable} + ./${pname} --version | fgrep -q '${version}' + ${babashka}/bin/bb integration-test ./${pname} runHook postCheck ''; From e9766a85bdf15c525bdcb5b16040608ff7b9233f Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 12:45:57 -0300 Subject: [PATCH 7/9] zprint: use buildGraalvmNativeImage --- pkgs/development/tools/zprint/default.nix | 41 ++++++----------------- 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/pkgs/development/tools/zprint/default.nix b/pkgs/development/tools/zprint/default.nix index f00d9c29a482..f69c2b223a92 100644 --- a/pkgs/development/tools/zprint/default.nix +++ b/pkgs/development/tools/zprint/default.nix @@ -1,40 +1,22 @@ -{ stdenv, lib, fetchurl, graalvm11-ce, glibcLocales }: +{ lib, buildGraalvmNativeImage, fetchurl }: -stdenv.mkDerivation rec { +buildGraalvmNativeImage rec { pname = "zprint"; version = "1.1.2"; src = fetchurl { - url = - "https://github.com/kkinnear/${pname}/releases/download/${version}/${pname}-filter-${version}"; + url = "https://github.com/kkinnear/${pname}/releases/download/${version}/${pname}-filter-${version}"; sha256 = "1wh8jyj7alfa6h0cycfwffki83wqb5d5x0p7kvgdkhl7jx7isrwj"; }; - dontUnpack = true; - - LC_ALL = "en_US.UTF-8"; - nativeBuildInputs = [ graalvm11-ce glibcLocales ]; - - buildPhase = '' - native-image \ - --no-server \ - -J-Xmx7G \ - -J-Xms4G \ - -jar ${src} \ - -H:Name=${pname} \ - -H:EnableURLProtocols=https,http \ - -H:+ReportExceptionStackTraces \ - -H:CLibraryPath=${graalvm11-ce.lib}/lib \ - ${lib.optionalString stdenv.isDarwin ''-H:-CheckToolchain''} \ - --report-unsupported-elements-at-runtime \ - --initialize-at-build-time \ - --no-fallback - ''; - - installPhase = '' - mkdir -p $out/bin - install ${pname} $out/bin - ''; + extraNativeImageBuildArgs = [ + "--no-server" + "-H:EnableURLProtocols=https,http" + "-H:+ReportExceptionStackTraces" + "--report-unsupported-elements-at-runtime" + "--initialize-at-build-time" + "--no-fallback" + ]; meta = with lib; { description = "Clojure/EDN source code formatter and pretty printer"; @@ -45,7 +27,6 @@ stdenv.mkDerivation rec { ''; homepage = "https://github.com/kkinnear/zprint"; license = licenses.mit; - platforms = graalvm11-ce.meta.platforms; maintainers = with maintainers; [ stelcodes ]; }; } From f1c16183c8c7c78a3f372251e9af0f465d0bb355 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 13:32:17 -0300 Subject: [PATCH 8/9] buildGraalvmNativeImage: fix meta, add --verbose flag --- pkgs/build-support/build-graalvm-native-image/default.nix | 7 +++---- pkgs/development/interpreters/clojure/babashka.nix | 1 - pkgs/development/tools/clj-kondo/default.nix | 1 - pkgs/development/tools/jet/default.nix | 1 - pkgs/development/tools/misc/clojure-lsp/default.nix | 1 - 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix index 082787498e49..d85a5c457744 100644 --- a/pkgs/build-support/build-graalvm-native-image/default.nix +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -26,6 +26,7 @@ stdenv.mkDerivation (args // { "-H:CLibraryPath=${lib.getLib graalvm}/lib" "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" "-H:Name=${executable}" + "--verbose" extraNativeImageBuildArgs graalvmXmx ]); @@ -46,8 +47,6 @@ stdenv.mkDerivation (args // { runHook postInstall ''; - meta = { - platforms = lib.attrByPath [ "meta" "platforms" ] graalvm.meta.platforms args; - mainProgram = lib.attrByPath [ "meta" "mainProgram" ] executable args; - }; + meta.platforms = lib.attrByPath [ "meta" "platforms" ] graalvm.meta.platforms args; + meta.mainProgram = lib.attrByPath [ "meta" "mainProgram" ] executable args; }) diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix index acd7eccaadfd..5e7731b69039 100644 --- a/pkgs/development/interpreters/clojure/babashka.nix +++ b/pkgs/development/interpreters/clojure/babashka.nix @@ -13,7 +13,6 @@ buildGraalvmNativeImage rec { extraNativeImageBuildArgs = [ "-H:+ReportExceptionStackTraces" - "--verbose" "--no-fallback" "--native-image-info" ]; diff --git a/pkgs/development/tools/clj-kondo/default.nix b/pkgs/development/tools/clj-kondo/default.nix index 22a4582c5bb7..df6a5e0f90ef 100644 --- a/pkgs/development/tools/clj-kondo/default.nix +++ b/pkgs/development/tools/clj-kondo/default.nix @@ -11,7 +11,6 @@ buildGraalvmNativeImage rec { extraNativeImageBuildArgs = [ "-H:+ReportExceptionStackTraces" - "--verbose" "--no-fallback" ]; diff --git a/pkgs/development/tools/jet/default.nix b/pkgs/development/tools/jet/default.nix index 9713a736cd3c..6e140620adc9 100644 --- a/pkgs/development/tools/jet/default.nix +++ b/pkgs/development/tools/jet/default.nix @@ -22,7 +22,6 @@ buildGraalvmNativeImage rec { "-H:ReflectionConfigurationFiles=${reflectionJson}" "--initialize-at-build-time" "-H:Log=registerResource:" - "--verbose" "--no-fallback" "--no-server" ]; diff --git a/pkgs/development/tools/misc/clojure-lsp/default.nix b/pkgs/development/tools/misc/clojure-lsp/default.nix index 5dd0f4a9e290..5e3c750852df 100644 --- a/pkgs/development/tools/misc/clojure-lsp/default.nix +++ b/pkgs/development/tools/misc/clojure-lsp/default.nix @@ -21,7 +21,6 @@ buildGraalvmNativeImage rec { extraNativeImageBuildArgs = [ "-H:CLibraryPath=${DTLV_LIB_EXTRACT_DIR}" - "--verbose" "--no-fallback" "--native-image-info" ]; From a5c0f59bf732419674e15bed4188a6c0e881116e Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Tue, 23 Nov 2021 17:36:57 -0300 Subject: [PATCH 9/9] buildGraalvmNativeImage: allow nativeImageBuildArgs to be overwritten --- .../build-graalvm-native-image/default.nix | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/build-support/build-graalvm-native-image/default.nix b/pkgs/build-support/build-graalvm-native-image/default.nix index d85a5c457744..0ed8ea0486b6 100644 --- a/pkgs/build-support/build-graalvm-native-image/default.nix +++ b/pkgs/build-support/build-graalvm-native-image/default.nix @@ -6,6 +6,15 @@ # JAR used as input for GraalVM derivation, defaults to src , jar ? args.src , dontUnpack ? (jar == args.src) + # Default native-image arguments. You probably don't want to set this, + # except in special cases. In most cases, use extraNativeBuildArgs instead +, nativeImageBuildArgs ? [ + "-jar" jar + "-H:CLibraryPath=${lib.getLib graalvm}/lib" + (lib.optionalString stdenv.isDarwin "-H:-CheckToolchain") + "-H:Name=${executable}" + "--verbose" + ] # Extra arguments to be passed to the native-image , extraNativeImageBuildArgs ? [ ] # XMX size of GraalVM during build @@ -20,16 +29,7 @@ stdenv.mkDerivation (args // { nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ graalvm glibcLocales ]; - nativeImageBuildArgs = lib.flatten ([ - "-jar" - jar - "-H:CLibraryPath=${lib.getLib graalvm}/lib" - "${lib.optionalString stdenv.isDarwin "-H:-CheckToolchain"}" - "-H:Name=${executable}" - "--verbose" - extraNativeImageBuildArgs - graalvmXmx - ]); + nativeImageBuildArgs = nativeImageBuildArgs ++ extraNativeImageBuildArgs ++ [ graalvmXmx ]; buildPhase = args.buildPhase or '' runHook preBuild