diff options
Diffstat (limited to 'pkgs/development/compilers/graalvm/community-edition/update.sh')
-rwxr-xr-x | pkgs/development/compilers/graalvm/community-edition/update.sh | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/pkgs/development/compilers/graalvm/community-edition/update.sh b/pkgs/development/compilers/graalvm/community-edition/update.sh deleted file mode 100755 index 65d36514bcd0..000000000000 --- a/pkgs/development/compilers/graalvm/community-edition/update.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -p coreutils curl.out nix jq gnused -i bash - -# Usage: -# ./update.sh [PRODUCT] -# -# Examples: -# $ ./update.sh graalvm-ce # will generate ./graalvm-ce/hashes.nix -# $ ./update.sh # same as above -# $ ./update.sh graalpy # will generate ./graalpy/hashes.nix -# -# Environment variables: -# FORCE=1 to force the update of a product (e.g.: skip up-to-date checks) -# VERSION=xx.xx will assume that xx.xx is the new version - -set -eou pipefail - -cd "$(dirname "${BASH_SOURCE[0]}")" -tmpfile="$(mktemp --suffix=.nix)" -readonly tmpfile - -trap 'rm -rf "$tmpfile"' EXIT - -info() { echo "[INFO] $*"; } - -echo_file() { echo "$@" >> "$tmpfile"; } - -verlte() { - [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ] -} - -readonly product="${1:-graalvm-ce}" -readonly hashes_nix="$product/hashes.nix" -readonly nixpkgs=../../../../.. - -mkdir -p "$product" - -declare -r -A update_urls=( - [graalvm-ce]="https://api.github.com/repos/graalvm/graalvm-ce-builds/releases/latest" - [graaljs]="https://api.github.com/repos/oracle/graaljs/releases/latest" - [graalnodejs]="https://api.github.com/repos/oracle/graaljs/releases/latest" - [graalpy]="https://api.github.com/repos/oracle/graalpython/releases/latest" - [truffleruby]="https://api.github.com/repos/oracle/truffleruby/releases/latest" -) - -current_version="$(nix-instantiate "$nixpkgs" --eval --strict -A "graalvmCEPackages.${product}.version" --json | jq -r)" -readonly current_version - -if [[ -z "${VERSION:-}" ]]; then - gh_version="$(curl \ - ${GITHUB_TOKEN:+"-u \":$GITHUB_TOKEN\""} \ - -s "${update_urls[$product]}" | \ - jq --raw-output .tag_name)" - new_version="${gh_version//jdk-/}" - new_version="${new_version//graal-/}" -else - new_version="$VERSION" -fi -readonly new_version - -info "Current version: $current_version" -info "New version: $new_version" -if verlte "$new_version" "$current_version"; then - info "$product $current_version is up-to-date." - [[ -z "${FORCE:-}" ]] && exit 0 -else - info "$product $current_version is out-of-date. Updating..." -fi - -# Make sure to get the `-community` versions! -declare -r -A products_urls=( - [graalvm-ce]="https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${new_version}/graalvm-community-jdk-${new_version}_@platform@_bin.tar.gz" - [graaljs]="https://github.com/oracle/graaljs/releases/download/graal-${new_version}/graaljs-community-${new_version}-@platform@.tar.gz" - [graalnodejs]="https://github.com/oracle/graaljs/releases/download/graal-${new_version}/graalnodejs-community-${new_version}-@platform@.tar.gz" - [graalpy]="https://github.com/oracle/graalpython/releases/download/graal-${new_version}/graalpy-community-${new_version}-@platform@.tar.gz" - [truffleruby]="https://github.com/oracle/truffleruby/releases/download/graal-${new_version}/truffleruby-community-${new_version}-@platform@.tar.gz" -) - -# Argh, this is really inconsistent... -if [[ "$product" == "graalvm-ce" ]]; then - declare -r -A platforms=( - [aarch64-linux]="linux-aarch64" - [x86_64-linux]="linux-x64" - [aarch64-darwin]="macos-aarch64" - [x86_64-darwin]="macos-x64" - ) -else - declare -r -A platforms=( - [aarch64-linux]="linux-aarch64" - [x86_64-linux]="linux-amd64" - [aarch64-darwin]="macos-aarch64" - [x86_64-darwin]="macos-amd64" - ) -fi - -info "Generating '$hashes_nix' file for '$product' $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 $(basename $0) script" -echo_file "{" -echo_file " \"version\" = \"$new_version\";" -url="${products_urls["${product}"]}" -echo_file " \"hashes\" = {" -for nix_platform in "${!platforms[@]}"; do - product_platform="${platforms[$nix_platform]}" - args=("${url//@platform@/$product_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 "hashes.$nix_platform.sha256" --json | jq -r)"; then - args+=("$previous_hash" "--type" "sha256") - else - info "Hash in '$product' for '$nix_platform' not found. Re-downloading it..." - fi - if hash="$(nix-prefetch-url "${args[@]}")"; then -echo_file " \"$nix_platform\" = {" -echo_file " sha256 = \"$hash\";" -echo_file " url = \"${url//@platform@/${product_platform}}\";" -echo_file " };" - else - info "Error while downloading '$product' for '$nix_platform'. Skipping it..." - fi -done -echo_file " };" -echo_file "}" - -info "Moving the temporary file to '$hashes_nix'" -mv "$tmpfile" "$hashes_nix" - -info "Done!" |