diff --git a/.github/workflows/build-test-prValidation.yml b/.github/workflows/build-test-prValidation.yml index e055908a65b..0ae9081901d 100644 --- a/.github/workflows/build-test-prValidation.yml +++ b/.github/workflows/build-test-prValidation.yml @@ -25,11 +25,11 @@ jobs: - name: Cache Coursier cache uses: coursier/cache-action@v6 - - name: Setup Java 8 + - name: Setup Java 11 uses: actions/setup-java@v4 with: distribution: temurin - java-version: 8 + java-version: 11 - name: Code style check run: |- @@ -49,11 +49,11 @@ jobs: fetch-depth: 0 fetch-tags: 0 - - name: Setup Java 8 + - name: Setup Java 11 uses: actions/setup-java@v4 with: distribution: temurin - java-version: 8 + java-version: 11 - name: Cache Coursier cache uses: coursier/cache-action@v6 diff --git a/.github/workflows/headers.yml b/.github/workflows/headers.yml index c1c0e45eccd..f4d657ec036 100644 --- a/.github/workflows/headers.yml +++ b/.github/workflows/headers.yml @@ -13,11 +13,11 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup Java 8 + - name: Setup Java 11 uses: actions/setup-java@v4 with: distribution: temurin - java-version: 8 + java-version: 11 - name: Cache Coursier cache uses: coursier/cache-action@v6 diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 9d67f24e2cd..bfa6d683bd7 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -113,7 +113,7 @@ jobs: # binary version is required and Pekko build will set the right # full version from it. scalaVersion: ["2.12", "2.13", "3.3"] - javaVersion: [8, 11, 17, 21] + javaVersion: [11, 17, 21] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/project/Doc.scala b/project/Doc.scala index a2528d2d666..42193d36d38 100644 --- a/project/Doc.scala +++ b/project/Doc.scala @@ -140,10 +140,7 @@ object UnidocRoot extends AutoPlugin { lazy val pekkoSettings = UnidocRoot.CliOptions.genjavadocEnabled .ifTrue(Seq( - JavaUnidoc / unidoc / javacOptions := { - if (JdkOptions.isJdk8) Seq("-Xdoclint:none") - else Seq("-Xdoclint:none", "--ignore-source-errors", "--no-module-directories") - })) + JavaUnidoc / unidoc / javacOptions := Seq("-Xdoclint:none", "--ignore-source-errors", "--no-module-directories"))) .getOrElse(Nil) override lazy val projectSettings = { @@ -213,11 +210,7 @@ object BootstrapGenjavadoc extends AutoPlugin { override lazy val requires = UnidocRoot.CliOptions.genjavadocEnabled - .ifTrue { - // require 11, fail fast for 8, 9, 10 - require(JdkOptions.isJdk11orHigher, "Javadoc generation requires at least jdk 11") - sbtunidoc.GenJavadocPlugin - } + .ifTrue(sbtunidoc.GenJavadocPlugin) .getOrElse(plugins.JvmPlugin) override lazy val projectSettings = UnidocRoot.CliOptions.genjavadocEnabled diff --git a/project/Jdk9.scala b/project/Jdk9.scala index 422b6d65e6a..7eda47692b4 100644 --- a/project/Jdk9.scala +++ b/project/Jdk9.scala @@ -15,7 +15,6 @@ import sbt.Keys._ import sbt._ object Jdk9 extends AutoPlugin { - import JdkOptions.notOnJdk8 import JdkOptions.JavaVersion._ // The version 9 is special for any Java versions >= 9 @@ -59,15 +58,15 @@ object Jdk9 extends AutoPlugin { lazy val compileJdk9Settings = Seq( // following the scala-2.12, scala-sbt-1.0, ... convention - unmanagedSourceDirectories := notOnJdk8(additionalSourceDirectories.value), - scalacOptions := PekkoBuild.DefaultScalacOptions.value ++ notOnJdk8(Seq("-release", majorVersion.toString)), - javacOptions := PekkoBuild.DefaultJavacOptions ++ notOnJdk8(Seq("--release", majorVersion.toString))) + unmanagedSourceDirectories := additionalSourceDirectories.value, + scalacOptions := PekkoBuild.DefaultScalacOptions.value ++ Seq("-release", majorVersion.toString), + javacOptions := PekkoBuild.DefaultJavacOptions ++ Seq("--release", majorVersion.toString)) lazy val testJdk9Settings = Seq( // following the scala-2.12, scala-sbt-1.0, ... convention - unmanagedSourceDirectories := notOnJdk8(additionalTestSourceDirectories.value), - scalacOptions := PekkoBuild.DefaultScalacOptions.value ++ notOnJdk8(Seq("-release", majorVersion.toString)), - javacOptions := PekkoBuild.DefaultJavacOptions ++ notOnJdk8(Seq("--release", majorVersion.toString)), + unmanagedSourceDirectories := additionalTestSourceDirectories.value, + scalacOptions := PekkoBuild.DefaultScalacOptions.value ++ Seq("-release", majorVersion.toString), + javacOptions := PekkoBuild.DefaultJavacOptions ++ Seq("--release", majorVersion.toString), compile := compile.dependsOn(CompileJdk9 / compile).value, classpathConfiguration := TestJdk9, externalDependencyClasspath := (Test / externalDependencyClasspath).value) @@ -80,7 +79,7 @@ object Jdk9 extends AutoPlugin { // Since sbt-osgi upgrade to 0.9.5, the fullClasspath is no longer used on packaging when use sbt-osgi, so we have to // add jdk9 products to dependencyClasspathAsJars instead. // Compile / fullClasspath ++= (CompileJdk9 / exportedProducts).value) - Compile / dependencyClasspathAsJars ++= notOnJdk8((CompileJdk9 / exportedProducts).value)) + Compile / dependencyClasspathAsJars ++= (CompileJdk9 / exportedProducts).value) lazy val testSettings = Seq((Test / test) := { (Test / test).value diff --git a/project/JdkOptions.scala b/project/JdkOptions.scala index 852a2bb82da..aa400b8a0b2 100644 --- a/project/JdkOptions.scala +++ b/project/JdkOptions.scala @@ -40,10 +40,6 @@ object JdkOptions extends AutoPlugin { } } - lazy val isJdk8: Boolean = - VersionNumber(specificationVersion).matchesSemVer(SemanticSelector(s"=1.8")) - lazy val isJdk11orHigher: Boolean = - VersionNumber(specificationVersion).matchesSemVer(SemanticSelector(">=11")) lazy val isJdk17orHigher: Boolean = VersionNumber(specificationVersion).matchesSemVer(SemanticSelector(">=17")) @@ -55,8 +51,6 @@ object JdkOptions extends AutoPlugin { "--add-opens=java.base/java.nio=ALL-UNNAMED" :: Nil } else Nil - def notOnJdk8[T](values: Seq[T]): Seq[T] = if (isJdk8) Seq.empty[T] else values - def targetJdkScalacOptions( targetSystemJdk: Boolean, jdk8home: Option[File], @@ -66,7 +60,6 @@ object JdkOptions extends AutoPlugin { targetSystemJdk, jdk8home, fullJavaHomes, - Seq(if (scalaVersion.startsWith("3.")) "-Xtarget:8" else "release:8"), (java8home: File) => Seq("-release", "8")) def targetJdkJavacOptions( targetSystemJdk: Boolean, @@ -76,7 +69,6 @@ object JdkOptions extends AutoPlugin { targetSystemJdk, jdk8home, fullJavaHomes, - Nil, // '-release 8' would be a neater option here, but is currently not an // option because it doesn't provide access to `sun.misc.Unsafe` https://github.com/akka/akka/issues/27079 (java8home: File) => Seq("-source", "8", "-target", "8", "-bootclasspath", java8home + "/jre/lib/rt.jar")) @@ -85,12 +77,9 @@ object JdkOptions extends AutoPlugin { targetSystemJdk: Boolean, jdk8home: Option[File], fullJavaHomes: Map[String, File], - jdk8options: Seq[String], jdk11options: File => Seq[String]): Seq[String] = if (targetSystemJdk) Nil - else if (isJdk8) - jdk8options else jdk8home.orElse(fullJavaHomes.get("8")) match { case Some(java8home) => diff --git a/project/PekkoBuild.scala b/project/PekkoBuild.scala index fd8bcc70fc8..fe2cb737aa9 100644 --- a/project/PekkoBuild.scala +++ b/project/PekkoBuild.scala @@ -119,15 +119,6 @@ object PekkoBuild { } } - private def jvmGCLogOptions(isJdk11OrHigher: Boolean, isJdk8: Boolean): Seq[String] = { - if (isJdk11OrHigher) - // -Xlog:gc* is equivalent to -XX:+PrintGCDetails. See: - // https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5 - Seq("-Xlog:gc*") - else if (isJdk8) Seq("-XX:+PrintGCTimeStamps", "-XX:+PrintGCDetails") - else Nil - } - // -XDignore.symbol.file suppresses sun.misc.Unsafe warnings final val DefaultJavacOptions = Seq("-encoding", "UTF-8", "-Xlint:unchecked", "-XDignore.symbol.file") @@ -227,8 +218,10 @@ object PekkoBuild { // faster random source "-Djava.security.egd=file:/dev/./urandom") + // -Xlog:gc* is equivalent to -XX:+PrintGCDetails. See: + // https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5 defaults ++ CliOptions.runningOnCi - .ifTrue(jvmGCLogOptions(JdkOptions.isJdk11orHigher, JdkOptions.isJdk8)) + .ifTrue(Seq("-Xlog:gc*")) .getOrElse(Nil) ++ JdkOptions.versionSpecificJavaOptions }, @@ -327,10 +320,7 @@ object PekkoBuild { lazy val docLintingSettings = Seq( compile / javacOptions ++= Seq("-Xdoclint:none"), test / javacOptions ++= Seq("-Xdoclint:none"), - doc / javacOptions ++= { - if (JdkOptions.isJdk8) Seq("-Xdoclint:none") - else Seq("-Xdoclint:none", "--ignore-source-errors") - }) + doc / javacOptions ++= Seq("-Xdoclint:none", "--ignore-source-errors")) def loadSystemProperties(fileName: String): Unit = { import scala.collection.JavaConverters._ diff --git a/project/TestExtras.scala b/project/TestExtras.scala index b39270e24ca..da6c50b49ba 100644 --- a/project/TestExtras.scala +++ b/project/TestExtras.scala @@ -15,7 +15,6 @@ import sbt.Keys._ import sbt._ object TestExtras { - import JdkOptions.isJdk8 object Filter { object Keys { lazy val excludeTestNames = settingKey[Set[String]]( @@ -61,17 +60,11 @@ object TestExtras { def shouldExist(description: String, filename: String): Unit = require(file(filename).exists, s"$description should be run as part of the build") - val baseList = - List( - "The java JavaExtension.java" -> "actor-tests/target/test-reports/TEST-org.apache.pekko.actor.JavaExtension.xml") - val jdk9Only = List( + val testsToCheck = List( + "The java JavaExtension.java" -> "actor-tests/target/test-reports/TEST-org.apache.pekko.actor.JavaExtension.xml", "The jdk9-only FlowPublisherSinkSpec.scala" -> "stream-tests/target/test-reports/TEST-org.apache.pekko.stream.scaladsl.FlowPublisherSinkSpec.xml", "The jdk9-only JavaFlowSupportCompileTest.java" -> "stream-tests/target/test-reports/TEST-org.apache.pekko.stream.javadsl.JavaFlowSupportCompileTest.xml") - val testsToCheck = - if (isJdk8) baseList - else baseList ::: jdk9Only - testsToCheck.foreach((shouldExist _).tupled) }) }