Commit 767a1ccc authored by Benoit Daloze's avatar Benoit Daloze
Browse files

Add support for installing GraalVM

* Supports using other GraalVM languages such as JavaScript, Python, R and Java.
* Supports running TruffleRuby on JVM and not only Native.
* Add GraalVM 20.1.0.
parent 16421762
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -751,6 +751,25 @@ build_package_truffleruby() {
  "${PREFIX_PATH}/lib/truffle/post_install_hook.sh"
}

build_package_graalvm() {
  clean_prefix_path
  build_package_copy_to "${PREFIX_PATH}/graalvm"

  cd "${PREFIX_PATH}/graalvm"
  bin/gu install ruby || return $?

  local ruby_home
  ruby_home=$(bin/ruby -e 'print RbConfig::CONFIG["prefix"]')

  # Make gu available in PATH (useful to install other languages)
  ln -s "${PREFIX_PATH}/graalvm/bin/gu" "$ruby_home/bin/gu"

  cd "${PREFIX_PATH}"
  ln -s "${ruby_home#"$PREFIX_PATH/"}/bin" . || return $?

  "$ruby_home/lib/truffle/post_install_hook.sh"
}

build_package_artichoke() {
  build_package_copy

@@ -767,11 +786,20 @@ remove_windows_files() {
  rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh
}

build_package_copy() {
clean_prefix_path() {
  # Make sure there are no leftover files in $PREFIX_PATH
  rm -rf "$PREFIX_PATH"
  mkdir -p "$PREFIX_PATH"
  cp -fR . "$PREFIX_PATH"
}

build_package_copy_to() {
  to="$1"
  mkdir -p "$to"
  cp -fR . "$to"
}

build_package_copy() {
  clean_prefix_path
  build_package_copy_to "$PREFIX_PATH"
}

before_install_package() {

script/update-graalvm

0 → 100755
+43 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

set -e
set -o pipefail

if [ $# -ne 2 ]; then
  echo "usage: $0 VERSION RELEASE_DIRECTORY"
  exit 1
fi

version="$1"
release_directory="$2"
file="share/ruby-build/graalvm-${version}"

add_platform() {
  platform="$1"
  basename="graalvm-ce-java8-${platform}-${version}.tar.gz"
  url="https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${version}/${basename}"
  sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)

  cat >> "$file" <<EOS
  install_package "graalvm-${version}" "${url}#${sha256}" graalvm
  ;;
EOS
}

cat > "$file" <<EOS
case \$(uname -s) in
Linux)
EOS
add_platform "linux-amd64"
cat >> "$file" <<EOS
Darwin)
  use_homebrew_openssl
EOS
add_platform "darwin-amd64"
cat >> "$file" <<EOS
*)
  colorize 1 "Unsupported operating system: \$(uname -s)"
  return 1
  ;;
esac
EOS
+13 −0
Original line number Diff line number Diff line
case $(uname -s) in
Linux)
  install_package "graalvm-20.1.0" "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java8-linux-amd64-20.1.0.tar.gz#4fac212b37cd548831fd6587dd4d59dc068068815aa20323b47fde9529d6bb6e" graalvm
  ;;
Darwin)
  use_homebrew_openssl
  install_package "graalvm-20.1.0" "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java8-darwin-amd64-20.1.0.tar.gz#3b9fd8ce84c9162a188fde88907c66990db22af0ff6ae2c04430113253a9a634" graalvm
  ;;
*)
  colorize 1 "Unsupported operating system: $(uname -s)"
  return 1
  ;;
esac
+5 −0
Original line number Diff line number Diff line
@@ -82,6 +82,8 @@ NUM_DEFINITIONS="$(ls "$BATS_TEST_DIRNAME"/../share/ruby-build | wc -l)"
2.1.0
2.1.1
2.2.0-dev
graalvm-20.0.0
graalvm-20.1.0
jruby-1.6.5
jruby-1.6.5.1
jruby-1.7.0-preview1
@@ -132,6 +134,8 @@ truffleruby-19.3.0"
2.6.4
2.6.5
2.7.0
graalvm-20.0.0
graalvm-20.1.0
jruby-1.5.6
jruby-9.2.7.0
jruby-9.2.8.0
@@ -154,6 +158,7 @@ truffleruby-19.3.1"
2.5.7
2.6.5
2.7.0
graalvm-20.1.0
jruby-9.2.9.0
maglev-1.0.0
mruby-2.1.0