Skip to content

Commit 32b11d9

Browse files
authored
Add support for the new Scala 3 nightly repository (VirtusLab#3838)
* Add support for the new Scala 3 nightly repository * Don't pass the transitive dependencies of the Scala 3 bridge to Bloop * Rename `SonatypeUtils` as `RepositoryUtils` * Retry new Scala 3 nightly tests on the CI & only run them with Bloop while on Windows * NIT refactor * Don't unnecessarily re-run Scala 3 nightly tests * Enable the new Scala 3 nightly repo when a nightly is used as the default Scala version
1 parent 109da02 commit 32b11d9

File tree

13 files changed

+111
-53
lines changed

13 files changed

+111
-53
lines changed

modules/build/src/main/scala/scala/build/Bloop.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ object Bloop {
8282
Seq(
8383
coursier.Repositories.sonatype("snapshots"),
8484
coursier.Repositories.sonatypeS01("snapshots"),
85-
SonatypeUtils.snapshotsRepository
85+
RepositoryUtils.snapshotsRepository,
86+
RepositoryUtils.scala3NightlyRepository
8687
),
8788
Some(params),
8889
logger,

modules/build/src/main/scala/scala/build/Build.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ object Build {
987987
scalaBinaryVersion = params.scalaBinaryVersion,
988988
scalacOptions = scalacOptions.toSeq.map(_.value),
989989
compilerClassPath = scalaArtifacts.compilerClassPath,
990-
bridgeJarsOpt = scalaArtifacts.bridgeJarsOpt
990+
bridgeJarsOpt = scalaArtifacts.bridgeJarsOpt.map(_.headOption.toSeq)
991991
)
992992
Some(compilerParams)
993993

modules/build/src/test/scala/scala/build/tests/BuildOptionsTests.scala

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import scala.build.options.{
2626
ScalacOpt,
2727
ShadowingSeq
2828
}
29-
import scala.build.{Build, BuildThreads, Directories, LocalRepo, Positioned, SonatypeUtils}
29+
import scala.build.{Build, BuildThreads, Directories, LocalRepo, Positioned, RepositoryUtils}
3030
import scala.build.tests.util.BloopServer
3131
import scala.concurrent.duration.DurationInt
3232
import scala.build.internal.Regexes.scala3LtsRegex
@@ -323,7 +323,12 @@ class BuildOptionsTests extends TestUtil.ScalaCliBuildSuite {
323323
val repositories = BuildOptions(
324324
internal = InternalOptions(cache = Some(cache)),
325325
classPathOptions =
326-
ClassPathOptions(extraRepositories = Seq(coursier.Repositories.scalaIntegration.root))
326+
ClassPathOptions(
327+
extraRepositories = Seq(
328+
coursier.Repositories.scalaIntegration.root,
329+
RepositoryUtils.scala3NightlyRepository.root
330+
)
331+
)
327332
).finalRepositories.orThrow
328333
val allScalaVersions = ScalaVersionUtil.allMatchingVersions(None, cache, repositories)
329334
for {
@@ -443,11 +448,12 @@ class BuildOptionsTests extends TestUtil.ScalaCliBuildSuite {
443448
.getOrElse(sys.error("cannot happen"))
444449
val repositories = build.options.finalRepositories.orThrow
445450

446-
expect(repositories.length == 4)
451+
expect(repositories.length == 5)
447452
expect(repositories.contains(Repositories.sonatype("snapshots")))
448453
expect(repositories.contains(Repositories.sonatypeS01("snapshots")))
449454
expect(repositories.contains(Repositories.central))
450-
expect(repositories.contains(SonatypeUtils.snapshotsRepository))
455+
expect(repositories.contains(RepositoryUtils.snapshotsRepository))
456+
expect(repositories.contains(RepositoryUtils.scala3NightlyRepository))
451457
}
452458
}
453459

modules/cli/src/main/scala/scala/cli/commands/pgp/PgpExternalCommand.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import scala.build.internal.{
1818
FetchExternalBinary,
1919
Runner
2020
}
21-
import scala.build.{Logger, Positioned, SonatypeUtils, options as bo}
21+
import scala.build.{Logger, Positioned, RepositoryUtils, options as bo}
2222
import scala.cli.ScalaCli
2323
import scala.cli.commands.shared.{CoursierOptions, SharedJvmOptions}
2424
import scala.cli.commands.util.JvmUtils
@@ -187,7 +187,9 @@ object PgpExternalCommand {
187187
if version.endsWith("SNAPSHOT") then
188188
Seq(
189189
Repositories.sonatype("snapshots"),
190-
SonatypeUtils.snapshotsRepository
190+
Repositories.sonatypeS01("snapshots"),
191+
RepositoryUtils.snapshotsRepository,
192+
RepositoryUtils.scala3NightlyRepository
191193
)
192194
else Nil
193195

modules/cli/src/main/scala/scala/cli/commands/publish/RepoParams.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import java.util.concurrent.ScheduledExecutorService
1212
import scala.build.EitherCps.{either, value}
1313
import scala.build.errors.BuildException
1414
import scala.build.internals.ConsoleUtils.ScalaCliConsole.warnPrefix
15-
import scala.build.{Logger, SonatypeUtils}
15+
import scala.build.{Logger, RepositoryUtils}
1616
import scala.cli.commands.util.ScalaCliSttpBackend
1717

1818
final case class RepoParams(
@@ -53,7 +53,7 @@ final case class RepoParams(
5353

5454
object RepoParams {
5555
private val sonatypeOssrhStagingApiBase = "https://ossrh-staging-api.central.sonatype.com"
56-
private val sonatypeSnapshotsBase = s"${SonatypeUtils.snapshotsRepositoryUrl}/"
56+
private val sonatypeSnapshotsBase = s"${RepositoryUtils.snapshotsRepositoryUrl}/"
5757
private val sonatypeLegacyBase = "https://oss.sonatype.org"
5858
private val sonatypeS01LegacyBase = "https://s01.oss.sonatype.org"
5959
private def sonatypeHosts: Seq[String] =

modules/cli/src/main/scala/scala/cli/internal/ScalaJsLinker.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import scala.build.errors.{BuildException, ScalaJsLinkingError}
1313
import scala.build.internal.Util.{DependencyOps, ModuleOps}
1414
import scala.build.internal.{ExternalBinaryParams, FetchExternalBinary, Runner, ScalaJsLinkerConfig}
1515
import scala.build.options.scalajs.ScalaJsLinkerOptions
16-
import scala.build.{Logger, Positioned, SonatypeUtils}
16+
import scala.build.{Logger, Positioned, RepositoryUtils}
1717
import scala.io.Source
1818
import scala.util.Properties
1919

@@ -61,7 +61,9 @@ object ScalaJsLinker {
6161
then
6262
Seq(
6363
Repositories.sonatype("snapshots"),
64-
SonatypeUtils.snapshotsRepository
64+
Repositories.sonatypeS01("snapshots"),
65+
RepositoryUtils.snapshotsRepository,
66+
RepositoryUtils.scala3NightlyRepository
6567
)
6668
else Nil
6769

modules/cli/src/main/scala/scala/cli/launcher/LauncherCli.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import scala.build.internal.CsLoggerUtil.CsCacheExtensions
1010
import scala.build.internal.{Constants, OsLibc, Runner}
1111
import scala.build.options.ScalaVersionUtil.fileWithTtl0
1212
import scala.build.options.{BuildOptions, JavaOptions}
13-
import scala.build.{Artifacts, Os, Positioned, SonatypeUtils}
13+
import scala.build.{Artifacts, Os, Positioned, RepositoryUtils}
1414
import scala.cli.ScalaCli
1515
import scala.cli.commands.shared.{CoursierOptions, LoggingOptions}
1616
import scala.xml.XML
@@ -24,7 +24,8 @@ object LauncherCli {
2424
val snapshotsRepo = Seq(
2525
Repositories.central,
2626
Repositories.sonatype("snapshots"),
27-
SonatypeUtils.snapshotsRepository
27+
RepositoryUtils.snapshotsRepository,
28+
RepositoryUtils.scala3NightlyRepository
2829
)
2930

3031
val cliVersion: String =
@@ -83,8 +84,9 @@ object LauncherCli {
8384
scalaBinaryVersion: String
8485
): String = {
8586
val cliSubPath = s"org/virtuslab/scala-cli/cli_$scalaBinaryVersion"
86-
val mavenMetadataUrl = s"${SonatypeUtils.snapshotsRepositoryUrl}/$cliSubPath/maven-metadata.xml"
87-
val artifact = Artifact(mavenMetadataUrl).withChanging(true)
87+
val mavenMetadataUrl =
88+
s"${RepositoryUtils.snapshotsRepositoryUrl}/$cliSubPath/maven-metadata.xml"
89+
val artifact = Artifact(mavenMetadataUrl).withChanging(true)
8890
cache.fileWithTtl0(artifact) match {
8991
case Left(_) =>
9092
System.err.println(s"Unable to find nightly ${ScalaCli.fullRunnerName} version")
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package scala.build
2+
3+
import coursier.maven.MavenRepository
4+
5+
object RepositoryUtils {
6+
lazy val snapshotsRepositoryUrl = "https://central.sonatype.com/repository/maven-snapshots"
7+
lazy val snapshotsRepository = MavenRepository(snapshotsRepositoryUrl)
8+
lazy val scala3NightlyRepositoryUrl = "https://repo.scala-lang.org/artifactory/maven-nightlies"
9+
lazy val scala3NightlyRepository = MavenRepository(scala3NightlyRepositoryUrl)
10+
}

modules/core/src/main/scala/scala/build/SonatypeUtils.scala

Lines changed: 0 additions & 8 deletions
This file was deleted.

modules/integration/src/test/scala/scala/cli/integration/CompileScalacCompatTestDefinitions.scala

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,4 +228,30 @@ trait CompileScalacCompatTestDefinitions { _: CompileTestDefinitions =>
228228
}
229229
}
230230
}
231+
232+
for {
233+
scalaVersion <- Seq("3.nightly", "3.8.0-RC1-bin-20250825-ee2f641-NIGHTLY")
234+
withBloop <- Seq(false, true)
235+
withBloopString = if (withBloop) "with Bloop" else "scalac"
236+
buildServerOpts = if (withBloop) Nil else Seq("--server=false")
237+
if (!Properties.isWin || withBloop) && actualScalaVersion == Constants.scala3Next
238+
}
239+
test(s"sanity check for Scala $scalaVersion standard library with cc ($withBloopString)") {
240+
TestUtil.retryOnCi() {
241+
val input = "example.scala"
242+
TestInputs(os.rel / input ->
243+
s"""//> using scala $scalaVersion
244+
|import language.experimental.captureChecking
245+
|
246+
|trait File extends caps.SharedCapability:
247+
| def count(): Int
248+
|
249+
|def f(file: File): IterableOnce[Int]^{file} =
250+
| Iterator(1)
251+
| .map(_ + file.count())
252+
|""".stripMargin).fromRoot { root =>
253+
os.proc(TestUtil.cli, "compile", input, buildServerOpts).call(cwd = root)
254+
}
255+
}
256+
}
231257
}

0 commit comments

Comments
 (0)