about summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorThiago Kenji Okada <thiagokokada@gmail.com>2023-02-16 02:17:27 +0000
committerGitHub <noreply@github.com>2023-02-16 02:17:27 +0000
commitec32e05671159cb36996bf629ed7f83a0218393a (patch)
treee2c5e929f59a5b989b715bc724c742dd77c4c9f3 /pkgs/development/compilers
parent3cbd6d52ada5c5cc1627ed811a6bc8a7818d0119 (diff)
parentcc7ec82f3cd89afdf4fb55dad0603cf00ae4bd0c (diff)
Merge pull request #216532 from thiagokokada/add-nodejs-to-graalvm-ce
graalvmCEPackages.nodejs-installable-svm: init at 22.3.1
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix3
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/buildGraalvmProduct.nix11
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/default.nix38
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/hashes.nix34
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/js-installable-svm.nix1
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/llvm-installable-svm.nix4
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/nodejs-installable-svm.nix21
-rw-r--r--pkgs/development/compilers/graalvm/community-edition/ruby-installable-svm.nix3
-rwxr-xr-xpkgs/development/compilers/graalvm/community-edition/update.sh19
9 files changed, 114 insertions, 20 deletions
diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix
index 2a77029d136e3..a3236c14a084f 100644
--- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix
@@ -120,8 +120,7 @@ let
     '' + concatProducts "postInstall";
 
     preFixup = lib.optionalString (stdenv.isLinux) ''
-      # Find all executables in any directory that contains '/bin/'
-      for bin in $(find "$out" -executable -type f -wholename '*/bin/*'); do
+      for bin in $(find "$out/bin" -executable -type f); do
         wrapProgram "$bin" --prefix LD_LIBRARY_PATH : "${runtimeLibraryPath}"
       done
     '' + concatProducts "preFixup";
