mirror of https://github.com/sbt/sbt.git
Merge pull request #225 from eed3si9n/wip/jdk10
Fix Java version detection and comparison for JDK 10
This commit is contained in:
commit
8350d7ca03
|
|
@ -5,7 +5,7 @@ init:
|
|||
|
||||
install:
|
||||
- cinst jdk8 -params 'installdir=C:\\jdk8'
|
||||
- cinst jdk9 -version 9.0.4.11 -params 'installdir=C:\\jdk9'
|
||||
- cinst jdk10 -params 'installdir=C:\\jdk10'
|
||||
- SET JAVA_HOME=C:\jdk8
|
||||
- SET PATH=C:\jdk8\bin;%PATH%
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ install:
|
|||
- SET SBT_OPTS=-XX:MaxPermSize=2g -Xmx4g -Dfile.encoding=UTF8
|
||||
|
||||
test_script:
|
||||
- sbt "-Dsbt.build.version=1.0.4" universal:packageBin
|
||||
- sbt "-Dsbt.build.version=1.1.2" universal:packageBin
|
||||
- cd citest
|
||||
- test.bat
|
||||
- test1.bat
|
||||
|
|
|
|||
|
|
@ -23,17 +23,17 @@ matrix:
|
|||
os: osx
|
||||
osx_image: xcode9.2
|
||||
|
||||
## build using JDK 8, test using JDK 9
|
||||
## build using JDK 8, test using OpenJDK 10
|
||||
- script:
|
||||
- sbt -Dsbt.build.version=$SBT_VER universal:packageBin
|
||||
- jdk_switcher use oraclejdk9
|
||||
- citest/install-jdk.sh -F 10
|
||||
- cd citest && ./test.sh
|
||||
jdk: oraclejdk8
|
||||
|
||||
## build using JDK 8, test using JDK 10
|
||||
## build using JDK 8, test using OpenJDK 11
|
||||
- script:
|
||||
- sbt -Dsbt.build.version=$SBT_VER universal:packageBin
|
||||
- citest/install-jdk10.sh
|
||||
- citest/install-jdk.sh -F 11
|
||||
- cd citest && ./test.sh
|
||||
jdk: oraclejdk8
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,167 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Install JDK for Linux
|
||||
#
|
||||
# This script determines the most recent early-access build number,
|
||||
# downloads the JDK archive to the user home directory and extracts
|
||||
# it there.
|
||||
#
|
||||
# Example usage
|
||||
#
|
||||
# install-jdk.sh -D | only gather and print variable values
|
||||
# install-jdk.sh | install most recent (early-access) OpenJDK
|
||||
# install-jdk.sh -W /usr/opt | install most recent (early-access) OpenJDK to /usr/opt
|
||||
# install-jdk.sh -C | install most recent (early-access) OpenJDK with linked system CA certificates
|
||||
# install-jdk.sh -F 9 | install most recent OpenJDK 9
|
||||
# install-jdk.sh -F 10 | install most recent OpenJDK 10
|
||||
# install-jdk.sh -F 11 | install most recent OpenJDK 11
|
||||
# install-jdk.sh -F 11 -L BCL | install most recent Oracle JDK 11
|
||||
#
|
||||
# Options
|
||||
#
|
||||
# -D | Dry-run, only gather and print variable values
|
||||
# -F f | Feature number of the JDK release [9|10|...|?]
|
||||
# -L l | License of the JDK [GPL|BCL]
|
||||
# -W w | Working directory and install path [${HOME}]
|
||||
# -C | Use system CA certificates (currently only Debian/Ubuntu is supported)
|
||||
#
|
||||
# Exported environment variables
|
||||
#
|
||||
# JAVA_HOME is set to the extracted JDK directory
|
||||
# PATH is prepended with ${JAVA_HOME}/bin
|
||||
#
|
||||
# (C) 2018 Christian Stein
|
||||
#
|
||||
# https://github.com/sormuras/bach/blob/master/install-jdk.sh
|
||||
#
|
||||
set -e
|
||||
|
||||
VERSION='2018-04-05'
|
||||
DRY_RUN='0'
|
||||
LINK_SYSTEM_CACERTS='0'
|
||||
|
||||
JDK_FEATURE='?'
|
||||
JDK_BUILD='?'
|
||||
JDK_LICENSE='GPL'
|
||||
JDK_WORKSPACE=${HOME}
|
||||
JDK_DOWNLOAD='https://download.java.net/java'
|
||||
JDK_ORACLE='http://download.oracle.com/otn-pub/java/jdk'
|
||||
|
||||
echo "install-jdk.sh (${VERSION})"
|
||||
|
||||
#
|
||||
# Parse command line options
|
||||
#
|
||||
while getopts ':F:L:W:CD' option; do
|
||||
case "${option}" in
|
||||
D) DRY_RUN='1';;
|
||||
C) LINK_SYSTEM_CACERTS='1';;
|
||||
F) JDK_FEATURE=${OPTARG};;
|
||||
L) JDK_LICENSE=${OPTARG};;
|
||||
W) JDK_WORKSPACE=${OPTARG};;
|
||||
:) echo "Option -${OPTARG} requires an argument."; exit 1;;
|
||||
\?) echo "Invalid option: -${OPTARG}"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Determine latest (early access or release candidate) number.
|
||||
#
|
||||
LATEST='11'
|
||||
TMP=${LATEST}
|
||||
while [ "${TMP}" != '99' ]
|
||||
do
|
||||
CODE=$(curl -o /dev/null --silent --head --write-out %{http_code} http://jdk.java.net/${TMP})
|
||||
if [ "${CODE}" -ge '400' ]; then
|
||||
break
|
||||
fi
|
||||
LATEST=${TMP}
|
||||
TMP=$[${TMP} +1]
|
||||
done
|
||||
|
||||
#
|
||||
# Sanity checks.
|
||||
#
|
||||
if [ "${JDK_FEATURE}" == '?' ]; then
|
||||
JDK_FEATURE=${LATEST}
|
||||
fi
|
||||
if [ "${JDK_FEATURE}" -lt '9' ] || [ "${JDK_FEATURE}" -gt "${LATEST}" ]; then
|
||||
echo "Expected JDK_FEATURE number in range of [9..${LATEST}], but got: ${JDK_FEATURE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Determine URL...
|
||||
#
|
||||
JDK_URL=$(wget -qO- http://jdk.java.net/${JDK_FEATURE} | grep -Eo 'href[[:space:]]*=[[:space:]]*"[^\"]+"' | grep -Eo '(http|https)://[^"]+')
|
||||
if [ "${JDK_FEATURE}" == "${LATEST}" ]; then
|
||||
JDK_URL=$(echo "${JDK_URL}" | grep -Eo "${JDK_DOWNLOAD}/.+/jdk${JDK_FEATURE}/.+/${JDK_LICENSE}/.*jdk-${JDK_FEATURE}.+linux-x64_bin.tar.gz$")
|
||||
else
|
||||
JDK_URL=$(echo "${JDK_URL}" | grep -Eo "${JDK_DOWNLOAD}/.+/jdk${JDK_FEATURE}/.+/.*jdk-${JDK_FEATURE}.+linux-x64_bin.tar.gz$")
|
||||
if [ "${JDK_LICENSE}" == 'BCL' ]; then
|
||||
case "${JDK_FEATURE}" in
|
||||
9) JDK_URL="${JDK_ORACLE}/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9.0.4_linux-x64_bin.tar.gz";;
|
||||
10) JDK_URL="${JDK_ORACLE}/10+46/76eac37278c24557a3c4199677f19b62/jdk-10_linux-x64_bin.tar.gz";;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Inspect URL properties.
|
||||
#
|
||||
JDK_ARCHIVE=$(basename ${JDK_URL})
|
||||
JDK_STATUS=$(curl -o /dev/null --silent --head --write-out %{http_code} ${JDK_URL})
|
||||
|
||||
#
|
||||
# Print variables and exit if dry-run is active.
|
||||
#
|
||||
echo " FEATURE = ${JDK_FEATURE}"
|
||||
echo " LICENSE = ${JDK_LICENSE}"
|
||||
echo " ARCHIVE = ${JDK_ARCHIVE}"
|
||||
echo " URL = ${JDK_URL} [${JDK_STATUS}]"
|
||||
echo
|
||||
if [ "${DRY_RUN}" == '1' ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# Create any missing intermediate paths, switch to workspace, download, unpack, switch back.
|
||||
#
|
||||
mkdir -p ${JDK_WORKSPACE}
|
||||
cd ${JDK_WORKSPACE}
|
||||
wget --continue --header "Cookie: oraclelicense=accept-securebackup-cookie" ${JDK_URL}
|
||||
file ${JDK_ARCHIVE}
|
||||
JDK_HOME=$(tar --list --auto-compress --file ${JDK_ARCHIVE} | head -1 | cut -f1 -d"/")
|
||||
tar --extract --auto-compress --file ${JDK_ARCHIVE}
|
||||
cd ${OLDPWD}
|
||||
|
||||
#
|
||||
# Update environment variables.
|
||||
#
|
||||
export JAVA_HOME=${JDK_WORKSPACE}/${JDK_HOME}
|
||||
export PATH=${JAVA_HOME}/bin:$PATH
|
||||
|
||||
#
|
||||
# Link to system certificates.
|
||||
# - http://openjdk.java.net/jeps/319
|
||||
# - https://bugs.openjdk.java.net/browse/JDK-8196141
|
||||
#
|
||||
if [ "${LINK_SYSTEM_CACERTS}" == '1' ]; then
|
||||
mv "${JAVA_HOME}/lib/security/cacerts" "${JAVA_HOME}/lib/security/cacerts.jdk"
|
||||
# TODO: Support for other distros than Debian/Ubuntu could be provided
|
||||
ln -s /etc/ssl/certs/java/cacerts "${JAVA_HOME}/lib/security/cacerts"
|
||||
fi
|
||||
|
||||
#
|
||||
# Test-drive.
|
||||
#
|
||||
echo
|
||||
java --version
|
||||
echo
|
||||
|
||||
#
|
||||
# Always print value of JAVA_HOME as last line.
|
||||
# Usage from other scripts or shell: JAVA_HOME=$(./install-jdk.sh -L GPL | tail -n 1)
|
||||
#
|
||||
echo ${JAVA_HOME}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# copied from https://github.com/junit-team/junit5/blob/master/src/install/install-jdk-10.sh
|
||||
|
||||
set -e
|
||||
|
||||
JDK_FEATURE=10
|
||||
TMP=$(curl -L jdk.java.net/${JDK_FEATURE}) # extract most recent "JDK_BUILD" number from web page source...
|
||||
TMP="${TMP#*Most recent build: jdk-${JDK_FEATURE}+}" # remove everything before the number
|
||||
TMP="${TMP%%<*}" # remove everything after the number
|
||||
JDK_BUILD="$(echo -e "${TMP}" | tr -d '[:space:]')" # remove all whitespace
|
||||
JDK_ARCHIVE=jdk-${JDK_FEATURE}+${JDK_BUILD}_linux-x64_bin.tar.gz
|
||||
|
||||
cd ~
|
||||
wget http://download.java.net/java/jdk${JDK_FEATURE}/archive/${JDK_BUILD}/BCL/${JDK_ARCHIVE}
|
||||
tar -xzf ${JDK_ARCHIVE}
|
||||
export JAVA_HOME=~/jdk-${JDK_FEATURE}
|
||||
export PATH=${JAVA_HOME}/bin:$PATH
|
||||
cd -
|
||||
java --version
|
||||
|
|
@ -9,8 +9,8 @@ SETLOCAL
|
|||
|
||||
"freshly-baked\sbt\bin\sbt" about
|
||||
|
||||
SET JAVA_HOME=C:\jdk9
|
||||
SET PATH=C:\jdk9\bin;%PATH%
|
||||
SET JAVA_HOME=C:\jdk10
|
||||
SET PATH=C:\jdk10\bin;%PATH%
|
||||
SET SBT_OPTS=-Xmx4g -Dfile.encoding=UTF8
|
||||
|
||||
"freshly-baked\sbt\bin\sbt" about
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
SETLOCAL
|
||||
|
||||
SET JAVA_HOME=C:\jdk9
|
||||
SET PATH=C:\jdk9\bin;%PATH%
|
||||
SET JAVA_HOME=C:\jdk10
|
||||
SET PATH=C:\jdk10\bin;%PATH%
|
||||
SET SBT_OPTS=-Xmx4g -Dfile.encoding=UTF8
|
||||
|
||||
"freshly-baked\sbt\bin\sbt" about 1> output.txt 2> err.txt
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
SETLOCAL
|
||||
|
||||
SET JAVA_HOME=C:\jdk9
|
||||
SET PATH=C:\jdk9\bin;%PATH%
|
||||
SET JAVA_HOME=C:\jdk10
|
||||
SET PATH=C:\jdk10\bin;%PATH%
|
||||
SET SBT_OPTS=-Xmx4g -Dfile.encoding=UTF8
|
||||
|
||||
"freshly-baked\sbt\bin\sbt" check
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
SETLOCAL
|
||||
|
||||
SET JAVA_HOME=C:\jdk9
|
||||
SET PATH=C:\jdk9\bin;%PATH%
|
||||
SET JAVA_HOME=C:\jdk10
|
||||
SET PATH=C:\jdk10\bin;%PATH%
|
||||
SET SBT_OPTS=-Xmx4g -Dfile.encoding=UTF8
|
||||
|
||||
SET BASE_DIR=%CD%
|
||||
|
|
|
|||
|
|
@ -106,19 +106,19 @@ get_mem_opts () {
|
|||
(( $codecache > 128 )) || codecache=128
|
||||
(( $codecache < 512 )) || codecache=512
|
||||
local class_metadata_size=$(( $codecache * 2 ))
|
||||
local class_metadata_opt=$([[ "$java_version" < "8" ]] && echo "MaxPermSize" || echo "MaxMetaspaceSize")
|
||||
local class_metadata_opt=$((( $java_version < 8 )) && echo "MaxPermSize" || echo "MaxMetaspaceSize")
|
||||
|
||||
local arg_xms=$([[ "${java_args[@]}" == *-Xms* ]] && echo "" || echo "-Xms${mem}m")
|
||||
local arg_xmx=$([[ "${java_args[@]}" == *-Xmx* ]] && echo "" || echo "-Xmx${mem}m")
|
||||
local arg_rccs=$([[ "${java_args[@]}" == *-XX:ReservedCodeCacheSize* ]] && echo "" || echo "-XX:ReservedCodeCacheSize=${codecache}m")
|
||||
local arg_meta=$([[ "${java_args[@]}" == *-XX:${class_metadata_opt}* && ! "$java_version" < "8" ]] && echo "" || echo "-XX:${class_metadata_opt}=${class_metadata_size}m")
|
||||
local arg_meta=$([[ "${java_args[@]}" == *-XX:${class_metadata_opt}* && ! (( $java_version < 8 )) ]] && echo "" || echo "-XX:${class_metadata_opt}=${class_metadata_size}m")
|
||||
|
||||
echo "${arg_xms} ${arg_xmx} ${arg_rccs} ${arg_meta}"
|
||||
fi
|
||||
}
|
||||
|
||||
get_gc_opts () {
|
||||
local older_than_9="$(expr $java_version "<" 9)"
|
||||
local older_than_9=$(( $java_version < 9 ))
|
||||
|
||||
if [[ "$older_than_9" == "1" ]]; then
|
||||
# don't need to worry about gc
|
||||
|
|
|
|||
|
|
@ -99,24 +99,25 @@ goto end
|
|||
goto :eof
|
||||
|
||||
:process
|
||||
rem parses 1.7, 1.8, 9, etc out of java version "1.8.0_91"
|
||||
"%_JAVACMD%" -Xmx512M -version 2> "%TEMP%\out.txt"
|
||||
rem Parses x out of 1.x; for example 8 out of java version 1.8.0_xx
|
||||
rem Otherwise, parses the major version; 9 out of java version 9-ea
|
||||
set JAVA_VERSION=0
|
||||
>nul findstr /c:"version \"9" "%TEMP%\out.txt"
|
||||
if /I %ERRORLEVEL% EQU 0 (set JAVA_VERSION=9)
|
||||
>nul findstr /c:"version \"1.8" "%TEMP%\out.txt"
|
||||
if /I %ERRORLEVEL% EQU 0 (set JAVA_VERSION=1.8)
|
||||
>nul findstr /c:"version \"1.7" "%TEMP%\out.txt"
|
||||
if /I %ERRORLEVEL% EQU 0 (set JAVA_VERSION=1.7)
|
||||
>nul findstr /c:"version \"1.6" "%TEMP%\out.txt"
|
||||
if /I %ERRORLEVEL% EQU 0 (set JAVA_VERSION=1.6)
|
||||
>nul findstr /c:"version \"1.5" "%TEMP%\out.txt"
|
||||
if /I %ERRORLEVEL% EQU 0 (set JAVA_VERSION=1.5)
|
||||
for /f "tokens=3" %%g in ('%_JAVACMD% -Xms32M -Xmx32M -version 2^>^&1 ^| findstr /i "version"') do (
|
||||
set JAVA_VERSION=%%g
|
||||
)
|
||||
set JAVA_VERSION=%JAVA_VERSION:"=%
|
||||
for /f "delims=.-_ tokens=1-2" %%v in ("%JAVA_VERSION%") do (
|
||||
if /I "%%v" EQU "1" (
|
||||
set JAVA_VERSION=%%w
|
||||
) else (
|
||||
set JAVA_VERSION=%%v
|
||||
)
|
||||
)
|
||||
exit /B 0
|
||||
|
||||
:checkjava
|
||||
set required_version=1.6
|
||||
if /I "%JAVA_VERSION%" GEQ "%required_version%" (
|
||||
set required_version=6
|
||||
if /I %JAVA_VERSION% GEQ %required_version% (
|
||||
exit /B 0
|
||||
)
|
||||
echo.
|
||||
|
|
@ -130,7 +131,7 @@ echo.
|
|||
exit /B 1
|
||||
|
||||
:copyrt
|
||||
if /I "%JAVA_VERSION%" GEQ "9" (
|
||||
if /I %JAVA_VERSION% GEQ 9 (
|
||||
set rtexport=!SBT_HOME!java9-rt-export.jar
|
||||
|
||||
"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -jar "!rtexport!" --rt-ext-dir > "%TEMP%.\rtext.txt"
|
||||
|
|
@ -160,7 +161,7 @@ if "%INIT_SBT_VERSION%"=="" (
|
|||
)
|
||||
)
|
||||
set PRELOAD_SBT_JAR="%UserProfile%\.sbt\preloaded\org.scala-sbt\sbt\%INIT_SBT_VERSION%\jars\sbt.jar"
|
||||
if /I "%JAVA_VERSION%" GEQ "1.8" (
|
||||
if /I %JAVA_VERSION% GEQ 8 (
|
||||
where robocopy >nul 2>nul
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
REM echo %PRELOAD_SBT_JAR%
|
||||
|
|
|
|||
Loading…
Reference in New Issue