diff --git a/build.sbt b/build.sbt index aef484b6d..0cf8f0947 100644 --- a/build.sbt +++ b/build.sbt @@ -922,6 +922,7 @@ lazy val zincLmIntegrationProj = (project in file("zinc-lm-integration")) exclude[IncompatibleMethTypeProblem]("sbt.internal.inc.ZincComponentCompiler*"), exclude[IncompatibleSignatureProblem]("sbt.internal.inc.ZincComponentCompiler*"), exclude[IncompatibleSignatureProblem]("sbt.internal.inc.ZincLMHelper.update"), + exclude[DirectMissingMethodProblem]("sbt.internal.inc.ZincLmUtil.*"), ), libraryDependencies += launcherInterface, ) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index f1095c68b..3f2163328 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -747,13 +747,15 @@ object Defaults extends BuildCommon { fetchBridgeBinaryJarTask(sv) else Def.task[Option[File]](None) }.value, - scalaCompilerBridgeSource := ZincLmUtil.getDefaultBridgeSourceModule(scalaVersion.value), + scalaCompilerBridgeSource := ZincLmUtil + .getDefaultBridgeSourceModule(scalaOrganization.value, scalaVersion.value), auxiliaryClassFiles ++= { if (ScalaArtifacts.isScala3(scalaVersion.value)) List(TastyFiles.instance) else Nil }, consoleProject / scalaCompilerBridgeBinaryJar := None, consoleProject / scalaCompilerBridgeSource := ZincLmUtil.getDefaultBridgeSourceModule( + ScalaArtifacts.Organization, appConfiguration.value.provider.scalaProvider.version ), classpathOptions := ClasspathOptionsUtil.noboot(scalaVersion.value), @@ -842,6 +844,7 @@ object Defaults extends BuildCommon { private def fetchBridgeBinaryJarTask(scalaVersion: String): Initialize[Task[Option[File]]] = Def.task { val bridgeJar = ZincLmUtil.fetchDefaultBridgeModule( + scalaOrganization.value, scalaVersion, dependencyResolution.value, updateConfiguration.value, diff --git a/main/src/main/scala/sbt/internal/Load.scala b/main/src/main/scala/sbt/internal/Load.scala index 7433afbb0..596075cb4 100755 --- a/main/src/main/scala/sbt/internal/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -25,7 +25,7 @@ import sbt.internal.util.Types.const import sbt.internal.util.{ Attributed, Settings, ~> } import sbt.io.{ GlobFilter, IO, Path } import sbt.librarymanagement.ivy.{ InlineIvyConfiguration, IvyDependencyResolution, IvyPaths } -import sbt.librarymanagement.{ Configuration, Configurations, Resolver } +import sbt.librarymanagement.{ Configuration, Configurations, Resolver, ScalaArtifacts } import sbt.nio.Settings import sbt.util.{ Logger, Show } import xsbti.compile.{ ClasspathOptionsUtil, Compilers } @@ -87,7 +87,8 @@ private[sbt] object Load { componentProvider = app.provider.components, secondaryCacheDir = Option(zincDir), dependencyResolution = dependencyResolution, - compilerBridgeSource = ZincLmUtil.getDefaultBridgeSourceModule(scalaProvider.version), + compilerBridgeSource = + ZincLmUtil.getDefaultBridgeSourceModule(ScalaArtifacts.Organization, scalaProvider.version), scalaJarsTarget = zincDir, state.get(BasicKeys.classLoaderCache), log = log diff --git a/sbt-app/src/sbt-test/dependency-management/custom-scala-org/A.scala b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/A.scala new file mode 100644 index 000000000..69c493db2 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/A.scala @@ -0,0 +1 @@ +object A diff --git a/sbt-app/src/sbt-test/dependency-management/custom-scala-org/build.sbt b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/build.sbt new file mode 100644 index 000000000..5c9111262 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/build.sbt @@ -0,0 +1,4 @@ +ThisBuild / scalaOrganization := "io.github.scala-wasm" +ThisBuild / scalaVersion := "3.8.3-RC1-wasm-bin-SNAPSHOT" + +ThisBuild / resolvers += "Sonatype Central Snapshots" at "https://central.sonatype.com/repository/maven-snapshots/" diff --git a/sbt-app/src/sbt-test/dependency-management/custom-scala-org/test b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/test new file mode 100644 index 000000000..5df2af1f3 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/custom-scala-org/test @@ -0,0 +1 @@ +> compile diff --git a/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala b/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala index 05a9ea6f1..7d670794d 100644 --- a/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala +++ b/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincComponentCompiler.scala @@ -71,7 +71,12 @@ private[sbt] object ZincComponentCompiler { override def fetchCompiledBridge(scalaInstance: XScalaInstance, logger: Logger): File = { val scalaVersion = scalaInstance.actualVersion() val bridgeSources = userProvidedBridgeSources - .getOrElse(ZincLmUtil.getDefaultBridgeSourceModule(scalaVersion)) + .getOrElse( + ZincLmUtil.getDefaultBridgeSourceModule( + sbt.librarymanagement.ScalaArtifacts.Organization, + scalaVersion + ) + ) compiledBridge(bridgeSources, scalaInstance, logger) } diff --git a/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincLmUtil.scala b/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincLmUtil.scala index a15473901..4bbf136f0 100644 --- a/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincLmUtil.scala +++ b/zinc-lm-integration/src/main/scala/sbt/internal/inc/ZincLmUtil.scala @@ -62,13 +62,14 @@ object ZincLmUtil { } def fetchDefaultBridgeModule( + scalaOrganization: String, scalaVersion: String, dependencyResolution: DependencyResolution, updateConfiguration: UpdateConfiguration, warningConfig: UnresolvedWarningConfiguration, logger: Logger ): File = { - val bridgeModule = getDefaultBridgeModule(scalaVersion) + val bridgeModule = getDefaultBridgeModule(scalaOrganization, scalaVersion) val descriptor = dependencyResolution.wrapDependencyInModule(bridgeModule) dependencyResolution .update(descriptor, updateConfiguration, warningConfig, logger) @@ -86,14 +87,14 @@ object ZincLmUtil { .getOrElse(throw new MessageOnlyException(s"Missing $bridgeModule")) } - def getDefaultBridgeModule(scalaVersion: String): ModuleID = { + def getDefaultBridgeModule(scalaOrganization: String, scalaVersion: String): ModuleID = { if (ScalaArtifacts.isScala3(scalaVersion)) { - ModuleID(ScalaArtifacts.Organization, "scala3-sbt-bridge", scalaVersion) + ModuleID(scalaOrganization, "scala3-sbt-bridge", scalaVersion) .withConfigurations(Some(Compile.name)) } else if (VersionNumber(scalaVersion).matchesSemVer( SemanticSelector(s"=2.13 >=$scala2SbtBridgeStart") )) { - ModuleID(ScalaArtifacts.Organization, "scala2-sbt-bridge", scalaVersion) + ModuleID(scalaOrganization, "scala2-sbt-bridge", scalaVersion) .withConfigurations(Some(Compile.name)) } else { val compilerBridgeId = scalaVersion match { @@ -108,6 +109,6 @@ object ZincLmUtil { } } - def getDefaultBridgeSourceModule(scalaVersion: String): ModuleID = - getDefaultBridgeModule(scalaVersion).sources() + def getDefaultBridgeSourceModule(scalaOrganization: String, scalaVersion: String): ModuleID = + getDefaultBridgeModule(scalaOrganization, scalaVersion).sources() } diff --git a/zinc-lm-integration/src/test/scala/sbt/internal/inc/IvyBridgeProviderSpecification.scala b/zinc-lm-integration/src/test/scala/sbt/internal/inc/IvyBridgeProviderSpecification.scala index d4245b7c4..c6745763e 100644 --- a/zinc-lm-integration/src/test/scala/sbt/internal/inc/IvyBridgeProviderSpecification.scala +++ b/zinc-lm-integration/src/test/scala/sbt/internal/inc/IvyBridgeProviderSpecification.scala @@ -64,7 +64,7 @@ abstract class IvyBridgeProviderSpecification case Some(v: String) => v case _ => throw new IllegalStateException("No zinc version specified") } - val bridge0 = ZincLmUtil.getDefaultBridgeSourceModule(scalaVersion) + val bridge0 = ZincLmUtil.getDefaultBridgeSourceModule(ScalaArtifacts.Organization, scalaVersion) // redefine the compiler bridge version // using the version of zinc used during testing // this way when building with zinc as a source dependency