diff --git a/pkgs/development/compilers/graalvm/community-edition/buildGraalvmProduct.nix b/pkgs/development/compilers/graalvm/community-edition/buildGraalvmProduct.nix
index aad60e13d308c..6037435d3aec4 100644
--- a/pkgs/development/compilers/graalvm/community-edition/buildGraalvmProduct.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/buildGraalvmProduct.nix
@@ -74,6 +74,17 @@ stdenv.mkDerivation ({
     runHook postUnpack
   '';
 
+  # Allow autoPatchelf to automatically fix lib references between products
+  fixupPhase = ''
+    runHook preFixup
+
+    mkdir -p $out/lib
+    shopt -s globstar
+    ln -s $out/languages/**/lib/*.so $out/lib
+
+    runHook postFixup
+  '';
+
   dontInstall = true;
   dontBuild = true;
   dontStrip = true;
diff --git a/pkgs/development/compilers/graalvm/community-edition/default.nix b/pkgs/development/compilers/graalvm/community-edition/default.nix
index 9eafd12b97e9a..a0d57b75faa2e 100644
--- a/pkgs/development/compilers/graalvm/community-edition/default.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/default.nix
@@ -22,20 +22,28 @@ in
 rec {
   inherit buildGraalvm buildGraalvmProduct;
 
-  graalvm11-ce = buildGraalvm rec {
+  ### Java 11 ###
+
+  # Mostly available for build purposes, not to be exposed at the top level
+  graalvm11-ce-bare = buildGraalvm rec {
     version = "22.3.1";
     javaVersion = "11";
     src = fetchurl (source "graalvm-ce" javaVersion);
     meta.platforms = builtins.attrNames javaPlatform;
+    products = [ ];
+  };
+
+  graalvm11-ce = graalvm11-ce-bare.override {
     products = [ native-image-installable-svm-java11 ];
   };
 
   # Mostly available for testing, not to be exposed at the top level
-  graalvm11-ce-full = graalvm11-ce.override {
+  graalvm11-ce-full = graalvm11-ce-bare.override {
     products = [
       js-installable-svm-java11
       llvm-installable-svm-java11
       native-image-installable-svm-java11
+      nodejs-installable-svm-java11
       python-installable-svm-java11
       ruby-installable-svm-java11
       wasm-installable-svm-java11
@@ -60,6 +68,13 @@ rec {
     src = fetchurl (source "native-image-installable-svm" javaVersion);
   };
 
+  nodejs-installable-svm-java11 = callPackage ./nodejs-installable-svm.nix rec {
+    javaVersion = "11";
+    version = "22.3.1";
+    src = fetchurl (source "nodejs-installable-svm" javaVersion);
+    graalvm-ce = graalvm11-ce-bare;
+  };
+
   python-installable-svm-java11 = callPackage ./python-installable-svm.nix rec {
     javaVersion = "11";
     version = "22.3.1";
@@ -79,20 +94,28 @@ rec {
     src = fetchurl (source "wasm-installable-svm" javaVersion);
   };
 
-  graalvm17-ce = buildGraalvm rec {
+  ### Java 17 ###
+
+  # Mostly available for build purposes, not to be exposed at the top level
+  graalvm17-ce-bare = buildGraalvm rec {
     version = "22.3.1";
     javaVersion = "17";
     src = fetchurl (source "graalvm-ce" javaVersion);
     meta.platforms = builtins.attrNames javaPlatform;
+    products = [ ];
+  };
+
+  graalvm17-ce = graalvm17-ce-bare.override {
     products = [ native-image-installable-svm-java17 ];
   };
 
   # Mostly available for testing, not to be exposed at the top level
-  graalvm17-ce-full = graalvm17-ce.override {
+  graalvm17-ce-full = graalvm17-ce-bare.override {
     products = [
       js-installable-svm-java17
       llvm-installable-svm-java17
       native-image-installable-svm-java17
+      nodejs-installable-svm-java17
       python-installable-svm-java17
       ruby-installable-svm-java17
       wasm-installable-svm-java17
@@ -117,6 +140,13 @@ rec {
     src = fetchurl (source "native-image-installable-svm" javaVersion);
   };
 
+  nodejs-installable-svm-java17 = callPackage ./nodejs-installable-svm.nix rec {
+    javaVersion = "17";
+    version = "22.3.1";
+    src = fetchurl (source "nodejs-installable-svm" javaVersion);
+    graalvm-ce = graalvm17-ce-bare;
+  };
+
   python-installable-svm-java17 = callPackage ./python-installable-svm.nix rec {
     javaVersion = "17";
     version = "22.3.1";
diff --git a/pkgs/development/compilers/graalvm/community-edition/hashes.nix b/pkgs/development/compilers/graalvm/community-edition/hashes.nix
index c67702db82b95..eb2f455abbe59 100644
--- a/pkgs/development/compilers/graalvm/community-edition/hashes.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/hashes.nix
@@ -34,6 +34,40 @@
       url = "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.1/llvm-installable-svm-java17-darwin-amd64-22.3.1.jar";
     };
   };
+  "nodejs-installable-svm" = {
+    "11-linux-aarch64" = {
+      sha256 = "0slzvbmxwa4a6m9c0hbdp8ryh9crfq7mv6y2j4hik5m457jq98cp";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java11-linux-aarch64-22.3.1.jar";
+    };
+    "17-linux-aarch64" = {
+      sha256 = "1ldivy5hmq2mxmzh40hglzngylahnzyqh9rav73nicl5mz8hk4l2";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java17-linux-aarch64-22.3.1.jar";
+    };
+    "11-linux-amd64" = {
+      sha256 = "1p1y52b4lky2fbkml5vqy7dn9vqzj19jq5f3c90mgsfk4c7xhi66";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java11-linux-amd64-22.3.1.jar";
+    };
+    "17-linux-amd64" = {
+      sha256 = "0j1gkpszklzm069bccm6wgq8iq0k41bcrca0kf8pbl2y11hwywpc";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java17-linux-amd64-22.3.1.jar";
+    };
+    "11-darwin-aarch64" = {
+      sha256 = "1fbqc3a7i91as1sbwg2yr1zx0wz4jsaxcz9pfqy8a0z88m8vivbs";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java11-darwin-aarch64-22.3.1.jar";
+    };
+    "17-darwin-aarch64" = {
+      sha256 = "1swzkp0imcv30fxfwblgad57fvpsvhfpv93s8zj1lwrbarggl2y3";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java17-darwin-aarch64-22.3.1.jar";
+    };
+    "11-darwin-amd64" = {
+      sha256 = "0n3hm8dd0ya86hxbxv07sfp22y02vhhzahkxk2j2162n9hcdmkwk";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java11-darwin-amd64-22.3.1.jar";
+    };
+    "17-darwin-amd64" = {
+      sha256 = "0xkjqcch22bm32mczj6xs8rzsl2n6vy9hmzwfy9a71w1kpkbjn3a";
+      url = "https://github.com/graalvm/graaljs/releases/download/vm-22.3.1/nodejs-installable-svm-java17-darwin-amd64-22.3.1.jar";
+    };
+  };
   "wasm-installable-svm" = {
     "11-linux-aarch64" = {
       sha256 = "1d67jm41psypkhpy77cb2l00smhni3pgkybwx79z7dzcyid7p2l1";
diff --git a/pkgs/development/compilers/graalvm/community-edition/js-installable-svm.nix b/pkgs/development/compilers/graalvm/community-edition/js-installable-svm.nix
index 0ab20c0e1dfe6..45cf50e90feef 100644
--- a/pkgs/development/compilers/graalvm/community-edition/js-installable-svm.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/js-installable-svm.nix
@@ -1,6 +1,5 @@
 { lib
 , stdenv
-, graalvm-ce
 , graalvmCEPackages
 , javaVersion
 , src
diff --git a/pkgs/development/compilers/graalvm/community-edition/llvm-installable-svm.nix b/pkgs/development/compilers/graalvm/community-edition/llvm-installable-svm.nix
index 96b9ee9635a5a..9fc8fb3db95ed 100644
--- a/pkgs/development/compilers/graalvm/community-edition/llvm-installable-svm.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/llvm-installable-svm.nix
@@ -10,10 +10,6 @@ graalvmCEPackages.buildGraalvmProduct rec {
   inherit src javaVersion version;
   product = "llvm-installable-svm";
 
-  postUnpack = ''
-    ln -s $out/languages/llvm/native/lib/*.so $out/lib
-  '';
-
   # TODO: improve this test
   graalvmPhases.installCheckPhase = ''
     echo "Testing llvm"
diff --git a/pkgs/development/compilers/graalvm/community-edition/nodejs-installable-svm.nix b/pkgs/development/compilers/graalvm/community-edition/nodejs-installable-svm.nix
new file mode 100644
index 0000000000000..022ac0a44fe18
--- /dev/null
+++ b/pkgs/development/compilers/graalvm/community-edition/nodejs-installable-svm.nix
@@ -0,0 +1,21 @@
+{ lib
+, stdenv
+, graalvmCEPackages
+, graalvm-ce
+, javaVersion
+, src
+, version
+}:
+
+graalvmCEPackages.buildGraalvmProduct rec {
+  inherit src javaVersion version;
+  product = "nodejs-installable-svm";
+
+  extraNativeBuildInputs = [ graalvm-ce ];
+
+  # TODO: improve test
+  graalvmPhases.installCheckPhase = ''
+    echo "Testing NodeJS"
+    $out/bin/npx --help
+  '';
+}
diff --git a/pkgs/development/compilers/graalvm/community-edition/ruby-installable-svm.nix b/pkgs/development/compilers/graalvm/community-edition/ruby-installable-svm.nix
index a5c8f718b2780..30d0739b4b1d7 100644
--- a/pkgs/development/compilers/graalvm/community-edition/ruby-installable-svm.nix
+++ b/pkgs/development/compilers/graalvm/community-edition/ruby-installable-svm.nix
@@ -1,12 +1,11 @@
 { lib
 , stdenv
 , graalvmCEPackages
+, llvm-installable-svm
 , openssl
 , javaVersion
-, musl
 , src
 , version
-, llvm-installable-svm
 }:
 
 graalvmCEPackages.buildGraalvmProduct rec {
diff --git a/pkgs/development/compilers/graalvm/community-edition/update.sh b/pkgs/development/compilers/graalvm/community-edition/update.sh
index fb1036cf88707..6cafb0f0d1186 100755
--- a/pkgs/development/compilers/graalvm/community-edition/update.sh
+++ b/pkgs/development/compilers/graalvm/community-edition/update.sh
@@ -6,6 +6,8 @@ set -eou pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 tmpfile="$(mktemp --suffix=.nix)"
 
+trap 'rm -rf "$tmpfile"' EXIT
+
 info() { echo "[INFO] $*"; }
 
 echo_file() { echo "$@" >> "$tmpfile"; }
@@ -43,6 +45,7 @@ declare -r -A products_urls=(
   [js-installable-svm]="https://github.com/graalvm/graaljs/releases/download/vm-${new_version}/js-installable-svm-java@platform@-${new_version}.jar"
   [llvm-installable-svm]="https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/llvm-installable-svm-java@platform@-${new_version}.jar"
   [native-image-installable-svm]="https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/native-image-installable-svm-java@platform@-${new_version}.jar"
+  [nodejs-installable-svm]="https://github.com/graalvm/graaljs/releases/download/vm-${new_version}/nodejs-installable-svm-java@platform@-${new_version}.jar"
   [python-installable-svm]="https://github.com/graalvm/graalpython/releases/download/vm-${new_version}/python-installable-svm-java@platform@-${new_version}.jar"
   [ruby-installable-svm]="https://github.com/oracle/truffleruby/releases/download/vm-${new_version}/ruby-installable-svm-java@platform@-${new_version}.jar"
   [wasm-installable-svm]="https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/wasm-installable-svm-java@platform@-${new_version}.jar"
@@ -59,7 +62,7 @@ readonly platforms=(
   "17-darwin-amd64"
 )
 
-info "Generating hashes.nix file for 'graalvm-ce' $new_version. This will take a while..."
+info "Generating '$hashes_nix' file for 'graalvm-ce' $new_version. This will take a while..."
 
 # Indentation of `echo_file` function is on purpose to make it easier to visualize the output
 echo_file "# Generated by $0 script"
@@ -68,14 +71,16 @@ for product in "${!products_urls[@]}"; do
   url="${products_urls["${product}"]}"
 echo_file "  \"$product\" = {"
   for platform in "${platforms[@]}"; do
-    # Reuse cache as long the version is the same
-    if [[ "$current_version" == "$new_version" ]]; then
-        previous_hash="$(nix-instantiate --eval "$hashes_nix" -A "$product.$platform.sha256" --json | jq -r || true)"
+    args=("${url//@platform@/$platform}")
+    # Get current hashes to skip derivations already in /nix/store to reuse cache when the version is the same
+    # e.g.: when adding a new product and running this script with FORCE=1
+    if [[ "$current_version" == "$new_version" ]] && \
+        previous_hash="$(nix-instantiate --eval "$hashes_nix" -A "$product.$platform.sha256" --json | jq -r)"; then
+        args+=("$previous_hash" "--type" "sha256")
     else
-        previous_hash=""
+        info "Hash in '$product' for '$platform' not found. Re-downloading it..."
     fi
-    # Lack of quoting in $previous_hash is proposital
-    if hash="$(nix-prefetch-url "${url//@platform@/$platform}" $previous_hash)"; then
+    if hash="$(nix-prefetch-url "${args[@]}")"; then
 echo_file "    \"$platform\" = {"
 echo_file "      sha256 = \"$hash\";"
 echo_file "      url = \"${url//@platform@/${platform}}\";"