mirror of https://github.com/sbt/sbt.git
Use binary compiler bridge
Problem ------- Starting Scala 2.13.12, Scala 2 has in-sourced the compiler bridge implementtion, which hopefully will be kept up to date more than the ones in Zinc. Solution -------- This switches to using the pre-compiled compiler bridge for >=2.13.12.
This commit is contained in:
parent
edac172780
commit
b1e9308ebe
|
|
@ -715,7 +715,9 @@ object Defaults extends BuildCommon {
|
||||||
clean := clean.dependsOn(cleanIvy).value,
|
clean := clean.dependsOn(cleanIvy).value,
|
||||||
scalaCompilerBridgeBinaryJar := Def.settingDyn {
|
scalaCompilerBridgeBinaryJar := Def.settingDyn {
|
||||||
val sv = scalaVersion.value
|
val sv = scalaVersion.value
|
||||||
if (ScalaArtifacts.isScala3(sv)) fetchBridgeBinaryJarTask(sv)
|
if (ScalaArtifacts.isScala3(sv) || VersionNumber(sv)
|
||||||
|
.matchesSemVer(SemanticSelector(s"=2.13 >=${ZincLmUtil.scala2SbtBridgeStart}")))
|
||||||
|
fetchBridgeBinaryJarTask(sv)
|
||||||
else Def.task[Option[File]](None)
|
else Def.task[Option[File]](None)
|
||||||
}.value,
|
}.value,
|
||||||
scalaCompilerBridgeSource := ZincLmUtil.getDefaultBridgeSourceModule(scalaVersion.value),
|
scalaCompilerBridgeSource := ZincLmUtil.getDefaultBridgeSourceModule(scalaVersion.value),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
lazy val check = taskKey[Unit]("")
|
lazy val check = taskKey[Unit]("")
|
||||||
lazy val compile2 = taskKey[Unit]("")
|
lazy val compile2 = taskKey[Unit]("")
|
||||||
lazy val scala212 = "2.12.18"
|
lazy val scala212 = "2.12.18"
|
||||||
|
lazy val scala213 = "2.13.12"
|
||||||
|
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
.aggregate(foo, bar, client)
|
.aggregate(foo, bar, client)
|
||||||
|
|
@ -11,7 +12,7 @@ lazy val root = (project in file("."))
|
||||||
|
|
||||||
lazy val foo = project
|
lazy val foo = project
|
||||||
.settings(
|
.settings(
|
||||||
crossScalaVersions := Seq(scala212, "2.13.11"),
|
crossScalaVersions := Seq(scala212, scala213),
|
||||||
libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.0",
|
libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.0",
|
||||||
|
|
||||||
check := {
|
check := {
|
||||||
|
|
@ -43,7 +44,7 @@ lazy val bar = project
|
||||||
|
|
||||||
lazy val baz = project
|
lazy val baz = project
|
||||||
.settings(
|
.settings(
|
||||||
crossScalaVersions := Seq("2.13.11"),
|
crossScalaVersions := Seq(scala213),
|
||||||
check := {
|
check := {
|
||||||
// This tests that +baz/check will respect bar's crossScalaVersions and not switch
|
// This tests that +baz/check will respect bar's crossScalaVersions and not switch
|
||||||
val x = (LocalProject("bar") / scalaVersion).value
|
val x = (LocalProject("bar") / scalaVersion).value
|
||||||
|
|
@ -54,7 +55,7 @@ lazy val baz = project
|
||||||
|
|
||||||
lazy val client = project
|
lazy val client = project
|
||||||
.settings(
|
.settings(
|
||||||
crossScalaVersions := Seq(scala212, "2.13.11"),
|
crossScalaVersions := Seq(scala212, scala213),
|
||||||
check := (Compile / compile).value,
|
check := (Compile / compile).value,
|
||||||
compile2 := (Compile / compile).value,
|
compile2 := (Compile / compile).value,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
## test + with command or alias
|
## test + with command or alias
|
||||||
> clean
|
> clean
|
||||||
## for command cross building you do need crossScalaVerions on root
|
## for command cross building you do need crossScalaVerions on root
|
||||||
> set root/crossScalaVersions := Seq("2.12.18", "2.13.11")
|
> set root/crossScalaVersions := Seq("2.12.18", "2.13.12")
|
||||||
> + build
|
> + build
|
||||||
$ exists foo/target/scala-2.12
|
$ exists foo/target/scala-2.12
|
||||||
$ exists foo/target/scala-2.13
|
$ exists foo/target/scala-2.13
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
scalaVersion := "2.12.18"
|
scalaVersion := "2.12.18"
|
||||||
crossScalaVersions := List("2.12.18", "2.13.11")
|
crossScalaVersions := List("2.12.18", "2.13.12")
|
||||||
|
|
||||||
val setLastModified = taskKey[Unit]("Sets the last modified time for classfiles")
|
val setLastModified = taskKey[Unit]("Sets the last modified time for classfiles")
|
||||||
setLastModified := {
|
setLastModified := {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
lazy val scala212 = "2.12.18"
|
lazy val scala212 = "2.12.18"
|
||||||
lazy val scala213 = "2.13.11"
|
lazy val scala213 = "2.13.12"
|
||||||
|
|
||||||
ThisBuild / crossScalaVersions := Seq(scala212, scala213)
|
ThisBuild / crossScalaVersions := Seq(scala212, scala213)
|
||||||
ThisBuild / scalaVersion := scala212
|
ThisBuild / scalaVersion := scala212
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ $ exists extras/target/scala-2.12
|
||||||
|
|
||||||
# test safe switching
|
# test safe switching
|
||||||
> clean
|
> clean
|
||||||
> ++ 2.13.11 -v compile
|
> ++ 2.13.12 -v compile
|
||||||
$ exists lib/target/scala-2.13
|
$ exists lib/target/scala-2.13
|
||||||
-$ exists lib/target/scala-2.12
|
-$ exists lib/target/scala-2.12
|
||||||
# -$ exists sbt-foo/target/scala-2.12
|
# -$ exists sbt-foo/target/scala-2.12
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
lazy val scala212 = "2.12.18"
|
lazy val scala212 = "2.12.18"
|
||||||
lazy val scala213 = "2.13.11"
|
lazy val scala213 = "2.13.12"
|
||||||
|
|
||||||
ThisBuild / scalaVersion := scala212
|
ThisBuild / scalaVersion := scala212
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
> clean
|
> clean
|
||||||
|
|
||||||
> ++2.13.11 compile
|
> ++2.13.12 compile
|
||||||
|
|
||||||
$ exists core/target/scala-2.13
|
$ exists core/target/scala-2.13
|
||||||
-$ exists module/target/scala-2.13
|
-$ exists module/target/scala-2.13
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import Parsers._
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
.settings(
|
.settings(
|
||||||
crossPaths := false,
|
crossPaths := false,
|
||||||
crossScalaVersions := Seq("2.12.18", "2.13.11"),
|
crossScalaVersions := Seq("2.12.18", "2.13.12"),
|
||||||
scalaVersion := "2.12.18",
|
scalaVersion := "2.12.18",
|
||||||
Compile / doc / scalacOptions += "-Xfatal-warnings",
|
Compile / doc / scalacOptions += "-Xfatal-warnings",
|
||||||
commands += Command.command("excludeB") { s =>
|
commands += Command.command("excludeB") { s =>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
lazy val scala212 = "2.12.18"
|
lazy val scala212 = "2.12.18"
|
||||||
lazy val scala213 = "2.13.11"
|
lazy val scala213 = "2.13.12"
|
||||||
ThisBuild / scalaVersion := scala212
|
ThisBuild / scalaVersion := scala212
|
||||||
|
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
scalaVersion := "2.13.11"
|
scalaVersion := "2.13.12"
|
||||||
|
|
||||||
// Send some bogus initial command so that it doesn't get stuck.
|
// Send some bogus initial command so that it doesn't get stuck.
|
||||||
// The task itself will still succeed.
|
// The task itself will still succeed.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
ThisBuild / version := "0.1.0-SNAPSHOT"
|
ThisBuild / version := "0.1.0-SNAPSHOT"
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
name := "asciiGraphWidthSpecs"
|
name := "asciiGraphWidthSpecs"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
ThisBuild / version := "0.1.0-SNAPSHOT"
|
ThisBuild / version := "0.1.0-SNAPSHOT"
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
name := "whatDependsOn"
|
name := "whatDependsOn"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
ThisBuild / version := "0.1.0-SNAPSHOT"
|
ThisBuild / version := "0.1.0-SNAPSHOT"
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
name := "whatDependsOn"
|
name := "whatDependsOn"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
scalaVersion := "2.13.11"
|
scalaVersion := "2.13.12"
|
||||||
csrConfiguration := csrConfiguration.value.withCache(target.value / "coursier-cache")
|
csrConfiguration := csrConfiguration.value.withCache(target.value / "coursier-cache")
|
||||||
|
|
||||||
libraryDependencies += "com.typesafe.play" %% "play-test" % "2.8.0-RC1" % Test // worked around in 2.8.0
|
libraryDependencies += "com.typesafe.play" %% "play-test" % "2.8.0-RC1" % Test // worked around in 2.8.0
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache"
|
ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache"
|
||||||
ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache"))
|
ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache"))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import xsbti.AppConfiguration
|
import xsbti.AppConfiguration
|
||||||
// ThisBuild / useCoursier := false
|
// ThisBuild / useCoursier := false
|
||||||
ThisBuild / organization := "com.example"
|
ThisBuild / organization := "com.example"
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / versionScheme := Some("semver-spec")
|
ThisBuild / versionScheme := Some("semver-spec")
|
||||||
ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache"
|
ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
libraryDependencies ++= Seq(
|
libraryDependencies ++= Seq(
|
||||||
"com.chuusai" %% "shapeless" % "2.3.3",
|
"com.chuusai" %% "shapeless" % "2.3.3",
|
||||||
// non-existing
|
// non-existing
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / scalacOptions += "-Ytasty-reader"
|
ThisBuild / scalacOptions += "-Ytasty-reader"
|
||||||
|
|
||||||
lazy val scala3code = project
|
lazy val scala3code = project
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
ThisBuild / scalaVersion := "3.1.3"
|
ThisBuild / scalaVersion := "3.1.3"
|
||||||
ThisBuild / scalacOptions += "-Ytasty-reader"
|
ThisBuild / scalacOptions += "-Ytasty-reader"
|
||||||
|
|
||||||
lazy val scala213 = "2.13.11"
|
lazy val scala213 = "2.13.12"
|
||||||
|
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
.aggregate(fooApp, fooCore, barApp, barCore)
|
.aggregate(fooApp, fooCore, barApp, barCore)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / version := "0.1.0-SNAPSHOT"
|
ThisBuild / version := "0.1.0-SNAPSHOT"
|
||||||
|
|
||||||
lazy val check = taskKey[Unit]("")
|
lazy val check = taskKey[Unit]("")
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ $ copy-file changes/A2.scala A.scala
|
||||||
> run 2
|
> run 2
|
||||||
|
|
||||||
> clean
|
> clean
|
||||||
> ++2.13.11!
|
> ++2.13.12!
|
||||||
|
|
||||||
$ copy-file changes/A1.scala A.scala
|
$ copy-file changes/A1.scala A.scala
|
||||||
> run 1
|
> run 1
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / usePipelining := true
|
ThisBuild / usePipelining := true
|
||||||
|
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / usePipelining := true
|
ThisBuild / usePipelining := true
|
||||||
|
|
||||||
lazy val root = (project in file("."))
|
lazy val root = (project in file("."))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
val hedgehogVersion = "0.10.0"
|
val hedgehogVersion = "0.10.0"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
ThisBuild / version := "0.1.0-SNAPSHOT"
|
ThisBuild / version := "0.1.0-SNAPSHOT"
|
||||||
ThisBuild / organization := "com.example"
|
ThisBuild / organization := "com.example"
|
||||||
ThisBuild / organizationName := "example"
|
ThisBuild / organizationName := "example"
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
libraryDependencies += "com.disneystreaming" %% "weaver-cats" % "0.8.3" % Test
|
libraryDependencies += "com.disneystreaming" %% "weaver-cats" % "0.8.3" % Test
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
ThisBuild / scalaVersion := "2.13.11"
|
ThisBuild / scalaVersion := "2.13.12"
|
||||||
|
|
||||||
libraryDependencies += "dev.zio" %% "zio-test" % "2.0.2" % Test
|
libraryDependencies += "dev.zio" %% "zio-test" % "2.0.2" % Test
|
||||||
libraryDependencies += "dev.zio" %% "zio-test-sbt" % "2.0.2" % Test
|
libraryDependencies += "dev.zio" %% "zio-test-sbt" % "2.0.2" % Test
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,10 @@ import sbt.librarymanagement.{
|
||||||
DependencyResolution,
|
DependencyResolution,
|
||||||
ModuleID,
|
ModuleID,
|
||||||
ScalaArtifacts,
|
ScalaArtifacts,
|
||||||
|
SemanticSelector,
|
||||||
UnresolvedWarningConfiguration,
|
UnresolvedWarningConfiguration,
|
||||||
UpdateConfiguration
|
UpdateConfiguration,
|
||||||
|
VersionNumber,
|
||||||
}
|
}
|
||||||
import sbt.librarymanagement.syntax._
|
import sbt.librarymanagement.syntax._
|
||||||
import xsbti.ArtifactInfo.SbtOrganization
|
import xsbti.ArtifactInfo.SbtOrganization
|
||||||
|
|
@ -25,6 +27,8 @@ import xsbti.compile.{ ClasspathOptions, ScalaInstance => XScalaInstance }
|
||||||
|
|
||||||
object ZincLmUtil {
|
object ZincLmUtil {
|
||||||
|
|
||||||
|
final val scala2SbtBridgeStart = "2.13.12"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiate a Scala compiler that is instrumented to analyze dependencies.
|
* Instantiate a Scala compiler that is instrumented to analyze dependencies.
|
||||||
* This Scala compiler is useful to create your own instance of incremental
|
* This Scala compiler is useful to create your own instance of incremental
|
||||||
|
|
@ -86,6 +90,11 @@ object ZincLmUtil {
|
||||||
if (ScalaArtifacts.isScala3(scalaVersion)) {
|
if (ScalaArtifacts.isScala3(scalaVersion)) {
|
||||||
ModuleID(ScalaArtifacts.Organization, "scala3-sbt-bridge", scalaVersion)
|
ModuleID(ScalaArtifacts.Organization, "scala3-sbt-bridge", scalaVersion)
|
||||||
.withConfigurations(Some(Compile.name))
|
.withConfigurations(Some(Compile.name))
|
||||||
|
} else if (VersionNumber(scalaVersion).matchesSemVer(
|
||||||
|
SemanticSelector(s"=2.13 >=$scala2SbtBridgeStart")
|
||||||
|
)) {
|
||||||
|
ModuleID(ScalaArtifacts.Organization, "scala2-sbt-bridge", scalaVersion)
|
||||||
|
.withConfigurations(Some(Compile.name))
|
||||||
} else {
|
} else {
|
||||||
val compilerBridgeId = scalaVersion match {
|
val compilerBridgeId = scalaVersion match {
|
||||||
case sc if sc startsWith "2.10." => "compiler-bridge_2.10"
|
case sc if sc startsWith "2.10." => "compiler-bridge_2.10"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue