Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add definition for truffleruby+graalvm GFTC dev build #35

Merged
merged 2 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions rubies/truffleruby+graalvm-gftc-dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
sort_release_urls () {
# With release names like /^(jdk-)?24.1.0-dev-20240207_2228$/
# strip everything up to the last dash so we can use the date as the sort field.
sed 's/\(.\{1,\}-\([0-9_]\{1,\}\)\)$/\2;\1/' | sort -rn | sed 's/.\{1,\};//'
}

find_asset_url () {
local repo="$1" filename="$2"
local releases_prefix="https://github.com/${repo}/releases"
local assets_urls assets_url path
local sort_release_urls=sort_release_urls
type -t $sort_release_urls >/dev/null || sort_release_urls=cat

# The releases page hides assets behind an "expanded_assets" url
# so we gather those, sort them according to "sort_release_urls" and store
# them in an array to loop over next.
IFS=$'\n' read -d '' -r -a assets_urls < <(http get "$releases_prefix" - | grep -oE "$releases_prefix/expanded_assets/[^\"]+" | $sort_release_urls)

# For each release look in the assets output for a download link to the specified filename.
for assets_url in "${assets_urls[@]}"; do
path="$(http get "$assets_url" - | grep -m1 -oE "/$repo/releases/download/[^/]+/$filename")"
if [[ -n "$path" ]]; then
echo "https://github.com/$path"
return 0
fi
done

echo "Failed to find $repo release containing $filename" >&2
return 1
}

truffleruby_asset_url () {
find_asset_url "graalvm/oracle-graalvm-dev-builds" "$1"
}

platform="$(uname -s)-$(uname -m)"
case $platform in
Linux-x86_64)
truffleruby_url="$(truffleruby_asset_url "truffleruby-jvm-dev-linux-amd64.tar.gz")" || return $?
install_package "truffleruby+graalvm-gftc-dev" "$truffleruby_url" truffleruby
;;
Linux-aarch64)
truffleruby_url="$(truffleruby_asset_url "truffleruby-jvm-dev-linux-aarch64.tar.gz")" || return $?
install_package "truffleruby+graalvm-gftc-dev" "$truffleruby_url" truffleruby
;;
Darwin-x86_64)
truffleruby_url="$(truffleruby_asset_url "truffleruby-jvm-dev-macos-amd64.tar.gz")" || return $?
install_package "truffleruby+graalvm-gftc-dev" "$truffleruby_url" truffleruby
;;
Darwin-arm64)
truffleruby_url="$(truffleruby_asset_url "truffleruby-jvm-dev-macos-aarch64.tar.gz")" || return $?
install_package "truffleruby+graalvm-gftc-dev" "$truffleruby_url" truffleruby
;;
*)
colorize 1 "Unsupported platform: $platform"
return 1
;;
esac
47 changes: 43 additions & 4 deletions rubies/truffleruby-gftc-dev
Original file line number Diff line number Diff line change
@@ -1,16 +1,55 @@
sort_release_urls () {
# With release names like /^(jdk-)?24.1.0-dev-20240207_2228$/
# strip everything up to the last dash so we can use the date as the sort field.
sed 's/\(.\{1,\}-\([0-9_]\{1,\}\)\)$/\2;\1/' | sort -rn | sed 's/.\{1,\};//'
}

find_asset_url () {
local repo="$1" filename="$2"
local releases_prefix="https://github.com/${repo}/releases"
local assets_urls assets_url path
local sort_release_urls=sort_release_urls
type -t $sort_release_urls >/dev/null || sort_release_urls=cat

# The releases page hides assets behind an "expanded_assets" url
# so we gather those, sort them according to "sort_release_urls" and store
# them in an array to loop over next.
IFS=$'\n' read -d '' -r -a assets_urls < <(http get "$releases_prefix" - | grep -oE "$releases_prefix/expanded_assets/[^\"]+" | $sort_release_urls)

# For each release look in the assets output for a download link to the specified filename.
for assets_url in "${assets_urls[@]}"; do
path="$(http get "$assets_url" - | grep -m1 -oE "/$repo/releases/download/[^/]+/$filename")"
if [[ -n "$path" ]]; then
echo "https://github.com/$path"
return 0
fi
done

echo "Failed to find $repo release containing $filename" >&2
return 1
}

truffleruby_asset_url () {
find_asset_url "graalvm/oracle-graalvm-dev-builds" "$1"
}

platform="$(uname -s)-$(uname -m)"
case $platform in
Linux-x86_64)
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-linux-amd64.tar.gz" truffleruby
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-amd64.tar.gz")" || return $?
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
;;
Linux-aarch64)
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-linux-aarch64.tar.gz" truffleruby
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-aarch64.tar.gz")" || return $?
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
;;
Darwin-x86_64)
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-macos-amd64.tar.gz" truffleruby
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-amd64.tar.gz")" || return $?
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
;;
Darwin-arm64)
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-macos-aarch64.tar.gz" truffleruby
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-aarch64.tar.gz")" || return $?
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
;;
*)
colorize 1 "Unsupported platform: $platform"
Expand Down
2 changes: 1 addition & 1 deletion test/shopify_ruby_definitions/test_ruby_versions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def test_ALL_VERSIONS
end

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

Expand Down
Loading