Fix Java version detection on Windows

Fixes https://github.com/sbt/sbt/issues/4055
Adds JDK 10 testing on Windows
This commit is contained in:
Eugene Yokota 2018-04-05 20:53:11 -04:00
parent a638ad49ac
commit b2fdb7685f
6 changed files with 27 additions and 26 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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%

View File

@ -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%