Skip to content

Commit a0f441c

Browse files
committed
Add definition for truffleruby+graalvm GFTC dev build
Different releases contain different assets so attempt to loop through the releases to find the most recent one with the desired asset.
1 parent e1d8194 commit a0f441c

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

rubies/truffleruby+graalvm-gftc-dev

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

test/shopify_ruby_definitions/test_ruby_versions.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def test_ALL_VERSIONS
1515
end
1616

1717
truffleruby_versions.each do |v|
18-
assert_match(/\Atruffleruby(?:\+graalvm|-gftc)?(\-\d+\.\d+\.\d+|-dev)(?:\-ce)?\z/, v)
18+
assert_match(/\Atruffleruby(?:\+graalvm)?(?:-gftc)?(\-\d+\.\d+\.\d+|-dev)(?:\-ce)?\z/, v)
1919
end
2020
end
2121

0 commit comments

Comments
 (0)