From 59202a07e0d8d4abfd19a853726339efd5f49b05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 31 Jan 2024 22:20:10 +0200 Subject: [PATCH 1/3] Add scala-native support --- CHANGELOG.md | 12 ++++++++---- build.sbt | 5 ++++- project/plugins.sbt | 8 +++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e56905b..fbf6785 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 # unreleased +Cross publish to Scala Native! + ### Scala versions: -- `2.12.18`, JVM and JS -- `2.13.12`, JVM and JS -- `3.3.1`, JVM and JS +- `2.12.18`, JVM, JS, Native +- `2.13.12`, JVM, JS, Native +- `3.3.1`, JVM, JS, Native ### internals: - bump sbt-scalajs to `1.15.0` @@ -19,7 +21,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - bump scalafmt to `3.7.17` - bump sbt to `1.9.8` - bump munit to `1.0.0-M10` -- bump sbt-typelevel tp `0.6.5` +- bump sbt-typelevel to `0.6.5` +- introduce sbt-scala-native `0.4.17` +- introduce sbt-scala-native-crossproject `1.3.2` # 1.0.0 diff --git a/build.sbt b/build.sbt index e1e023b..f702462 100644 --- a/build.sbt +++ b/build.sbt @@ -64,7 +64,7 @@ val munitVersion = "1.0.0-M10" // https://github.com/scalameta/munit/r lazy val root = tlCrossRootProject.aggregate(enclosure) -lazy val enclosure = crossProject(JVMPlatform, JSPlatform) +lazy val enclosure = crossProject(JVMPlatform, JSPlatform, NativePlatform) .crossType(CrossType.Full) .in(file("enclosure")) .settings( @@ -75,6 +75,9 @@ lazy val enclosure = crossProject(JVMPlatform, JSPlatform) ) .settings(macroSettings) .settings(scala3Flags) + .nativeSettings( + tlVersionIntroduced := List("2.12", "2.13", "3").map(_ -> "1.1.0").toMap + ) lazy val macroSettings = Seq( libraryDependencies ++= { diff --git a/project/plugins.sbt b/project/plugins.sbt index 7c527a0..527ded8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,6 @@ // format: off -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") // https://github.com/scalameta/sbt-scalafmt/releases -addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.15.0") // https://github.com/scala-js/scala-js/releases/ -addSbtPlugin("org.typelevel" % "sbt-typelevel" % "0.6.5") // https://github.com/typelevel/sbt-typelevel/releases +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") // https://github.com/scalameta/sbt-scalafmt/releases +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.15.0") // https://github.com/scala-js/scala-js/releases/ +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.17") // https://github.com/scala-native/scala-native/releases +addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") // https://github.com/portable-scala/sbt-crossproject/releases +addSbtPlugin("org.typelevel" % "sbt-typelevel" % "0.6.5") // https://github.com/typelevel/sbt-typelevel/releases From bd4b988c08c929c3a2c9ac692161fe9843fccc5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 31 Jan 2024 22:30:34 +0200 Subject: [PATCH 2/3] update githubWorkflows --- .github/workflows/ci.yml | 42 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dce37e5..02f5187 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: os: [ubuntu-latest] scala: [3, 2.13, 2.12] java: [temurin@8, temurin@17] - project: [rootJS, rootJVM] + project: [rootJS, rootJVM, rootNative] exclude: - scala: 3 java: temurin@17 @@ -38,6 +38,8 @@ jobs: java: temurin@17 - project: rootJS java: temurin@17 + - project: rootNative + java: temurin@17 runs-on: ${{ matrix.os }} timeout-minutes: 60 steps: @@ -83,6 +85,10 @@ jobs: if: matrix.project == 'rootJS' run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/scalaJSLinkerResult + - name: nativeLink + if: matrix.project == 'rootNative' + run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/nativeLink + - name: Test run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' test @@ -96,11 +102,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p enclosure/js/target enclosure/jvm/target project/target + run: mkdir -p enclosure/js/target enclosure/native/target enclosure/jvm/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar enclosure/js/target enclosure/jvm/target project/target + run: tar cf targets.tar enclosure/js/target enclosure/native/target enclosure/jvm/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') @@ -170,6 +176,16 @@ jobs: tar xf targets.tar rm targets.tar + - name: Download target directories (3, rootNative) + uses: actions/download-artifact@v4 + with: + name: target-${{ matrix.os }}-${{ matrix.java }}-3-rootNative + + - name: Inflate target directories (3, rootNative) + run: | + tar xf targets.tar + rm targets.tar + - name: Download target directories (2.13, rootJS) uses: actions/download-artifact@v4 with: @@ -190,6 +206,16 @@ jobs: tar xf targets.tar rm targets.tar + - name: Download target directories (2.13, rootNative) + uses: actions/download-artifact@v4 + with: + name: target-${{ matrix.os }}-${{ matrix.java }}-2.13-rootNative + + - name: Inflate target directories (2.13, rootNative) + run: | + tar xf targets.tar + rm targets.tar + - name: Download target directories (2.12, rootJS) uses: actions/download-artifact@v4 with: @@ -210,6 +236,16 @@ jobs: tar xf targets.tar rm targets.tar + - name: Download target directories (2.12, rootNative) + uses: actions/download-artifact@v4 + with: + name: target-${{ matrix.os }}-${{ matrix.java }}-2.12-rootNative + + - name: Inflate target directories (2.12, rootNative) + run: | + tar xf targets.tar + rm targets.tar + - name: Import signing key if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == '' env: From e22aa007eec74d8184d643a91ad4a22759dbdf7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lor=C3=A1nd=20Szak=C3=A1cs?= Date: Wed, 31 Jan 2024 22:34:29 +0200 Subject: [PATCH 3/3] Disable snapshot releases --- build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sbt b/build.sbt index f702462..f1ac2f0 100644 --- a/build.sbt +++ b/build.sbt @@ -54,6 +54,7 @@ ThisBuild / tlCiHeaderCheck := true ThisBuild / tlCiScalafmtCheck := true ThisBuild / tlCiScalafixCheck := false ThisBuild / tlCiMimaBinaryIssueCheck := true +ThisBuild / tlCiReleaseBranches := List.empty // we do not release snapshot versions //============================================================================= //============================== Project details ==============================