Skip to content

Commit ece824e

Browse files
Ensure we create a coursier cache in a single place
And pass that cache around when needed.
1 parent 84d1134 commit ece824e

File tree

13 files changed

+62
-21
lines changed

13 files changed

+62
-21
lines changed

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

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scala.build
33
import coursier.cache.FileCache
44
import coursier.core.Classifier
55
import coursier.parse.RepositoryParser
6+
import coursier.util.Task
67
import coursier.{Dependency => CsDependency, Fetch, core => csCore, util => csUtil}
78
import dependency._
89

@@ -80,6 +81,7 @@ object Artifacts {
8081
addJmhDependencies: Option[String],
8182
scalaNativeCliVersion: Option[String],
8283
extraRepositories: Seq[String],
84+
cache: FileCache[Task],
8385
logger: Logger
8486
): Either[BuildException, Artifacts] = either {
8587

@@ -145,7 +147,13 @@ object Artifacts {
145147
jmhDependencies.map(Positioned.none(_))
146148

147149
val compilerArtifacts = value {
148-
artifacts(Positioned.none(compilerDependencies), allExtraRepositories, params, logger)
150+
artifacts(
151+
Positioned.none(compilerDependencies),
152+
allExtraRepositories,
153+
params,
154+
logger,
155+
cache
156+
)
149157
}
150158

151159
val fetchRes = value {
@@ -154,6 +162,7 @@ object Artifacts {
154162
allExtraRepositories,
155163
params,
156164
logger,
165+
cache,
157166
classifiersOpt = Some(Set("_") ++ (if (fetchSources) Set("sources") else Set.empty))
158167
)
159168
}
@@ -167,6 +176,7 @@ object Artifacts {
167176
allExtraRepositories,
168177
params,
169178
logger,
179+
cache,
170180
None
171181
)
172182
}
@@ -188,7 +198,8 @@ object Artifacts {
188198
Positioned.none(Seq(dep"$stubsOrganization:$stubsModuleName:$stubsVersion")),
189199
allExtraRepositories,
190200
params,
191-
logger
201+
logger,
202+
cache
192203
).map(_.map(_._2))
193204
}
194205
else
@@ -199,7 +210,7 @@ object Artifacts {
199210
.map { posDep =>
200211
val posDep0 =
201212
posDep.map(dep => dep.copy(userParams = dep.userParams + ("intransitive" -> None)))
202-
artifacts(posDep0.map(Seq(_)), allExtraRepositories, params, logger)
213+
artifacts(posDep0.map(Seq(_)), allExtraRepositories, params, logger, cache)
203214
.map(_.map { case (url, path) => (posDep0.value, url, path) })
204215
}
205216
.sequence
@@ -210,7 +221,7 @@ object Artifacts {
210221
val javacPlugins0 = value {
211222
javacPluginDependencies
212223
.map { posDep =>
213-
artifacts(posDep.map(Seq(_)), allExtraRepositories, params, logger)
224+
artifacts(posDep.map(Seq(_)), allExtraRepositories, params, logger, cache)
214225
.map(_.map { case (url, path) => (posDep.value, url, path) })
215226
}
216227
.sequence
@@ -239,13 +250,15 @@ object Artifacts {
239250
extraRepositories: Seq[String],
240251
params: ScalaParameters,
241252
logger: Logger,
253+
cache: FileCache[Task],
242254
classifiersOpt: Option[Set[String]] = None
243255
): Either[BuildException, Seq[(String, Path)]] = either {
244-
val result = value(fetch(dependencies, extraRepositories, params, logger, classifiersOpt))
245-
.artifacts
246-
.iterator
247-
.map { case (a, f) => (a.url, f.toPath) }
248-
.toList
256+
val result =
257+
value(fetch(dependencies, extraRepositories, params, logger, cache, classifiersOpt))
258+
.artifacts
259+
.iterator
260+
.map { case (a, f) => (a.url, f.toPath) }
261+
.toList
249262
logger.debug {
250263
val elems = Seq(s"Found ${result.length} artifacts:") ++
251264
result.map(" " + _._2) ++
@@ -260,6 +273,7 @@ object Artifacts {
260273
extraRepositories: Seq[String],
261274
params: ScalaParameters,
262275
logger: Logger,
276+
cache: FileCache[Task],
263277
classifiersOpt: Option[Set[String]]
264278
): Either[BuildException, Fetch.Result] = either {
265279
logger.debug {
@@ -273,8 +287,6 @@ object Artifacts {
273287
.left.map(errors => new RepositoryFormatError(errors))
274288
}
275289

276-
val cache = FileCache().withLogger(logger.coursierLogger)
277-
278290
// FIXME Many parameters that we could allow to customize here
279291
var fetcher = coursier.Fetch()
280292
.withCache(cache)

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package scala.build
22

33
import ch.epfl.scala.bsp4j
4+
import coursier.cache.FileCache
5+
import coursier.util.Task
46
import dependency.parser.ModuleParser
57
import dependency.{AnyDependency, DependencyLike, ScalaParameters, ScalaVersion}
68

@@ -45,18 +47,20 @@ object Bloop {
4547
def bloopClassPath(
4648
dep: AnyDependency,
4749
params: ScalaParameters,
48-
logger: Logger
50+
logger: Logger,
51+
cache: FileCache[Task]
4952
): Either[BuildException, Seq[File]] =
5053
either {
51-
value(Artifacts.artifacts(Positioned.none(Seq(dep)), Nil, params, logger))
54+
value(Artifacts.artifacts(Positioned.none(Seq(dep)), Nil, params, logger, cache))
5255
.map(_._2.toFile)
5356
}
5457

55-
def bloopClassPath(logger: Logger): Either[BuildException, Seq[File]] =
56-
bloopClassPath(logger, BloopRifleConfig.defaultVersion)
58+
def bloopClassPath(logger: Logger, cache: FileCache[Task]): Either[BuildException, Seq[File]] =
59+
bloopClassPath(logger, cache, BloopRifleConfig.defaultVersion)
5760

5861
def bloopClassPath(
5962
logger: Logger,
63+
cache: FileCache[Task],
6064
bloopVersion: String
6165
): Either[BuildException, Seq[File]] = either {
6266
val moduleStr = BloopRifleConfig.defaultModule
@@ -68,6 +72,6 @@ object Bloop {
6872
val sv = BloopRifleConfig.defaultScalaVersion
6973
val sbv = ScalaVersion.binary(sv)
7074
val params = ScalaParameters(sv, sbv)
71-
value(bloopClassPath(dep, params, logger))
75+
value(bloopClassPath(dep, params, logger, cache))
7276
}
7377
}

modules/build/src/main/scala/scala/build/ReplArtifacts.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.build
22

3+
import coursier.cache.FileCache
4+
import coursier.util.Task
35
import dependency._
46

57
import java.nio.file.Path
@@ -39,17 +41,19 @@ object ReplArtifacts {
3941
extraClassPath: Seq[Path],
4042
extraSourceJars: Seq[Path],
4143
logger: Logger,
44+
cache: FileCache[Task],
4245
directories: Directories
4346
): Either[BuildException, ReplArtifacts] = either {
4447
val localRepoOpt = LocalRepo.localRepo(directories.localRepoDir)
4548
val allDeps = dependencies ++ Seq(dep"com.lihaoyi:::ammonite:$ammoniteVersion")
4649
val replArtifacts =
47-
Artifacts.artifacts(Positioned.none(allDeps), localRepoOpt.toSeq, scalaParams, logger)
50+
Artifacts.artifacts(Positioned.none(allDeps), localRepoOpt.toSeq, scalaParams, logger, cache)
4851
val replSourceArtifacts = Artifacts.artifacts(
4952
Positioned.none(allDeps),
5053
localRepoOpt.toSeq,
5154
scalaParams,
5255
logger,
56+
cache,
5357
classifiersOpt = Some(Set("sources"))
5458
)
5559
ReplArtifacts(
@@ -67,6 +71,7 @@ object ReplArtifacts {
6771
dependencies: Seq[AnyDependency],
6872
extraClassPath: Seq[Path],
6973
logger: Logger,
74+
cache: FileCache[Task],
7075
repositories: Seq[String]
7176
): Either[BuildException, ReplArtifacts] = either {
7277
val isScala2 = scalaParams.scalaVersion.startsWith("2.")
@@ -79,7 +84,8 @@ object ReplArtifacts {
7984
Positioned.none(allDeps),
8085
repositories,
8186
scalaParams,
82-
logger
87+
logger,
88+
cache
8389
)
8490
val mainClass =
8591
if (isScala2) "scala.tools.nsc.MainGenericRunner"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ final case class BuildOptions(
376376
addNativeTestInterface = addNativeTestInterface,
377377
addJmhDependencies = jmhOptions.addJmhDependencies,
378378
extraRepositories = finalRepositories,
379+
cache = finalCache,
379380
logger = logger
380381
)
381382
value(maybeArtifacts)

modules/build/src/test/scala/scala/build/tests/util/BloopServer.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package scala.build.tests.util
22

3+
import coursier.cache.FileCache
4+
35
import scala.build.{Bloop, Logger}
46
import scala.build.blooprifle.BloopRifleConfig
57
import scala.util.Properties
@@ -19,7 +21,7 @@ object BloopServer {
1921

2022
val bloopConfig = BloopRifleConfig.default(
2123
bloopAddress,
22-
v => Bloop.bloopClassPath(Logger.nop, v),
24+
v => Bloop.bloopClassPath(Logger.nop, FileCache(), v),
2325
directories.bloopWorkingDir.toIO
2426
)
2527

modules/cli/src/main/scala/scala/cli/commands/BloopExitOptions.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ final case class BloopExitOptions(
1212
compilationServer: SharedCompilationServerOptions = SharedCompilationServerOptions(),
1313
@Recurse
1414
directories: SharedDirectoriesOptions = SharedDirectoriesOptions(),
15+
@Recurse
16+
coursier: CoursierOptions = CoursierOptions()
1517
) {
1618
// format: on
1719

1820
def bloopRifleConfig(): BloopRifleConfig =
1921
compilationServer.bloopRifleConfig(
2022
logging.logger,
23+
coursier.coursierCache(logging.logger.coursierLogger),
2124
logging.verbosity,
2225
"java", // shouldn't be used…
2326
directories.directories

modules/cli/src/main/scala/scala/cli/commands/BloopStartOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ final case class BloopStartOptions(
3333
def bloopRifleConfig(): BloopRifleConfig =
3434
compilationServer.bloopRifleConfig(
3535
logging.logger,
36+
coursier.coursierCache(logging.logger.coursierLogger),
3637
logging.verbosity,
3738
buildOptions.javaHome().value.javaCommand,
3839
directories.directories

modules/cli/src/main/scala/scala/cli/commands/Repl.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scala.cli.commands
22

33
import caseapp._
4+
import coursier.cache.FileCache
45

56
import scala.build.EitherCps.{either, value}
67
import scala.build.errors.BuildException
@@ -127,6 +128,7 @@ object Repl extends ScalaCommand[ReplOptions] {
127128
dryRun: Boolean
128129
): Either[BuildException, Unit] = either {
129130

131+
val cache = options.internal.cache.getOrElse(FileCache())
130132
val replArtifacts = value {
131133
if (options.notForBloopOptions.replOptions.useAmmonite)
132134
ReplArtifacts.ammonite(
@@ -136,6 +138,7 @@ object Repl extends ScalaCommand[ReplOptions] {
136138
artifacts.extraClassPath,
137139
artifacts.extraSourceJars,
138140
logger,
141+
cache,
139142
directories
140143
)
141144
else
@@ -144,6 +147,7 @@ object Repl extends ScalaCommand[ReplOptions] {
144147
artifacts.dependencies,
145148
artifacts.extraClassPath,
146149
logger,
150+
cache,
147151
options.finalRepositories
148152
)
149153
}

modules/cli/src/main/scala/scala/cli/commands/SharedCompilationServerOptions.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package scala.cli.commands
22

33
import caseapp._
4+
import coursier.cache.FileCache
45
import coursier.core.{Version => Ver}
6+
import coursier.util.Task
57
import upickle.default.{ReadWriter, macroRW}
68

79
import java.io.File
@@ -209,6 +211,7 @@ final case class SharedCompilationServerOptions(
209211

210212
def bloopRifleConfig(
211213
logger: Logger,
214+
cache: FileCache[Task],
212215
verbosity: Int,
213216
javaPath: String,
214217
directories: => scala.build.Directories,
@@ -250,7 +253,7 @@ final case class SharedCompilationServerOptions(
250253
.getOrElse(directories.bloopWorkingDir)
251254
val baseConfig = BloopRifleConfig.default(
252255
address,
253-
v => Bloop.bloopClassPath(logger, v),
256+
v => Bloop.bloopClassPath(logger, cache, v),
254257
workingDir.toIO
255258
)
256259

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ final case class SharedOptions(
194194
val ext = if (Properties.isWin) ".exe" else ""
195195
compilationServer.bloopRifleConfig(
196196
logging.logger,
197+
coursierCache,
197198
logging.verbosity,
198199
(command / "bin" / s"java$ext").toString,
199200
directories.directories,

0 commit comments

Comments
 (0)