From b0ee80e34ee09519ffa41267093ca2126737a949 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Thu, 1 Apr 2021 10:22:12 +0200 Subject: [PATCH 1/2] Use full Scala 3 version in crossTarget --- main/src/main/scala/sbt/Defaults.scala | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 5a491f973..e6fa6262c 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -692,6 +692,7 @@ object Defaults extends BuildCommon { crossSbtVersions := Vector((pluginCrossBuild / sbtVersion).value), crossTarget := makeCrossTarget( target.value, + scalaVersion.value, scalaBinaryVersion.value, (pluginCrossBuild / sbtBinaryVersion).value, sbtPlugin.value, @@ -772,8 +773,23 @@ object Defaults extends BuildCommon { else Vector() } - def makeCrossTarget(t: File, sv: String, sbtv: String, plugin: Boolean, cross: Boolean): File = { - val scalaBase = if (cross) t / ("scala-" + sv) else t + @deprecated("Use constructor with scalaVersion and scalaBinaryVersion", "1.5.0") + def makeCrossTarget(t: File, bv: String, sbtv: String, plugin: Boolean, cross: Boolean): File = { + val scalaBase = if (cross) t / ("scala-" + bv) else t + if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase + } + + def makeCrossTarget( + t: File, + scalaVersion: String, + scalaBinaryVersion: String, + sbtv: String, + plugin: Boolean, + cross: Boolean + ): File = { + val scalaSuffix = + if (ScalaArtifacts.isScala3(scalaVersion)) scalaVersion else scalaBinaryVersion + val scalaBase = if (cross) t / ("scala-" + scalaSuffix) else t if (plugin) scalaBase / ("sbt-" + sbtv) else scalaBase } From 09dd3b09f4b8fdcca6dcc309f4307d6620a6b5ff Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Thu, 1 Apr 2021 13:56:51 +0200 Subject: [PATCH 2/2] Add test for Scala 3 cross-target --- sbt/src/sbt-test/project/scala3-cross-target/build.sbt | 3 +++ .../project/scala3-cross-target/src/main/scala/Foo.scala | 1 + sbt/src/sbt-test/project/scala3-cross-target/test | 7 +++++++ 3 files changed, 11 insertions(+) create mode 100644 sbt/src/sbt-test/project/scala3-cross-target/build.sbt create mode 100644 sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala create mode 100644 sbt/src/sbt-test/project/scala3-cross-target/test diff --git a/sbt/src/sbt-test/project/scala3-cross-target/build.sbt b/sbt/src/sbt-test/project/scala3-cross-target/build.sbt new file mode 100644 index 000000000..d87ccac1b --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/build.sbt @@ -0,0 +1,3 @@ +scalaVersion := "3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY" +name := "foo" +version := "1.0.0" diff --git a/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala b/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala new file mode 100644 index 000000000..d37c10456 --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/src/main/scala/Foo.scala @@ -0,0 +1 @@ +object Foo \ No newline at end of file diff --git a/sbt/src/sbt-test/project/scala3-cross-target/test b/sbt/src/sbt-test/project/scala3-cross-target/test new file mode 100644 index 000000000..ff09e0f19 --- /dev/null +++ b/sbt/src/sbt-test/project/scala3-cross-target/test @@ -0,0 +1,7 @@ +> compile + +$ exists target/scala-3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY/classes/Foo$.class + +> package + +$ exists target/scala-3.0.0-RC2-bin-20210328-cca5f8f-NIGHTLY/foo_3.0.0-RC2-1.0.0.jar