|
1 | | -http_get_stdout () { |
2 | | - local f="$(mktemp "ruby-build.http.XXXXXX")" |
3 | | - http get "$1" "$f" |
4 | | - cat "$f" |
5 | | - rm -f "$f" |
6 | | -} |
7 | | - |
8 | | -sort_release_urls () { |
9 | | - # With release names like /^(jdk-)?24.1.0-dev-20240207_2228$/ |
10 | | - # strip everything up to the last dash so we can use the date as the sort field. |
11 | | - sed 's/\(.\{1,\}-\([0-9_]\{1,\}\)\)$/\2;\1/' | sort -rn | sed 's/.\{1,\};//' |
12 | | -} |
13 | | - |
14 | | -find_asset_url () { |
15 | | - local repo="$1" filename="$2" |
16 | | - local releases_prefix="https://github.com/${repo}/releases" |
17 | | - local assets_urls assets_url path |
18 | | - local sort_release_urls=sort_release_urls |
19 | | - type -t $sort_release_urls >/dev/null || sort_release_urls=cat |
20 | | - |
21 | | - # The releases page hides assets behind an "expanded_assets" url |
22 | | - # so we gather those, sort them according to "sort_release_urls" and store |
23 | | - # them in an array to loop over next. |
24 | | - IFS=$'\n' read -d '' -r -a assets_urls < <(http_get_stdout "$releases_prefix" | grep -oE "$releases_prefix/expanded_assets/[^\"]+" | $sort_release_urls) |
25 | | - |
26 | | - # For each release look in the assets output for a download link to the specified filename. |
27 | | - for assets_url in "${assets_urls[@]}"; do |
28 | | - path="$(http_get_stdout "$assets_url" | grep -m1 -oE "/$repo/releases/download/[^/]+/$filename")" |
29 | | - if [[ -n "$path" ]]; then |
30 | | - echo "https://github.com/$path" |
31 | | - return 0 |
32 | | - fi |
33 | | - done |
34 | | - |
35 | | - echo "Failed to find $repo release containing $filename" >&2 |
36 | | - return 1 |
37 | | -} |
38 | | - |
39 | | -truffleruby_asset_url () { |
40 | | - find_asset_url "graalvm/oracle-graalvm-dev-builds" "$1" |
41 | | -} |
42 | | - |
43 | 1 | platform="$(uname -s)-$(uname -m)" |
44 | 2 | case $platform in |
45 | 3 | Linux-x86_64) |
46 | | - truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-amd64.tar.gz")" || return $? |
47 | | - install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby |
| 4 | + url="https://raw.githubusercontent.com/graalvm/graal-languages-ea-builds/main/truffleruby/versions/latest-native-linux-amd64.url" |
48 | 5 | ;; |
49 | 6 | Linux-aarch64) |
50 | | - truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-aarch64.tar.gz")" || return $? |
51 | | - install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby |
| 7 | + url="https://raw.githubusercontent.com/graalvm/graal-languages-ea-builds/main/truffleruby/versions/latest-native-linux-aarch64.url" |
52 | 8 | ;; |
53 | 9 | Darwin-x86_64) |
54 | | - truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-amd64.tar.gz")" || return $? |
55 | | - install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby |
| 10 | + url="https://raw.githubusercontent.com/graalvm/graal-languages-ea-builds/main/truffleruby/versions/latest-native-darwin-amd64.url" |
56 | 11 | ;; |
57 | 12 | Darwin-arm64) |
58 | | - truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-aarch64.tar.gz")" || return $? |
59 | | - install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby |
| 13 | + url="https://raw.githubusercontent.com/graalvm/graal-languages-ea-builds/main/truffleruby/versions/latest-native-darwin-aarch64.url" |
60 | 14 | ;; |
61 | 15 | *) |
62 | 16 | colorize 1 "Unsupported platform: $platform" |
63 | 17 | return 1 |
64 | 18 | ;; |
65 | 19 | esac |
| 20 | + |
| 21 | +pushd "$BUILD_PATH" >/dev/null |
| 22 | +http get $url url.txt |
| 23 | +url=$(<url.txt) |
| 24 | +popd |
| 25 | + |
| 26 | +install_package "truffleruby+graalvm-dev" "$url" truffleruby |
0 commit comments