Fix verifying Java 9+ versions

Ref. #1135
This commit is contained in:
Mislav Marohnić 2019-11-02 13:09:38 +01:00
parent 9d78f06d1d
commit c30d4cba91
2 changed files with 30 additions and 10 deletions

View file

@ -800,12 +800,19 @@ fix_rbx_irb() {
require_java() {
local required="$1"
local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -1 | grep -o '1\.[0-9]\+')"
if [ -z "$version" ] || [ "${version##*.}" -lt "$required" ]; then
colorize 1 "ERROR" >&3
echo ": Java ${required} required. Please install a 1.${required}-compatible JRE." >&3
return 1
fi
local java_version="$(java -version 2>&1)"
local version_string="$(grep 'java version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' || true)"
[ -n "$version_string" ] || version_string="$(grep 'openjdk version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' || true)"
IFS="."
local nums=($version_string)
IFS="$OLDIFS"
local found_version="${nums[0]}"
[ "$found_version" -gt 1 ] 2>/dev/null || found_version="${nums[1]}"
[ "$found_version" -ge "$required" ] 2>/dev/null && return 0
colorize 1 "ERROR" >&3
echo ": Java ${required} required, but your Java version was:" >&3
cat <<<"$java_version" >&3
return 1
}
# keep for backwards compatibility

View file

@ -569,20 +569,21 @@ require_java7
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
assert_failure
assert_output_contains "ERROR: Java 7 required. Please install a 1.7-compatible JRE."
assert_output_contains "ERROR: Java 7 required, but your Java version was:"
}
@test "JRuby Java is outdated" {
cached_tarball "jruby-9000.dev" bin/jruby
stub java '-version : echo java version "1.6.0_21" >&2'
stub java "-version : echo 'java version \"1.6.0_21\"' >&2"
run_inline_definition <<DEF
require_java7
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
assert_failure
assert_output_contains "ERROR: Java 7 required. Please install a 1.7-compatible JRE."
assert_output_contains "ERROR: Java 7 required, but your Java version was:"
assert_output_contains 'java version "1.6.0_21"'
}
@test "JRuby Java 7 up-to-date" {
@ -624,7 +625,7 @@ DEF
@test "JRuby Java 9 version string" {
cached_tarball "jruby-9000.dev" bin/jruby
stub java '-version : echo java version "9" >&2'
stub java "-version : echo 'java version \"9\"' >&2"
run_inline_definition <<DEF
require_java7
@ -633,6 +634,18 @@ DEF
assert_success
}
@test "JRuby Java 10 version string" {
cached_tarball "jruby-9000.dev" bin/jruby
stub java "-version : echo 'java version \"10.8\"' >&2"
run_inline_definition <<DEF
require_java 9
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
assert_success
}
@test "TruffleRuby post-install hook" {
executable "${RUBY_BUILD_CACHE_PATH}/truffleruby-test/lib/truffle/post_install_hook.sh" <<OUT
echo Running post-install hook