about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh')
-rwxr-xr-xnixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh81
1 files changed, 81 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh b/nixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh
new file mode 100755
index 000000000000..c821c83a59c8
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/graalvm/community-edition/update.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -p coreutils curl nix jq gnused -i bash
+
+set -eou pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+info() { echo "[INFO] $*"; }
+
+echo_file() { echo "$@" >> hashes.nix; }
+
+verlte() {
+    [  "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
+}
+
+readonly nixpkgs=../../../../..
+
+readonly old_version="$(nix-instantiate "$nixpkgs" --eval --strict -A graalvm11-ce.version)"
+
+if [[ -z "${1:-}" ]]; then
+  readonly gh_version="$(curl \
+      ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} \
+      -s https://api.github.com/repos/graalvm/graalvm-ce-builds/releases/latest | \
+      jq --raw-output .tag_name)"
+  readonly new_version="${gh_version//vm-/}"
+else
+  readonly new_version="$1"
+fi
+
+if verlte "$old_version" "$new_version"; then
+  info "graalvm-ce $old_version is up-to-date."
+  [[ -z "${FORCE:-}" ]]  && exit 0
+else
+  info "graalvm-ce $old_version is out-of-date. Updating..."
+fi
+
+readonly urls=(
+  "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/graalvm-ce-java@platform@-${new_version}.tar.gz"
+  "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/native-image-installable-svm-java@platform@-${new_version}.jar"
+  "https://github.com/oracle/truffleruby/releases/download/vm-${new_version}/ruby-installable-svm-java@platform@-${new_version}.jar"
+  "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${new_version}/wasm-installable-svm-java@platform@-${new_version}.jar"
+  "https://github.com/graalvm/graalpython/releases/download/vm-${new_version}/python-installable-svm-java@platform@-${new_version}.jar"
+)
+
+readonly platforms=(
+  "11-linux-aarch64"
+  "17-linux-aarch64"
+  "11-linux-amd64"
+  "17-linux-amd64"
+  "11-darwin-amd64"
+  "17-darwin-amd64"
+)
+
+info "Deleting old hashes.nix file..."
+rm -f hashes.nix
+info "Generating hashes.nix file for 'graalvm-ce' $new_version. This will take a while..."
+
+echo_file "# Generated by $0 script"
+echo_file "{ javaVersionPlatform, ... }:"
+echo_file "["
+
+for url in "${urls[@]}"; do
+  echo_file "  {"
+  echo_file "    sha256 = {"
+  for platform in "${platforms[@]}"; do
+    if hash="$(nix-prefetch-url "${url//@platform@/$platform}")"; then
+      echo_file "      \"$platform\" = \"$hash\";"
+    fi
+  done
+  echo_file '    }.${javaVersionPlatform} or null;'
+  echo_file "    url = \"${url//@platform@/\$\{javaVersionPlatform\}}\";"
+  echo_file "  }"
+done
+
+echo_file "]"
+
+info "Updating graalvm-ce version..."
+# update-source-version does not work here since it expects src attribute
+sed "s|$old_version|\"$new_version\"|" -i default.nix
+
+info "Done!"