Skip to content

Commit 731582d

Browse files
authored
Merge pull request #2873 from Gedochao/maintenance/fix-bloop-with-sbt-bridge
Explicitly pass `scala3-sbt-bridge` to Bloop
2 parents 3afca5f + 0f0a663 commit 731582d

File tree

9 files changed

+51
-19
lines changed

9 files changed

+51
-19
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,8 @@ object Build {
906906
scalaVersion = params.scalaVersion,
907907
scalaBinaryVersion = params.scalaBinaryVersion,
908908
scalacOptions = scalacOptions.toSeq.map(_.value),
909-
compilerClassPath = scalaArtifacts.compilerClassPath
909+
compilerClassPath = scalaArtifacts.compilerClassPath,
910+
bridgeJarsOpt = scalaArtifacts.bridgeJarsOpt
910911
)
911912
Some(compilerParams)
912913

modules/build/src/main/scala/scala/build/Project.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ final case class Project(
4848
val scalaConfigOpt = scalaCompiler.map { scalaCompiler0 =>
4949
bloopScalaConfig("org.scala-lang", "scala-compiler", scalaCompiler0.scalaVersion).copy(
5050
options = updateScalacOptions(scalaCompiler0.scalacOptions).map(_.value),
51-
jars = scalaCompiler0.compilerClassPath.map(_.toNIO).toList
51+
jars = scalaCompiler0.compilerClassPath.map(_.toNIO).toList,
52+
bridgeJars = scalaCompiler0.bridgeJarsOpt.map(_.map(_.toNIO).toList)
5253
)
5354
}
5455
baseBloopProject(
@@ -229,6 +230,7 @@ object Project {
229230
options = Nil,
230231
jars = Nil,
231232
analysis = None,
232-
setup = None
233+
setup = None,
234+
bridgeJars = None
233235
)
234236
}

modules/build/src/main/scala/scala/build/ScalaCompilerParams.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ final case class ScalaCompilerParams(
44
scalaVersion: String,
55
scalaBinaryVersion: String,
66
scalacOptions: Seq[String],
7-
compilerClassPath: Seq[os.Path]
7+
compilerClassPath: Seq[os.Path],
8+
bridgeJarsOpt: Option[Seq[os.Path]]
89
)

modules/cli/src/main/scala/scala/cli/commands/shared/SharedOptions.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,8 @@ final case class SharedOptions(
438438
python = sharedPython.python,
439439
pythonSetup = sharedPython.pythonSetup,
440440
scalaPyVersion = sharedPython.scalaPyVersion
441-
)
441+
),
442+
useBuildServer = compilationServer.server
442443
)
443444
}
444445

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

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -607,15 +607,19 @@ class SipScalaTests extends ScalaCliSuite with SbtTestHelper with MillTestHelper
607607
.fromRoot { root =>
608608
val localRepoPath = root / "local-repo"
609609
val sv = "3.4.1-RC1"
610-
val csRes = os.proc(
611-
TestUtil.cs,
612-
"fetch",
613-
"--cache",
614-
localRepoPath,
615-
s"org.scala-lang:scala3-compiler_3:$sv"
616-
)
617-
.call(cwd = root)
618-
expect(csRes.exitCode == 0)
610+
val artifactNames =
611+
Seq("scala3-compiler_3") ++ (if (withBloop) Seq("scala3-sbt-bridge") else Nil)
612+
for { artifactName <- artifactNames } {
613+
val csRes = os.proc(
614+
TestUtil.cs,
615+
"fetch",
616+
"--cache",
617+
localRepoPath,
618+
s"org.scala-lang:$artifactName:$sv"
619+
)
620+
.call(cwd = root)
621+
expect(csRes.exitCode == 0)
622+
}
619623
val buildServerOptions =
620624
if (withBloop) Nil else Seq("--server=false")
621625
val r = os.proc(

modules/options/src/main/scala/scala/build/Artifacts.scala

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ object Artifacts {
104104
addJmhDependencies: Option[String],
105105
extraRepositories: Seq[Repository],
106106
keepResolution: Boolean,
107+
includeBuildServerDeps: Boolean,
107108
cache: FileCache[Task],
108109
logger: Logger,
109110
maybeRecoverOnError: BuildException => Option[BuildException]
@@ -176,6 +177,24 @@ object Artifacts {
176177
).left.flatMap(_.maybeRecoverWithDefault(Seq.empty, maybeRecoverOnError))
177178
}
178179

180+
val bridgeJarsOpt = Option.when(
181+
scalaArtifactsParams.params.scalaVersion.startsWith("3.") && includeBuildServerDeps
182+
) {
183+
Seq(dep"org.scala-lang:scala3-sbt-bridge:${scalaArtifactsParams.params.scalaVersion}")
184+
}.map { bridgeDependencies =>
185+
value {
186+
artifacts(
187+
bridgeDependencies.map(Positioned.none),
188+
allExtraRepositories,
189+
Some(scalaArtifactsParams.params),
190+
logger,
191+
cache.withMessage(
192+
s"Downloading Scala ${scalaArtifactsParams.params.scalaVersion} bridge"
193+
)
194+
).left.flatMap(_.maybeRecoverWithDefault(Seq.empty, maybeRecoverOnError))
195+
}.map(_._2)
196+
}
197+
179198
def fetchedArtifactToPath(fetched: Fetch.Result): Seq[os.Path] =
180199
fetched.fullDetailedArtifacts.collect { case (_, _, _, Some(f)) => os.Path(f, Os.pwd) }
181200

@@ -273,7 +292,8 @@ object Artifacts {
273292
scalaNativeCli,
274293
internalDependencies,
275294
scalapyDependencies,
276-
scalaArtifactsParams.params
295+
scalaArtifactsParams.params,
296+
bridgeJarsOpt
277297
)
278298
Some(scala)
279299

modules/options/src/main/scala/scala/build/ScalaArtifacts.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ final case class ScalaArtifacts(
1010
scalaNativeCli: Seq[os.Path],
1111
internalDependencies: Seq[AnyDependency],
1212
extraDependencies: Seq[AnyDependency],
13-
params: ScalaParameters
13+
params: ScalaParameters,
14+
bridgeJarsOpt: Option[Seq[os.Path]]
1415
) {
1516

1617
lazy val compilerClassPath: Seq[os.Path] =

modules/options/src/main/scala/scala/build/options/BuildOptions.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ final case class BuildOptions(
4444
mainClass: Option[String] = None,
4545
testOptions: TestOptions = TestOptions(),
4646
notForBloopOptions: PostBuildOptions = PostBuildOptions(),
47-
sourceGeneratorOptions: SourceGeneratorOptions = SourceGeneratorOptions()
47+
sourceGeneratorOptions: SourceGeneratorOptions = SourceGeneratorOptions(),
48+
useBuildServer: Option[Boolean] = None
4849
) {
4950

5051
import BuildOptions.JavaHomeInfo
@@ -457,6 +458,7 @@ final case class BuildOptions(
457458
addJmhDependencies = jmhOptions.addJmhDependencies,
458459
extraRepositories = value(finalRepositories),
459460
keepResolution = internal.keepResolution,
461+
includeBuildServerDeps = useBuildServer.getOrElse(false),
460462
cache = finalCache,
461463
logger = logger,
462464
maybeRecoverOnError = maybeRecoverOnError

project/deps.sc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,15 @@ object Deps {
107107
def signingCli = "0.2.3"
108108
def signingCliJvmVersion = 17
109109
def javaClassName = "0.1.3"
110-
def bloop = "1.5.16-sc-2"
110+
def bloop = "1.5.17-sc-1"
111111
}
112112
// DO NOT hardcode a Scala version in this dependency string
113113
// This dependency is used to ensure that Ammonite is available for Scala versions
114114
// that Scala CLI supports.
115115
def ammonite = ivy"com.lihaoyi:::ammonite:3.0.0-M1-10-105f9e32"
116116
def asm = ivy"org.ow2.asm:asm:9.7"
117117
// Force using of 2.13 - is there a better way?
118-
def bloopConfig = ivy"ch.epfl.scala:bloop-config_2.13:1.5.5"
118+
def bloopConfig = ivy"ch.epfl.scala:bloop-config_2.13:2.0.0"
119119
.exclude(("com.github.plokhotnyuk.jsoniter-scala", "jsoniter-scala-core_2.13"))
120120
def bloopRifle = ivy"io.github.alexarchambault.bleep:bloop-rifle_2.13:${Versions.bloop}"
121121
def bsp4j = ivy"ch.epfl.scala:bsp4j:2.1.1"

0 commit comments

Comments
 (0)