From 50074e8e1ee3b86c077f8271107d708c726858ed Mon Sep 17 00:00:00 2001 From: He-Pin Date: Mon, 29 Jan 2024 17:59:18 +0800 Subject: [PATCH] chore: Only verify Jdk 9 classes on jdk 11. --- .github/workflows/jdk9-classes-check.yml | 63 ++++++++++++++++++++++++ .github/workflows/nightly-builds.yml | 12 ++--- .github/workflows/verify-jdk9-classes.sh | 18 +++++++ project/VerifyJDK9Classes.scala | 16 +++--- 4 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/jdk9-classes-check.yml create mode 100644 .github/workflows/verify-jdk9-classes.sh diff --git a/.github/workflows/jdk9-classes-check.yml b/.github/workflows/jdk9-classes-check.yml new file mode 100644 index 00000000000..8c9e8428de8 --- /dev/null +++ b/.github/workflows/jdk9-classes-check.yml @@ -0,0 +1,63 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: JDK9-Classes-Check + +on: + pull_request: + +permissions: + contents: read + +jobs: + generate-doc-check: + name: JDK9-Classes-Check + runs-on: ubuntu-20.04 + if: github.repository == 'apache/incubator-pekko' + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Setup Java 11 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 11 + + - name: Cache Coursier cache + uses: coursier/cache-action@v6 + + - name: Publish + # Publish (osgi bundle) not working with JDK 17, issue #31132 + run: |- + sudo apt-get install graphviz + sbt -Dsbt.skip.doc=true publishLocal + + - name: Install scala-cli + run: |- + curl -sS "https://virtuslab.github.io/scala-cli-packages/KEY.gpg" | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/scala-cli.gpg 2>/dev/null + sudo curl -s --compressed -o /etc/apt/sources.list.d/scala_cli_packages.list "https://virtuslab.github.io/scala-cli-packages/debian/scala_cli_packages.list" + sudo apt update + sudo apt install scala-cli + + - name: Use Scala-CLI to verify jdk 9 classes + run: |- + chmod +x .github/workflows/verify-jdk9-classes.sh + .github/workflows/verify-jdk9-classes.sh diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 93dd6a2a264..90dd4b045b0 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -181,7 +181,7 @@ jobs: "+~ ${{ matrix.scalaVersion }} publishLocal publishM2" - name: Install scala-cli - if: ${{ contains('11,17,21', matrix.javaVersion) }} + if: ${{ matrix.javaVersion == 11 }} run: |- curl -sS "https://virtuslab.github.io/scala-cli-packages/KEY.gpg" | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/scala-cli.gpg 2>/dev/null sudo curl -s --compressed -o /etc/apt/sources.list.d/scala_cli_packages.list "https://virtuslab.github.io/scala-cli-packages/debian/scala_cli_packages.list" @@ -189,11 +189,7 @@ jobs: sudo apt install scala-cli - name: Use Scala-CLI to verify jdk 9 classes - if: ${{ contains('11,17,21', matrix.javaVersion) }} + if: ${{ matrix.javaVersion == 11 }} run: |- - scala-cli --version - echo "Starting verification with Scala-CLI" - scala-cli stream/target/scala-cli/VerifyJDK9Classes.sc && echo "Verification successful" || ( - echo "Error when VerifyJDK9Classes" - exit 1 - ) + chmod +x .github/workflows/verify-jdk9-classes.sh + .github/workflows/verify-jdk9-classes.sh diff --git a/.github/workflows/verify-jdk9-classes.sh b/.github/workflows/verify-jdk9-classes.sh new file mode 100644 index 00000000000..220020fbdc1 --- /dev/null +++ b/.github/workflows/verify-jdk9-classes.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo "Checking Scala CLI version..." +scala-cli --version + +echo "Starting verification with Scala-CLI..." + +for file in stream/target/scala-cli/*.sc; do + echo "Starting verification for with file: $file." + if scala-cli "$file" ; then + echo "Verification successful for $file." + else + echo "Error when verifying $file." + exit 1 + fi +done + +echo "All verifications successful." \ No newline at end of file diff --git a/project/VerifyJDK9Classes.scala b/project/VerifyJDK9Classes.scala index f4c1636db43..4c0870577d0 100644 --- a/project/VerifyJDK9Classes.scala +++ b/project/VerifyJDK9Classes.scala @@ -22,24 +22,23 @@ object VerifyJDK9Classes { lazy val settings: Seq[Setting[_]] = inConfig(Compile) { Seq { sourceGenerators += { - generateAndWriteScalaCLIScript( - target, - _ / "scala-cli" / "VerifyJDK9Classes.sc") + generateAndWriteScalaCLIScript(target) } } } - def generateAndWriteScalaCLIScript(dir: SettingKey[File], locate: File => File): Def.Initialize[Task[Seq[sbt.File]]] = + def generateAndWriteScalaCLIScript(dir: SettingKey[File]): Def.Initialize[Task[Seq[sbt.File]]] = Def.task[Seq[File]] { - val script = generateScalaCLIScript(version.value) - val file = locate(dir.value) + val binaryVersion = scalaBinaryVersion.value + val script = generateScalaCLIScript(version.value, binaryVersion) + val file = dir.value / "scala-cli" / s"VerifyJDK9Classes-${binaryVersion}.sc" val content = script.stripMargin.format(version.value) if (!file.exists || IO.read(file) != content) IO.write(file, content) // the generated file is not used. Nil } - private def generateScalaCLIScript(version: String): String = + private def generateScalaCLIScript(version: String, scalaBinaryVersion: String): String = s""" |/* | * Licensed to the Apache Software Foundation (ASF) under one or more @@ -57,9 +56,8 @@ object VerifyJDK9Classes { | * See the License for the specific language governing permissions and | * limitations under the License. | */ - |//> using scala 2.13 + |//> using scala ${scalaBinaryVersion} |//> using dep "org.apache.pekko::pekko-stream:${version}" - |////> using jvm 11 |object VerifyJDK9Classes { | def main(args: Array[String]): Unit = { | import org.apache.pekko.actor.ActorSystem