diff --git a/.github/workflows/client-test.yml b/.github/workflows/client-test.yml index 9526d612a..df0ef6ab4 100644 --- a/.github/workflows/client-test.yml +++ b/.github/workflows/client-test.yml @@ -33,7 +33,9 @@ jobs: uses: actions/setup-java@v5 with: distribution: "zulu" - java-version: "8" + java-version: | + 25 + 8 cache: sbt - uses: sbt/setup-sbt@v1 with: @@ -55,12 +57,13 @@ jobs: ./client/target/bin/sbtn --sbt-script=$(pwd)/sbt about ./client/target/bin/sbtn --sbt-script=$(pwd)/sbt shutdown # test launcher script - echo build using JDK 8 test using JDK 8 and JDK 11 + echo build using JDK 8 test using JDK 8 and JDK 25 cd launcher-package sbt -Dsbt.build.version=$TEST_SBT_VER rpm:packageBin debian:packageBin sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test cd citest && ./test.sh - $HOME/bin/jabba install $JDK11 && exec $HOME/bin/jabba which --home $JDK11 + JAVA_HOME="$JAVA_HOME_25_X64" + PATH="$JAVA_HOME_25_X64/bin:$PATH" java -Xmx32m -version ./test.sh - name: Client test (macOS) @@ -85,7 +88,7 @@ jobs: ./client/target/bin/sbtn --sbt-script=$(pwd)/launcher-package/src/universal/bin/sbt.bat about ./client/target/bin/sbtn --sbt-script=$(pwd)/launcher-package/src/universal/bin/sbt.bat shutdown # test launcher script - echo build using JDK 8, test using JDK 8, on Windows + echo build using JDK 8 test using JDK 8 and JDK 25 cd launcher-package bin/coursier.bat resolve sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test diff --git a/launcher-package/citest/test3/.jvmopts b/launcher-package/citest/test3/.jvmopts index ecacefc9a..a18306841 100644 --- a/launcher-package/citest/test3/.jvmopts +++ b/launcher-package/citest/test3/.jvmopts @@ -1,3 +1,3 @@ --XX:+CMSClassUnloadingEnabled +#-XX:+CMSClassUnloadingEnabled #-XX:ReservedCodeCacheSize=192m #-Duser.timezone=GMT \ No newline at end of file diff --git a/launcher-package/citest/test3/build.sbt b/launcher-package/citest/test3/build.sbt index 6cba9926c..dbe7fe7f9 100755 --- a/launcher-package/citest/test3/build.sbt +++ b/launcher-package/citest/test3/build.sbt @@ -27,19 +27,19 @@ lazy val root = (project in file(".")) assert(ys.size == 1, s"ys has more than one item: $ys") assert(ys(0) startsWith "Java HotSpot(TM) 64-Bit Server VM warning") }, - checkNumericVersion = { + checkNumericVersion := { val xs = IO.readLines(file("numericVersion.txt")).toVector val expectedVersion = "^"+versionRegEx+"$" assert(xs(0).matches(expectedVersion)) }, - checkScriptVersion = { + checkScriptVersion := { val xs = IO.readLines(file("scriptVersion.txt")).toVector val expectedVersion = "^"+versionRegEx+"$" assert(xs(0).matches(expectedVersion)) }, - checkVersion = { + checkVersion := { val out = IO.readLines(file("version.txt")).toVector.mkString("\n") val expectedVersion = diff --git a/launcher-package/citest/test3/test3.bat b/launcher-package/citest/test3/test3.bat index 38b1bde4f..52f489a0f 100644 --- a/launcher-package/citest/test3/test3.bat +++ b/launcher-package/citest/test3/test3.bat @@ -2,16 +2,18 @@ SETLOCAL -SET JAVA_HOME=C:\jdk11 -SET PATH=C:\jdk11\bin;%PATH% +SET JAVA_HOME=%JAVA_HOME_25_X64% +SET PATH=%JAVA_HOME_25_X64%\bin;%PATH% SET SBT_OPTS=-Xmx4g -Dfile.encoding=UTF8 SET BASE_DIR=%CD% SET SCRIPT_DIR=%~dp0 CD %SCRIPT_DIR% -"%BASE_DIR%freshly-baked\sbt\bin\sbt" about 1> output.txt 2> err.txt -"%BASE_DIR%freshly-baked\sbt\bin\sbt" check +"%BASE_DIR%\freshly-baked\sbt\bin\sbt" about 1> output.txt 2> err.txt +"%BASE_DIR%\freshly-baked\sbt\bin\sbt" check CD %BASE_DIR% ENDLOCAL + +IF %errorlevel% NEQ 0 EXIT /b %errorlevel% diff --git a/launcher-package/src/universal/bin/sbt.bat b/launcher-package/src/universal/bin/sbt.bat index 781b8b9ba..3c3468e2f 100755 --- a/launcher-package/src/universal/bin/sbt.bat +++ b/launcher-package/src/universal/bin/sbt.bat @@ -39,6 +39,7 @@ set sbt_args_color= set sbt_args_no_colors= set sbt_args_no_global= set sbt_args_no_share= +set sbt_args_no_hide_jdk_warnings= set sbt_args_sbt_jar= set sbt_args_ivy= set sbt_args_supershell= @@ -231,6 +232,14 @@ if defined _no_server_arg ( goto args_loop ) +if "%~0" == "--no-hide-jdk-warnings" set _no_hide_jdk_warnings=true + +if defined _no_hide_jdk_warnings ( + set _no_hide_jdk_warnings= + set sbt_args_no_hide_jdk_warnings=1 + goto args_loop +) + if "%~0" == "-no-global" set _no_global_arg=true if "%~0" == "--no-global" set _no_global_arg=true @@ -677,6 +686,12 @@ if defined sbt_args_no_server ( set _SBT_OPTS=-Dsbt.io.virtual=false -Dsbt.server.autostart=false !_SBT_OPTS! ) +if not defined sbt_args_no_hide_jdk_warnings ( + if /I !JAVA_VERSION! EQU 25 ( + set _SBT_OPTS=--sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED !_SBT_OPTS! + ) +) + rem TODO: _SBT_OPTS needs to be processed as args and diffed against SBT_ARGS if !sbt_args_print_sbt_version! equ 1 ( diff --git a/sbt b/sbt index ea6860fe6..7f03aa622 100755 --- a/sbt +++ b/sbt @@ -28,6 +28,7 @@ declare sbtn_command="$SBTN_CMD" declare sbtn_version="1.11.6" declare use_colors=1 declare is_this_dir_sbt="" +declare hide_jdk_warnings=1 ### ------------------------------- ### ### Helper methods for BASH scripts ### @@ -85,7 +86,7 @@ CYGWIN_FLAG=$(if is_cygwin; then echo true; else echo false; fi) # windows style paths. cygwinpath() { local file="$1" - if [[ "$CYGWIN_FLAG" == "true" ]]; then #" + if [[ "$CYGWIN_FLAG" == "true" ]]; then echo $(cygpath -w $file) else echo $file @@ -114,7 +115,7 @@ echoerr_error () { echoerr -e "[${RED}error${NC}] $@" else echoerr "[error] $@" - fi + fi #" } vlog () { [[ $sbt_verbose || $sbt_debug ]] && echoerr "$@" @@ -347,6 +348,18 @@ addSbtScriptProperty () { fi } +addJdkWorkaround () { + local is_25="$(expr $java_version "=" 25)" + if [[ "$hide_jdk_warnings" == "0" ]]; then + : + else + if [[ "$is_25" == "1" ]]; then + addJava "--sun-misc-unsafe-memory-access=allow" + addJava "--enable-native-access=ALL-UNNAMED" + fi + fi +} + require_arg () { local type="$1" local opt="$2" @@ -532,7 +545,7 @@ run() { copyRt # If we're in cygwin, we should use the windows config, and terminal hacks - if [[ "$CYGWIN_FLAG" == "true" ]]; then #" + if [[ "$CYGWIN_FLAG" == "true" ]]; then stty -icanon min 1 -echo > /dev/null 2>&1 addJava "-Djline.terminal=jline.UnixTerminal" addJava "-Dsbt.cygwin=true" @@ -572,7 +585,7 @@ run() { exit_code=$? # Clean up the terminal from cygwin hacks. - if [[ "$CYGWIN_FLAG" == "true" ]]; then #" + if [[ "$CYGWIN_FLAG" == "true" ]]; then stty icanon echo > /dev/null 2>&1 fi exit $exit_code @@ -705,6 +718,7 @@ process_args () { -client|--client) use_sbtn=1 && shift ;; --server) use_sbtn=0 && shift ;; --jvm-client) use_sbtn=0 && use_jvm_client=1 && addSbt "--client" && shift ;; + --no-hide-jdk-warnings) hide_jdk_warnings=0 && shift ;; -mem|--mem) require_arg integer "$1" "$2" && addMemory "$2" && shift 2 ;; -jvm-debug|--jvm-debug) require_arg port "$1" "$2" && addDebugger $2 && shift 2 ;; @@ -867,6 +881,7 @@ else vlog "[process_args] java_version = '$java_version'" addDefaultMemory addSbtScriptProperty + addJdkWorkaround set -- "${residual_args[@]}" argumentCount=$# run