From 2013165eaeaed5d40e2569db923ffb343f91b90c Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Fri, 23 Feb 2024 15:19:07 +0100 Subject: [PATCH] Update to Scala 3 toolchain Co-Authored-By: Alexandre Archambault --- build.sc | 217 ++++++------------ ...KernelTestsTwoStepStartupDefinitions.scala | 2 +- .../src/main/scala/almond/Options.scala | 1 + .../main/scala/almond/integration/Tests.scala | 30 ++- .../main/scala-3/almond/logger/Logger.scala | 10 - project/deps.sc | 39 ++-- project/settings.sc | 28 --- 7 files changed, 105 insertions(+), 222 deletions(-) diff --git a/build.sc b/build.sc index 1f1d8c267..2f3009bef 100644 --- a/build.sc +++ b/build.sc @@ -29,6 +29,7 @@ import java.nio.file.FileSystems import coursier.getcs.GetCs import io.github.alexarchambault.millnativeimage.upload.Upload import mill._, scalalib._ +import mill.scalalib.api.ZincWorkerUtil.isScala3 import mill.contrib.bloop.Bloop import _root_.scala.concurrent.duration._ import _root_.scala.util.Properties @@ -41,16 +42,18 @@ trait LoggerScala2Macros extends Cross.Module[String] with AlmondModule { def crossScalaVersion = crossValue def ivyDeps = T { val sv = scalaVersion() - Agg(Deps.scalaReflect(sv)) + if (isScala3(sv)) Agg.empty[Dep] else Agg(Deps.scalaReflect(sv)) } } trait Logger extends Cross.Module[String] with AlmondModule { def crossScalaVersion = crossValue - def supports3 = true - def moduleDeps = Seq( - shared.`logger-scala2-macros`() - ) + def moduleDeps = + if (isScala3(crossScalaVersion)) Seq.empty + else + Seq( + shared.`logger-scala2-macros`() + ) def ivyDeps = T { val sv = scalaVersion() val scalaReflect = @@ -67,7 +70,7 @@ trait Channels extends Cross.Module[String] with AlmondModule with Mima { shared.logger() ) def ivyDeps = Agg( - Deps.fs2(crossScalaVersion), + Deps.fs2, Deps.jeromq ) object test extends CrossSbtModuleTests with AlmondTestModule @@ -79,12 +82,16 @@ trait Protocol extends Cross.Module[String] with AlmondModule { shared.channels() ) def ivyDeps = Agg( - Deps.jsoniterScalaCore.applyBinaryVersion213_3(scalaVersion()) - ) - def compileIvyDeps = Agg( - Deps.scalaReflect(scalaVersion()), - Deps.jsoniterScalaMacros.withConfiguration("provided") - ) + Deps.jsoniterScalaCore + ) + def compileIvyDeps = { + val maybeScalaReflect = + if (isScala3(crossScalaVersion)) Agg.empty[Dep] + else Agg(Deps.scalaReflect(crossScalaVersion)) + maybeScalaReflect ++ Agg( + Deps.jsoniterScalaMacros.withConfiguration("provided") + ) + } object test extends CrossSbtModuleTests with AlmondTestModule } @@ -101,7 +108,7 @@ trait Interpreter extends Cross.Module[String] with AlmondModule { def ivyDeps = Agg( Deps.collectionCompat, Deps.fansi, - Deps.scalatags.applyBinaryVersion213_3(scalaVersion()), + Deps.scalatags, Deps.slf4jNop ) object test extends CrossSbtModuleTests with AlmondTestModule @@ -116,10 +123,10 @@ trait Kernel extends Cross.Module[String] with AlmondModule { Deps.jsoniterScalaMacros ) def ivyDeps = Agg( - Deps.caseAppAnnotations.withDottyCompat(crossScalaVersion), + Deps.caseAppAnnotations, Deps.collectionCompat, Deps.coursierApi, - Deps.fs2(crossScalaVersion) + Deps.fs2 ) object test extends CrossSbtModuleTests with AlmondTestModule { def moduleDeps = super.moduleDeps ++ Seq( @@ -151,22 +158,13 @@ trait ScalaKernelApi extends Cross.Module[String] with AlmondModule with Depende def crossScalaVersion = crossValue def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) def crossFullScalaVersion = true - def moduleDeps = - if (crossScalaVersion.startsWith("3.")) - Seq( - shared.`interpreter-api`(ScalaVersions.scala3Compat), - scala.`jupyter-api`(ScalaVersions.scala3Compat) - ) - else - Seq( - shared.`interpreter-api`(), - scala.`jupyter-api`() - ) + def moduleDeps = Seq( + shared.`interpreter-api`(), + scala.`jupyter-api`() + ) def ivyDeps = Agg( - Deps.ammoniteCompiler(crossScalaVersion) - .exclude(("org.slf4j", "slf4j-api")), - Deps.ammoniteReplApi(crossScalaVersion) - .exclude(("org.slf4j", "slf4j-api")), + Deps.ammoniteCompiler.exclude(("org.slf4j", "slf4j-api")), + Deps.ammoniteReplApi.exclude(("org.slf4j", "slf4j-api")), Deps.jvmRepr, Deps.coursierApi.exclude(("org.slf4j", "slf4j-api")), Deps.collectionCompat @@ -200,24 +198,13 @@ trait ScalaInterpreter extends Cross.Module[String] with AlmondModule with Bloop def crossScalaVersion = crossValue def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) def crossFullScalaVersion = true - def supports3 = true - def moduleDeps = - if (crossScalaVersion.startsWith("3.")) - Seq( - shared.interpreter(ScalaVersions.scala3Compat), - scala.`coursier-logger`(ScalaVersions.scala3Compat), - scala.`scala-kernel-api-helper`(), - scala.`shared-directives`(ScalaVersions.scala3Compat), - scala.`toree-hooks`(ScalaVersions.binary(crossScalaVersion)) - ) - else - Seq( - shared.interpreter(), - scala.`coursier-logger`(), - scala.`scala-kernel-api`(), - scala.`shared-directives`(), - scala.`toree-hooks`(ScalaVersions.binary(crossScalaVersion)) - ) + def moduleDeps = Seq( + shared.interpreter(), + scala.`coursier-logger`(), + scala.`scala-kernel-api`(), + scala.`shared-directives`(), + scala.`toree-hooks`(ScalaVersions.binary(crossScalaVersion)) + ) def ivyDeps = T { val metabrowse = if (crossScalaVersion.startsWith("2.")) @@ -237,8 +224,8 @@ trait ScalaInterpreter extends Cross.Module[String] with AlmondModule with Bloop Deps.dependencyInterface, Deps.directiveHandler, Deps.jansi, - Deps.ammoniteCompiler(crossScalaVersion).exclude(("net.java.dev.jna", "jna")), - Deps.ammoniteRepl(crossScalaVersion).exclude(("net.java.dev.jna", "jna")) + Deps.ammoniteCompiler.exclude(("net.java.dev.jna", "jna")), + Deps.ammoniteRepl.exclude(("net.java.dev.jna", "jna")) ) } def scalacOptions = super.scalacOptions() ++ { @@ -252,29 +239,11 @@ trait ScalaInterpreter extends Cross.Module[String] with AlmondModule with Bloop val rx = if (crossScalaVersion.startsWith("2.12.")) Seq(scala.`almond-rx`()) else Nil - val kernel = Seq( - if (crossScalaVersion.startsWith("3.")) - shared.kernel(ScalaVersions.scala3Compat).test - else - shared.kernel().test - ) - val testKit = Seq( - if (crossScalaVersion.startsWith("3.")) - shared.`test-kit`(ScalaVersions.scala3Compat) - else - shared.`test-kit`() - ) - val testDefs = Seq( - if (crossScalaVersion.startsWith("3.")) - scala.`test-definitions`(ScalaVersions.scala3Compat) - else - scala.`test-definitions`() + super.moduleDeps ++ rx ++ Seq( + shared.`test-kit`(), + shared.kernel().test, + scala.`test-definitions`() ) - super.moduleDeps ++ - testKit ++ - kernel ++ - rx ++ - testDefs } def ivyDeps = super.ivyDeps() ++ Seq( Deps.caseApp @@ -287,19 +256,12 @@ trait ScalaKernel extends Cross.Module[String] with AlmondModule with ExternalSo def crossScalaVersion = crossValue def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) def crossFullScalaVersion = true - def moduleDeps = - if (crossScalaVersion.startsWith("3.")) - Seq( - shared.kernel(ScalaVersions.scala3Compat), - scala.`scala-interpreter`() - ) - else - Seq( - shared.kernel(), - scala.`scala-interpreter`() - ) + def moduleDeps = Seq( + shared.kernel(), + scala.`scala-interpreter`() + ) def ivyDeps = Agg( - Deps.caseApp.withDottyCompat(crossScalaVersion), + Deps.caseApp, Deps.classPathUtil, Deps.scalafmtDynamic.withDottyCompat(crossScalaVersion) ) @@ -341,9 +303,7 @@ trait ScalaKernel extends Cross.Module[String] with AlmondModule with ExternalSo transitiveSourceJars() ++ externalSources() def launcherSharedClassPath = { - val mod: AlmondModule with ExternalSources = - if (crossScalaVersion.startsWith("3.")) scala.`scala-kernel-api-helper`() - else scala.`scala-kernel-api`() + val mod: AlmondModule with ExternalSources = scala.`scala-kernel-api`() mod.transitiveJars() ++ mod.unmanagedClasspath() ++ mod.resolvedRunIvyDeps() ++ @@ -367,24 +327,8 @@ trait ScalaKernel extends Cross.Module[String] with AlmondModule with ExternalSo def mainClass = Some("almond.ScalaKernel") } -// For Scala 3 only. This publishes modules like scala-kernel_3.0.2 that -// depend on the more complex 2.13-targeting-scala-3 module like -// scala-kernel-cross-3.0.2_2.13.7. The former follows the same name pattern -// as their Scala 2 counterparts, and are more convenient to write down for end users. -trait ScalaKernelHelper extends Cross.Module[String] with AlmondModule with Bloop.Module { - def crossScalaVersion = crossValue - def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) - def crossFullScalaVersion = true - def supports3 = true - def artifactName = super.artifactName().stripSuffix("-helper") - def moduleDeps = Seq( - scala.`scala-kernel`() - ) -} - trait CoursierLogger extends Cross.Module[String] with AlmondModule { def crossScalaVersion = crossValue - def supports3 = true def moduleDeps = super.moduleDeps ++ Seq( shared.`interpreter-api`(), shared.logger() @@ -392,16 +336,15 @@ trait CoursierLogger extends Cross.Module[String] with AlmondModule { def ivyDeps = super.ivyDeps() ++ Agg( Deps.collectionCompat, Deps.coursierApi, - Deps.scalatags.applyBinaryVersion213_3(scalaVersion()) + Deps.scalatags ) } trait SharedDirectives extends Cross.Module[String] with AlmondModule { def crossScalaVersion = crossValue - def supports3 = true def ivyDeps = super.ivyDeps() ++ Agg( Deps.directiveHandler, - Deps.jsoniterScalaCore.applyBinaryVersion213_3(scalaVersion()) + Deps.jsoniterScalaCore ) def compileIvyDeps = Agg( Deps.jsoniterScalaMacros @@ -410,7 +353,6 @@ trait SharedDirectives extends Cross.Module[String] with AlmondModule { trait Launcher extends AlmondSimpleModule with BootstrapLauncher with PropertyFile with Bloop.Module { - def supports3 = true private def sv = ScalaVersions.scala3Latest def scalaVersion = sv def moduleDeps = Seq( @@ -440,18 +382,6 @@ trait Launcher extends AlmondSimpleModule with BootstrapLauncher with PropertyFi } } -trait ScalaKernelApiHelper extends Cross.Module[String] with AlmondModule with ExternalSources - with Bloop.Module { - def crossScalaVersion = crossValue - def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) - def crossFullScalaVersion = true - def supports3 = true - def artifactName = super.artifactName().stripSuffix("-helper") - def moduleDeps = Seq( - scala.`scala-kernel-api`() - ) -} - trait AlmondScalaPy extends Cross.Module[String] with AlmondModule with Mima { def crossScalaVersion = crossValue def ivyDeps = Agg( @@ -478,7 +408,7 @@ trait Echo extends Cross.Module[String] with AlmondModule { shared.kernel() ) def ivyDeps = Agg( - Deps.caseApp.withDottyCompat(crossScalaVersion) + Deps.caseApp ) def propertyFilePath = "almond/echo.properties" object test extends this.CrossSbtModuleTests with AlmondTestModule { @@ -490,14 +420,13 @@ trait Echo extends Cross.Module[String] with AlmondModule { trait ToreeHooks extends Cross.Module[String] with AlmondModule { def crossScalaVersion = crossValue - def supports3 = true def compileModuleDeps = super.compileModuleDeps ++ Seq( scala.`scala-kernel-api`(ScalaVersions.binary(crossScalaVersion)) ) } object shared extends Module { - object `logger-scala2-macros` extends Cross[LoggerScala2Macros](ScalaVersions.binaries) + object `logger-scala2-macros` extends Cross[LoggerScala2Macros](ScalaVersions.scala2Binaries) object logger extends Cross[Logger](ScalaVersions.binaries) object channels extends Cross[Channels](ScalaVersions.binaries) object protocol extends Cross[Protocol](ScalaVersions.binaries) @@ -512,15 +441,11 @@ object shared extends Module { object scala extends Module { implicit def millModuleBasePath: define.Ctx.BasePath = define.Ctx.BasePath(super.millModuleBasePath.value / os.up / "scala") - object `jupyter-api` extends Cross[JupyterApi](ScalaVersions.binaries) - object `scala-kernel-api` extends Cross[ScalaKernelApi](ScalaVersions.all) - object `scala-kernel-api-helper` - extends Cross[ScalaKernelApiHelper](ScalaVersions.all.filter(_.startsWith("3."))) + object `jupyter-api` extends Cross[JupyterApi](ScalaVersions.binaries) + object `scala-kernel-api` extends Cross[ScalaKernelApi](ScalaVersions.all) object `scala-interpreter` extends Cross[ScalaInterpreter](ScalaVersions.all) object `scala-kernel` extends Cross[ScalaKernel](ScalaVersions.all) - object `scala-kernel-helper` - extends Cross[ScalaKernelHelper](ScalaVersions.all.filter(_.startsWith("3."))) - object `coursier-logger` extends Cross[CoursierLogger](ScalaVersions.binaries) + object `coursier-logger` extends Cross[CoursierLogger](ScalaVersions.binaries) object `shared-directives` extends Cross[SharedDirectives]("2.12.15" +: ScalaVersions.binaries) object launcher extends Launcher @@ -568,15 +493,9 @@ trait Examples extends SbtModule { trait TestKit extends Cross.Module[String] with CrossSbtModule with Bloop.Module { def crossScalaVersion = crossValue def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) - def moduleDeps = - if (crossScalaVersion.startsWith("3.")) - Seq( - shared.interpreter(ScalaVersions.scala3Compat) - ) - else - Seq( - shared.interpreter() - ) + def moduleDeps = Seq( + shared.interpreter() + ) def ivyDeps = super.ivyDeps() ++ Agg( Deps.expecty, Deps.osLib, @@ -586,7 +505,6 @@ trait TestKit extends Cross.Module[String] with CrossSbtModule with Bloop.Module } trait TestDefinitions extends Cross.Module[String] with AlmondUnpublishedModule with Bloop.Module { - def supports3 = true def crossScalaVersion = crossValue def skipBloop = !ScalaVersions.binaries.contains(crossScalaVersion) @@ -596,7 +514,7 @@ trait TestDefinitions extends Cross.Module[String] with AlmondUnpublishedModule def ivyDeps = T { Agg( Deps.coursierApi, - Deps.upickleCompat(scalaVersion()) + Deps.upickle ) } } @@ -604,13 +522,10 @@ trait TestDefinitions extends Cross.Module[String] with AlmondUnpublishedModule trait KernelLocalRepo extends Cross.Module[String] with LocalRepo { def testScalaVersion = crossValue def stubsModules = { - val extra = - if (testScalaVersion.startsWith("2.")) Nil - else - Seq( - scala.`scala-kernel-helper`(testScalaVersion), - scala.`scala-kernel-api-helper`(testScalaVersion) - ) + val scalaVersionSpecific = + if (isScala3(testScalaVersion)) Seq.empty + else Seq(shared.`logger-scala2-macros`(ScalaVersions.binary(testScalaVersion))) + Seq( shared.kernel(ScalaVersions.binary(testScalaVersion)), shared.interpreter(ScalaVersions.binary(testScalaVersion)), @@ -618,7 +533,6 @@ trait KernelLocalRepo extends Cross.Module[String] with LocalRepo { shared.protocol(ScalaVersions.binary(testScalaVersion)), shared.channels(ScalaVersions.binary(testScalaVersion)), shared.logger(ScalaVersions.binary(testScalaVersion)), - shared.`logger-scala2-macros`(ScalaVersions.binary(testScalaVersion)), scala.`scala-kernel`(testScalaVersion), scala.`scala-kernel-api`(testScalaVersion), scala.`jupyter-api`(ScalaVersions.binary(testScalaVersion)), @@ -632,9 +546,8 @@ trait KernelLocalRepo extends Cross.Module[String] with LocalRepo { shared.`interpreter-api`(ScalaVersions.binary(ScalaVersions.scala3Latest)), shared.protocol(ScalaVersions.binary(ScalaVersions.scala3Latest)), shared.channels(ScalaVersions.binary(ScalaVersions.scala3Latest)), - shared.logger(ScalaVersions.binary(ScalaVersions.scala3Latest)), - shared.`logger-scala2-macros`(ScalaVersions.binary(ScalaVersions.scala3Latest)) - ) ++ extra + shared.logger(ScalaVersions.binary(ScalaVersions.scala3Latest)) + ) ++ scalaVersionSpecific } def version = scala.`scala-kernel`(testScalaVersion).publishVersion() } @@ -713,7 +626,7 @@ object docs extends ScalaModule with AlmondRepositories { val ver = scala.`scala-kernel-api`(scalaVersion0).publishVersion() val latestRelease = settings.latestTaggedVersion - val ammVer = Deps.ammoniteReplApi(scalaVersion0).dep.version + val ammVer = Deps.ammoniteReplApi.dep.version val scalaVer = scalaVersion0 val isSnapshot = ver.endsWith("SNAPSHOT") diff --git a/modules/scala/integration/src/main/scala/almond/integration/KernelTestsTwoStepStartupDefinitions.scala b/modules/scala/integration/src/main/scala/almond/integration/KernelTestsTwoStepStartupDefinitions.scala index 18f6f9372..9550314c9 100644 --- a/modules/scala/integration/src/main/scala/almond/integration/KernelTestsTwoStepStartupDefinitions.scala +++ b/modules/scala/integration/src/main/scala/almond/integration/KernelTestsTwoStepStartupDefinitions.scala @@ -17,7 +17,7 @@ abstract class KernelTestsTwoStepStartupDefinitions extends AlmondFunSuite { |val sv = scala.util.Properties.versionNumberString |""".stripMargin, "import scala.compiletime.ops.*" + ls + ls + - """sv: String = "2.13.11"""" + """sv: String = "2.13.10"""" ) } } diff --git a/modules/scala/scala-kernel/src/main/scala/almond/Options.scala b/modules/scala/scala-kernel/src/main/scala/almond/Options.scala index 833339faf..014f0f8ef 100644 --- a/modules/scala/scala-kernel/src/main/scala/almond/Options.scala +++ b/modules/scala/scala-kernel/src/main/scala/almond/Options.scala @@ -10,6 +10,7 @@ import almond.kernel.MessageFile import almond.kernel.install.{Options => InstallOptions} import almond.protocol.KernelInfo import caseapp._ +import caseapp.core.Scala3Helpers._ import caseapp.core.help.Help import com.github.plokhotnyuk.jsoniter_scala.core.readFromArray import coursierapi.{Dependency, Module} diff --git a/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala b/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala index e592425d3..6b4866e97 100644 --- a/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala +++ b/modules/scala/test-definitions/src/main/scala/almond/integration/Tests.scala @@ -1201,7 +1201,13 @@ object Tests { "zipAll", "zipWithIndex" ) - else + else { + // not sure why we get different results here + val twoStepRunnerExtra = + if (runner.differedStartUp) + Nil + else + Seq("Maximized") Seq( "!=", "++", @@ -1214,8 +1220,10 @@ object Tests { ":::", ":\\", "==", - "CombinationsItr", - "Maximized", + "CombinationsItr" + ) ++ + twoStepRunnerExtra ++ + Seq( "PermutationsItr", "addString", "aggregate", @@ -1379,6 +1387,7 @@ object Tests { "zipAll", "zipWithIndex" ) + } val matches = res.flatMap(_.matches) if (matches != expectedMatches) { pprint.err.log(expectedMatches) @@ -1702,7 +1711,13 @@ object Tests { ("zipAll", "Method"), ("zipWithIndex", "Method") ) - else + else { + // not sure why we get different results here + val twoStepRunnerExtra = + if (runner.differedStartUp) + Nil + else + Seq(("Maximized", "Object")) Seq( ("!=", "Method"), ("++", "Method"), @@ -1715,8 +1730,10 @@ object Tests { (":::", "Method"), (":\\", "Method"), ("==", "Method"), - ("CombinationsItr", "Object"), - ("Maximized", "Object"), + ("CombinationsItr", "Object") + ) ++ + twoStepRunnerExtra ++ + Seq( ("PermutationsItr", "Object"), ("addString", "Method"), ("addString", "Method"), @@ -1900,6 +1917,7 @@ object Tests { ("zipAll", "Method"), ("zipWithIndex", "Method") ) + } val metadata = ujson.read(res.head.metadata.value) val types = metadata.obj("_jupyter_types_experimental") diff --git a/modules/shared/logger/src/main/scala-3/almond/logger/Logger.scala b/modules/shared/logger/src/main/scala-3/almond/logger/Logger.scala index 1ae8ad961..a3524b1b2 100644 --- a/modules/shared/logger/src/main/scala-3/almond/logger/Logger.scala +++ b/modules/shared/logger/src/main/scala-3/almond/logger/Logger.scala @@ -2,7 +2,6 @@ package almond.logger import almond.logger.internal._ -import scala.language.experimental.macros import scala.quoted._ final case class Logger(underlying: ActualLogger) { @@ -10,15 +9,6 @@ final case class Logger(underlying: ActualLogger) { def prefix(prefix: String): Logger = Logger(underlying.prefix(prefix)) - def error(message: String): Unit = macro LoggerMacros.error - def error(message: String, throwable: Throwable): Unit = macro LoggerMacros.errorEx - def warn(message: String): Unit = macro LoggerMacros.warn - def warn(message: String, throwable: Throwable): Unit = macro LoggerMacros.warnEx - def info(message: String): Unit = macro LoggerMacros.info - def info(message: String, throwable: Throwable): Unit = macro LoggerMacros.infoEx - def debug(message: String): Unit = macro LoggerMacros.debug - def debug(message: String, throwable: Throwable): Unit = macro LoggerMacros.debugEx - inline def error(inline message: String): Unit = ${ Logger.errorImpl('underlying, 'message, 'null) } inline def error(inline message: String, inline throwable: Throwable): Unit = diff --git a/project/deps.sc b/project/deps.sc index 96f8d0bc7..dbae6ea20 100644 --- a/project/deps.sc +++ b/project/deps.sc @@ -2,7 +2,7 @@ import mill._ import mill.scalalib._ object Versions { - def ammonite = "3.0.0-M0-56-1bcbe7f6" + def ammonite = "3.0.0-M0-58-9ccdff7c" def caseApp = "2.1.0-M26" def coursier = "2.1.9" def jsoniterScala = "2.13.5" @@ -31,16 +31,9 @@ implicit class DepOps(private val dep: Dep) { } object Deps { - def ammoniteCompiler(sv: String) = - ivy"com.lihaoyi:ammonite-compiler_$sv:${Versions.ammonite}" - def ammoniteRepl(sv: String) = - if (sv.startsWith("2.")) ivy"com.lihaoyi:ammonite-repl_$sv:${Versions.ammonite}" - else - ivy"com.lihaoyi:ammonite-cross-$sv-repl_${ScalaVersions.cross2_3Version(sv)}:${Versions.ammonite}" - def ammoniteReplApi(sv: String) = - if (sv.startsWith("2.")) ivy"com.lihaoyi:ammonite-repl-api_$sv:${Versions.ammonite}" - else - ivy"com.lihaoyi:ammonite-cross-$sv-repl-api_${ScalaVersions.cross2_3Version(sv)}:${Versions.ammonite}" + def ammoniteCompiler = ivy"com.lihaoyi:::ammonite-compiler:${Versions.ammonite}" + def ammoniteRepl = ivy"com.lihaoyi:::ammonite-repl:${Versions.ammonite}" + def ammoniteReplApi = ivy"com.lihaoyi:::ammonite-repl-api:${Versions.ammonite}" def ammoniteSpark = ivy"sh.almond::ammonite-spark:0.14.0-RC8" def caseAppAnnotations = ivy"com.github.alexarchambault::case-app-annotations:${Versions.caseApp}" def caseApp = ivy"com.github.alexarchambault::case-app:${Versions.caseApp}" @@ -53,10 +46,9 @@ object Deps { def directiveHandler = ivy"io.github.alexarchambault.scala-cli::directive-handler:0.1.4" def expecty = ivy"com.eed3si9n.expecty::expecty:0.16.0" def fansi = ivy"com.lihaoyi::fansi:0.5.0" - def fs2(sv: String) = - if (sv.startsWith("2.")) ivy"co.fs2::fs2-core:3.9.4" else ivy"co.fs2:fs2-core_2.13:3.9.4" - def jansi = ivy"org.fusesource.jansi:jansi:2.4.1" - def jeromq = ivy"org.zeromq:jeromq:0.5.4" + def fs2 = ivy"co.fs2::fs2-core:3.9.4" + def jansi = ivy"org.fusesource.jansi:jansi:2.4.1" + def jeromq = ivy"org.zeromq:jeromq:0.5.4" def jsoniterScalaCore = ivy"com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-core:${Versions.jsoniterScala}" def jsoniterScalaMacros = @@ -79,20 +71,16 @@ object Deps { def testUtil = ivy"io.github.alexarchambault::test-util:0.1.3" def upickle = ivy"com.lihaoyi::upickle:3.1.4" // trying to use the same version as Ammonite, to avoid bin compat issues - def upickleCompat(sv: String) = - // also using the 2.13 version in Scala 3, as that's the one that Ammonite pulls (the Scala 3 one creates bin compat issues too) - if (sv.startsWith("2.")) ivy"com.lihaoyi::upickle:3.1.4" - else ivy"com.lihaoyi:upickle_2.13:3.1.4" def utest = ivy"com.lihaoyi::utest:0.8.3" } object ScalaVersions { - def scala3Latest = "3.3.1" - def scala3Compat = "3.3.0" - def cross2_3Version(sv: String) = "2.13.11" - def scala213 = "2.13.12" - def scala212 = "2.12.18" - val binaries = Seq(scala3Compat, scala213, scala212) + def scala3Latest = "3.3.1" + def scala3Compat = "3.3.0" + def scala213 = "2.13.12" + def scala212 = "2.12.18" + val binaries = Seq(scala3Compat, scala213, scala212) + val scala2Binaries = Seq(scala213, scala212) val all = Seq( scala3Latest, scala3Compat, @@ -110,4 +98,5 @@ object ScalaVersions { if (sv.startsWith("2.12.")) scala212 else if (sv.startsWith("2.13.")) scala213 else scala3Compat + } diff --git a/project/settings.sc b/project/settings.sc index df522a223..1217eb4ea 100644 --- a/project/settings.sc +++ b/project/settings.sc @@ -157,31 +157,6 @@ trait AlmondArtifactName extends SbtModule { .mkString("-") } -trait AlmondScala2Or3Module extends CrossSbtModule { - def crossScalaVersion: String - def supports3: Boolean = false - private def actualScalaVersion = - if (crossScalaVersion.startsWith("3.") && !supports3) - ScalaVersions.cross2_3Version(crossScalaVersion) - else crossScalaVersion - def scalaVersion = T(actualScalaVersion) - def useCrossSuffix = T { - crossScalaVersion.startsWith("3.") && !scalaVersion().startsWith("3.") - } - def artifactName = T { - val suffix = if (useCrossSuffix()) s"-cross-$crossScalaVersion" else "" - super.artifactName() + suffix - } - def scalacOptions = T { - val tastyReaderOptions = - if (crossScalaVersion.startsWith("3.") && !supports3) Seq("-Ytasty-reader") - else Nil - tastyReaderOptions - } - override def scalaVersionDirectoryNames = - ZincWorkerUtil.matchingVersions(actualScalaVersion) -} - trait AlmondScalacOptions extends ScalaModule { def scalacOptions = T { // see http://tpolecat.github.io/2017/04/25/scalac-flags.html @@ -214,7 +189,6 @@ trait AlmondUnpublishedModule with AlmondRepositories with TransitiveSources with AlmondArtifactName - with AlmondScala2Or3Module with AlmondScalacOptions trait AlmondModule @@ -223,7 +197,6 @@ trait AlmondModule with AlmondPublishModule with TransitiveSources with AlmondArtifactName - with AlmondScala2Or3Module with PublishLocalNoFluff with AlmondScalacOptions { @@ -267,7 +240,6 @@ trait AlmondTestModule with TestModule with AlmondRepositories with AlmondScalacOptions { - // with AlmondScala2Or3Module { // originally based on https://github.com/com-lihaoyi/mill/blob/3335d2a2f7f33766a680e30df6a7d0dc0fbe08b3/scalalib/src/mill/scalalib/TestModule.scala#L80-L146 // goal here is to use a coursier bootstrap rather than a manifest JAR when testUseArgsFile is true