From 6c1b441f11eb5483b4a585fbf77188f4666bd0d3 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 00:48:19 -0500 Subject: [PATCH 01/18] Bump version number --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index e9448bcb4..b879331ff 100644 --- a/build.sbt +++ b/build.sbt @@ -10,7 +10,7 @@ import scala.util.Try // ThisBuild settings take lower precedence, // but can be shared across the multi projects. ThisBuild / version := { - val v = "2.0.0-alpha6-SNAPSHOT" + val v = "2.0.0-alpha7-SNAPSHOT" nightlyVersion.getOrElse(v) } ThisBuild / version2_13 := "2.0.0-alpha1-SNAPSHOT" From c63aa642064f2da19edea6b1b476d5c8fa156c99 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 01:06:00 -0500 Subject: [PATCH 02/18] sbt 1.9.7 --- .gitignore | 1 + project/build.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 08ab853dc..d2a0e91e5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ npm-debug.log metals.sbt launcher-package/citest/freshly-baked .vscode +sbt-launch.jar diff --git a/project/build.properties b/project/build.properties index 8b9a0b0ab..e8a1e246e 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.8.0 +sbt.version=1.9.7 From bb26faaa2eaf981aee14cf93696cedef2730148a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 5 Nov 2023 18:40:52 -0500 Subject: [PATCH 03/18] Add .jvmopts --- .jvmopts | 1 + 1 file changed, 1 insertion(+) create mode 100644 .jvmopts diff --git a/.jvmopts b/.jvmopts new file mode 100644 index 000000000..7aa15de4c --- /dev/null +++ b/.jvmopts @@ -0,0 +1 @@ +-Xmx2G \ No newline at end of file From e87e1d6e0de16538a0c84948c74a175cd5f459ef Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 3 Jul 2023 03:10:54 -0400 Subject: [PATCH 04/18] Update to Scalafmt 3.7.14 --- .scalafmt.conf | 5 +++-- main-settings/src/main/scala/sbt/Append.scala | 2 +- main-settings/src/main/scala/sbt/Structure.scala | 3 +++ main/src/main/scala/sbt/Defaults.scala | 11 +++++------ .../main/scala/sbt/internal/FileChangesMacro.scala | 3 ++- .../sbt/internal/server/LanguageServerProtocol.scala | 4 +++- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.scalafmt.conf b/.scalafmt.conf index fe53f4b85..7b9ac01d6 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,4 +1,4 @@ -version = 3.6.0 +version = 3.7.14 runner.dialect = scala3 maxColumn = 100 @@ -26,5 +26,6 @@ trailingCommas = preserve # TODO update scalafmt and enable Scala 3 project.excludeFilters = [ - "internal/util-position/src/main/scala-3/sbt/internal/util/SourcePositionMacro.scala" + "internal/util-position/src/main/scala-3/sbt/internal/util/SourcePositionMacro.scala", + "main-settings/src/main/scala/sbt/Def.scala", ] diff --git a/main-settings/src/main/scala/sbt/Append.scala b/main-settings/src/main/scala/sbt/Append.scala index 19db3bc17..0147a6f07 100644 --- a/main-settings/src/main/scala/sbt/Append.scala +++ b/main-settings/src/main/scala/sbt/Append.scala @@ -57,7 +57,7 @@ object Append: override def appendValue(a: List[A1], b: V): List[A1] = a :+ (b: A1) given appendVectorImplicit[A1, V](using ev: Conversion[V, A1]): Sequence[Vector[A1], Vector[V], V] - with + with override def appendValues(a: Vector[A1], b: Vector[V]): Vector[A1] = a ++ b.map(x => (x: A1)) override def appendValue(a: Vector[A1], b: V): Vector[A1] = a :+ (b: A1) diff --git a/main-settings/src/main/scala/sbt/Structure.scala b/main-settings/src/main/scala/sbt/Structure.scala index b435c3360..19ebd8b72 100644 --- a/main-settings/src/main/scala/sbt/Structure.scala +++ b/main-settings/src/main/scala/sbt/Structure.scala @@ -373,6 +373,8 @@ object Scoped: } private[sbt] trait Syntax: + + // format: off // richInitialize extension [A1](init: Initialize[A1]) @targetName("mapTaskInitialize") @@ -380,6 +382,7 @@ object Scoped: @targetName("flatMapValueInitialize") def flatMapTaskValue[A2](f: A1 => Task[A2]): Initialize[Task[A2]] = init(f) + // format: on // richInitializeTask extension [A1](init: Initialize[Task[A1]]) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 071866a78..57a35a032 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -2523,12 +2523,11 @@ object Defaults extends BuildCommon { mappers.foldRight({ (p: Position) => withAbsoluteSource(p) // Fallback if sourcePositionMappers is empty - }) { - (mapper, previousPosition) => - { (p: Position) => - // To each mapper we pass the position with the absolute source (only if reportAbsolutePath = true of course) - mapper(withAbsoluteSource(p)).getOrElse(previousPosition(p)) - } + }) { (mapper, previousPosition) => + { (p: Position) => + // To each mapper we pass the position with the absolute source (only if reportAbsolutePath = true of course) + mapper(withAbsoluteSource(p)).getOrElse(previousPosition(p)) + } } } diff --git a/main/src/main/scala/sbt/internal/FileChangesMacro.scala b/main/src/main/scala/sbt/internal/FileChangesMacro.scala index d95c2c43f..091d2329e 100644 --- a/main/src/main/scala/sbt/internal/FileChangesMacro.scala +++ b/main/src/main/scala/sbt/internal/FileChangesMacro.scala @@ -23,6 +23,7 @@ import scala.quoted.* */ object FileChangesMacro: + // format: off extension [A](in: TaskKey[A]) @compileTimeOnly( "`inputFileChanges` can only be called on a task within a task definition macro, such as :=, +=, ++=, or Def.task." @@ -47,7 +48,7 @@ object FileChangesMacro: ) inline def outputFiles: Seq[NioPath] = ${ FileChangesMacro.outputFilesImpl[A]('in) } - + // format: on def changedInputFilesImpl[A: Type](in: Expr[TaskKey[A]])(using qctx: Quotes): Expr[FileChanges] = impl[A]( in = in, diff --git a/main/src/main/scala/sbt/internal/server/LanguageServerProtocol.scala b/main/src/main/scala/sbt/internal/server/LanguageServerProtocol.scala index 57c1c9c13..8279c2fbb 100644 --- a/main/src/main/scala/sbt/internal/server/LanguageServerProtocol.scala +++ b/main/src/main/scala/sbt/internal/server/LanguageServerProtocol.scala @@ -22,7 +22,9 @@ private[sbt] final case class LangServerError(code: Long, message: String) private[sbt] object LanguageServerProtocol { private val internalJsonProtocol = new sbt.internal.langserver.codec.JsonProtocol - with sbt.protocol.codec.JsonProtocol with sjsonnew.BasicJsonProtocol with InitializeOptionFormats + with sbt.protocol.codec.JsonProtocol + with sjsonnew.BasicJsonProtocol + with InitializeOptionFormats import internalJsonProtocol._ From f8f8db9e5859503db15860e3d5bcdfc5887548f6 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 15:50:50 -0500 Subject: [PATCH 05/18] Update to Scala 3.3.1 --- buildfile/src/main/scala/sbt/internal/Eval.scala | 9 +++++---- project/Dependencies.scala | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/buildfile/src/main/scala/sbt/internal/Eval.scala b/buildfile/src/main/scala/sbt/internal/Eval.scala index 5b95043bf..f558d51ff 100644 --- a/buildfile/src/main/scala/sbt/internal/Eval.scala +++ b/buildfile/src/main/scala/sbt/internal/Eval.scala @@ -387,11 +387,12 @@ object Eval: tree match case tpd.ValDef(name, tpt, _) if isTopLevelModule(tree.symbol.owner) && isAcceptableType(tpt.tpe) => + vals ::= name.mangledString + case tpd.ValDef(name, tpt, _) if name.mangledString.contains("$lzy") => val str = name.mangledString - vals ::= ( - if str.contains("$lzy") then str.take(str.indexOf("$")) - else str - ) + val methodName = str.take(str.indexOf("$")) + val m = tree.symbol.owner.requiredMethod(methodName) + if isAcceptableType(m.info) then vals ::= methodName case t: tpd.Template => this((), t.body) case t: tpd.PackageDef => this((), t.stats) case t: tpd.TypeDef => this((), t.rhs) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 2a90cdc7a..1d666fa8c 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,7 +6,7 @@ object Dependencies { // WARNING: Please Scala update versions in PluginCross.scala too val scala212 = "2.12.17" val scala213 = "2.13.8" - val scala3 = "3.2.1" + val scala3 = "3.3.1" val checkPluginCross = settingKey[Unit]("Make sure scalaVersion match up") val baseScalaVersion = scala3 def nightlyVersion: Option[String] = From a7d5694c67813a5f6913d565a909f998fcf89a1c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 24 Nov 2023 18:51:20 -0500 Subject: [PATCH 06/18] Workaround for doc not working --- build.sbt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.sbt b/build.sbt index b879331ff..ae694c78b 100644 --- a/build.sbt +++ b/build.sbt @@ -950,6 +950,8 @@ lazy val mainProj = (project in file("main")) Test / testOptions += Tests .Argument(TestFrameworks.ScalaCheck, "-minSuccessfulTests", "1000"), SettingKey[Boolean]("usePipelining") := false, + // TODO: Fix doc + Compile / doc / sources := Nil, // mimaSettings, // mimaBinaryIssueFilters ++= Vector(), ) From bde26f6c51a098318292de05a8f7f6c4a76f0017 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 20:49:04 -0500 Subject: [PATCH 07/18] Communicate narrowing by adding case --- .../src/main/scala/sbt/Previous.scala | 9 +++--- main/src/main/scala/sbt/EvaluateTask.scala | 5 ++-- .../scala/sbt/internal/ClasspathImpl.scala | 29 +++++++------------ 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/main-settings/src/main/scala/sbt/Previous.scala b/main-settings/src/main/scala/sbt/Previous.scala index 95d02e5ef..b26e67dfa 100644 --- a/main-settings/src/main/scala/sbt/Previous.scala +++ b/main-settings/src/main/scala/sbt/Previous.scala @@ -27,7 +27,8 @@ private[sbt] final class Previous(streams: Streams, referenced: IMap[Previous.Ke // We can't use mapValues to transform the map because mapValues is lazy and evaluates the // transformation function every time a value is fetched from the map, defeating the entire // purpose of ReferencedValue. - for (referenced.TPair(k, v) <- referenced.toTypedSeq) map = map.put(k, new ReferencedValue(v)) + for case referenced.TPair(k, v) <- referenced.toTypedSeq do + map = map.put(k, new ReferencedValue(v)) private[this] final class ReferencedValue[T](referenced: Referenced[T]) { lazy val previousValue: Option[T] = referenced.read(streams) @@ -122,10 +123,10 @@ object Previous { // We first collect all of the successful tasks and write their scoped key into a map // along with their values. - val successfulTaskResults = (for { - results.TPair(task, Result.Value(v)) <- results.toTypedSeq + val successfulTaskResults = (for + case results.TPair(task, Result.Value(v)) <- results.toTypedSeq key <- task.info.attributes.get(Def.taskDefinitionKey).asInstanceOf[Option[AnyTaskKey]] - } yield key -> v).toMap + yield key -> v).toMap // We then traverse the successful results and look up all of the referenced values for // each of these tasks. This can be a many to one relationship if multiple tasks refer // the previous value of another task. For each reference we find, we check if the task has diff --git a/main/src/main/scala/sbt/EvaluateTask.scala b/main/src/main/scala/sbt/EvaluateTask.scala index 49886c4ec..8e663f8b4 100644 --- a/main/src/main/scala/sbt/EvaluateTask.scala +++ b/main/src/main/scala/sbt/EvaluateTask.scala @@ -396,9 +396,8 @@ object EvaluateTask { } import ExceptionCategory._ - for { - (key, msg, Some(ex)) <- keyed - } do + for case (key, msg, Some(ex)) <- keyed + do def log = getStreams(key, streams).log ExceptionCategory(ex) match { case AlreadyHandled => () diff --git a/main/src/main/scala/sbt/internal/ClasspathImpl.scala b/main/src/main/scala/sbt/internal/ClasspathImpl.scala index 9727feb7a..cf4e769cf 100644 --- a/main/src/main/scala/sbt/internal/ClasspathImpl.scala +++ b/main/src/main/scala/sbt/internal/ClasspathImpl.scala @@ -335,19 +335,16 @@ private[sbt] object ClasspathImpl { conf: Configuration, data: Settings[Scope], deps: BuildDependencies - ): Seq[(ProjectRef, String)] = { + ): Seq[(ProjectRef, String)] = val visited = (new LinkedHashSet[(ProjectRef, String)]).asScala - def visit(p: ProjectRef, c: Configuration): Unit = { + def visit(p: ProjectRef, c: Configuration): Unit = val applicableConfigs = allConfigs(c) - for { - ac <- applicableConfigs - } // add all configurations in this project + for ac <- applicableConfigs do + // add all configurations in this project visited add (p -> ac.name) val masterConfs = names(getConfigurations(projectRef, data).toVector) - for { - ClasspathDep.ResolvedClasspathDependency(dep, confMapping) <- deps.classpath(p) - } { + for case ClasspathDep.ResolvedClasspathDependency(dep, confMapping) <- deps.classpath(p) do val configurations = getConfigurations(dep, data) val mapping = mapped( @@ -358,21 +355,15 @@ private[sbt] object ClasspathImpl { "*->compile" ) // map master configuration 'c' and all extended configurations to the appropriate dependency configuration - for { + for ac <- applicableConfigs depConfName <- mapping(ac.name) - } { - for { - depConf <- confOpt(configurations, depConfName) - } if (!visited((dep, depConfName))) { - visit(dep, depConf) - } - } - } - } + do + for depConf <- confOpt(configurations, depConfName) do + if !visited((dep, depConfName)) then visit(dep, depConf) visit(projectRef, conf) visited.toSeq - } + end interSort def mapped( confString: Option[String], From dd2dd44de35fd7bce00cfc83accbc27ffb31ffc0 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 24 Nov 2023 16:36:14 -0500 Subject: [PATCH 08/18] Update to lm 2.0.0-alpha12 --- project/Dependencies.scala | 4 ++-- .../src/sbt-test/dependency-management/platform/build.sbt | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 1d666fa8c..bd3225ba6 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -15,7 +15,7 @@ object Dependencies { // sbt modules private val ioVersion = nightlyVersion.getOrElse("1.8.0") private val lmVersion = - sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("2.0.0-alpha11") + sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("2.0.0-alpha12") val zincVersion = nightlyVersion.getOrElse("2.0.0-alpha6") private val sbtIO = "org.scala-sbt" %% "io" % ioVersion @@ -80,7 +80,7 @@ object Dependencies { def addSbtZincCompileCore = addSbtModule(sbtZincPath, "zincCompileCore", zincCompileCore) // val lmCoursierShaded = "io.get-coursier" %% "lm-coursier-shaded" % "2.0.10" - val lmCoursierShaded = "org.scala-sbt" %% "librarymanagement-coursier" % "2.0.0-alpha5" + val lmCoursierShaded = "org.scala-sbt" %% "librarymanagement-coursier" % "2.0.0-alpha6" lazy val sjsonNewVersion = "0.13.0" def sjsonNew(n: String) = Def.setting( diff --git a/sbt-app/src/sbt-test/dependency-management/platform/build.sbt b/sbt-app/src/sbt-test/dependency-management/platform/build.sbt index 024af30a9..67afb74c2 100644 --- a/sbt-app/src/sbt-test/dependency-management/platform/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/platform/build.sbt @@ -5,11 +5,17 @@ platform := Platform.sjs1 // By default platformOpt field is set to None // Given %% lm engines will sustitute it with the subproject's platform suffix on `update` -libraryDependencies += "com.github.scopt" %% "scopt" % "4.1.0" +libraryDependencies ++= Seq( + "com.github.scopt" %% "scopt" % "4.1.0", + "junit" % "junit" % "4.13.1", +) TaskKey[Unit]("check") := { val ur = update.value val files = ur.matching(moduleFilter(organization = "com.github.scopt", name = "scopt_sjs1_2.13", revision = "*")) assert(files.nonEmpty, s"sjs1 scopt module was not found in update report: $ur") + + val files2 = ur.matching(moduleFilter(organization = "junit", name = "junit", revision = "*")) + assert(files2.nonEmpty, s"junit module was not found in update report: $ur") } csrCacheDirectory := baseDirectory.value / "coursier-cache" From 08966370b1eb63f00d5bca4ec791b10896c0fd7b Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 29 Oct 2023 15:35:11 -0400 Subject: [PATCH 09/18] Update to lm 2.0.0-alpha13 for sjson-new --- main-actions/src/main/scala/sbt/Sync.scala | 21 ++++++++++++++++++- main/src/main/scala/sbt/Defaults.scala | 7 +++++-- main/src/main/scala/sbt/RemoteCache.scala | 2 +- .../CoursierRepositoriesTasks.scala | 2 +- .../scala/sbt/coursierint/LMCoursier.scala | 6 +++--- .../sbt/internal/LibraryManagement.scala | 9 ++++---- main/src/main/scala/sbt/internal/Load.scala | 4 +++- project/Dependencies.scala | 4 ++-- .../inc/IvyBridgeProviderSpecification.scala | 2 +- 9 files changed, 41 insertions(+), 16 deletions(-) diff --git a/main-actions/src/main/scala/sbt/Sync.scala b/main-actions/src/main/scala/sbt/Sync.scala index 8f175b2c9..0be07cf1f 100644 --- a/main-actions/src/main/scala/sbt/Sync.scala +++ b/main-actions/src/main/scala/sbt/Sync.scala @@ -17,7 +17,15 @@ import sbt.util.CacheImplicits._ import sbt.util.{ CacheStore, FileInfo } import sbt.io.IO import sbt.librarymanagement.LibraryManagementCodec -import sjsonnew.{ Builder, JsonFormat, Unbuilder, deserializationError } +import sjsonnew.{ + Builder, + IsoString, + IsoStringLong, + JsonFormat, + PathOnlyFormats, + Unbuilder, + deserializationError, +} import xsbti.{ FileConverter, VirtualFileRef } /** @@ -126,11 +134,20 @@ object Sync { } } + private lazy val fileIsoString: IsoString[File] = + val iso = summon[IsoStringLong[File]] + IsoString.iso( + (file: File) => iso.to(file)._1, + (s: String) => iso.from((s, 0)), + ) + def writeInfo[F <: FileInfo]( store: CacheStore, relation: Relation[File, File], info: Map[File, F] )(implicit infoFormat: JsonFormat[F]): Unit = + given IsoString[File] = fileIsoString + import PathOnlyFormats.given store.write((relation, info)) def writeInfoVirtual[F <: FileInfo]( @@ -213,6 +230,8 @@ object Sync { private def readUncaught[F <: FileInfo]( store: CacheStore )(implicit infoFormat: JsonFormat[F]): RelationInfo[F] = + given IsoString[File] = fileIsoString + import PathOnlyFormats.given store.read(default = (Relation.empty[File, File], Map.empty[File, F])) private def readUncaughtVirtual[F <: FileInfo]( diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 57a35a032..6fed83730 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3043,7 +3043,10 @@ object Classpaths { } }).value, moduleName := normalizedName.value, - ivyPaths := IvyPaths(baseDirectory.value, bootIvyHome(appConfiguration.value)), + ivyPaths := IvyPaths( + baseDirectory.value.toString, + bootIvyHome(appConfiguration.value).map(_.toString) + ), csrCacheDirectory := { val old = csrCacheDirectory.value val ac = appConfiguration.value @@ -3055,7 +3058,7 @@ object Classpaths { else if (ip.ivyHome == defaultIvyCache) old else ip.ivyHome match { - case Some(home) => home / "coursier-cache" + case Some(home) => new File(home) / "coursier-cache" case _ => old } } else Classpaths.dummyCoursierDirectory(ac) diff --git a/main/src/main/scala/sbt/RemoteCache.scala b/main/src/main/scala/sbt/RemoteCache.scala index a9e8c866c..ae7622be5 100644 --- a/main/src/main/scala/sbt/RemoteCache.scala +++ b/main/src/main/scala/sbt/RemoteCache.scala @@ -65,7 +65,7 @@ object RemoteCache { val app = appConfiguration.value val base = app.baseDirectory.getCanonicalFile // base is used only to resolve relative paths, which should never happen - IvyPaths(base, localCacheDirectory.value) + IvyPaths(base.toString, localCacheDirectory.value.toString) }, ) diff --git a/main/src/main/scala/sbt/coursierint/CoursierRepositoriesTasks.scala b/main/src/main/scala/sbt/coursierint/CoursierRepositoriesTasks.scala index 7839d70ba..fbf8043da 100644 --- a/main/src/main/scala/sbt/coursierint/CoursierRepositoriesTasks.scala +++ b/main/src/main/scala/sbt/coursierint/CoursierRepositoriesTasks.scala @@ -67,7 +67,7 @@ object CoursierRepositoriesTasks { val result2 = paths.ivyHome match { case Some(ivyHome) => - val ivyHomeUri = ivyHome.getPath + val ivyHomeUri = ivyHome result1 map { case r: FileRepository => val ivyPatterns = r.patterns.ivyPatterns map { diff --git a/main/src/main/scala/sbt/coursierint/LMCoursier.scala b/main/src/main/scala/sbt/coursierint/LMCoursier.scala index ac63a08ba..06d5fb159 100644 --- a/main/src/main/scala/sbt/coursierint/LMCoursier.scala +++ b/main/src/main/scala/sbt/coursierint/LMCoursier.scala @@ -92,7 +92,7 @@ object LMCoursier { createLogger: Option[CacheLogger], cacheDirectory: File, reconciliation: Seq[(ModuleMatchers, Reconciliation)], - ivyHome: Option[File], + ivyHome: Option[String], strict: Option[CStrict], depsOverrides: Seq[ModuleID], log: Logger @@ -140,7 +140,7 @@ object LMCoursier { createLogger: Option[CacheLogger], cacheDirectory: File, reconciliation: Seq[(ModuleMatchers, Reconciliation)], - ivyHome: Option[File], + ivyHome: Option[String], strict: Option[CStrict], depsOverrides: Seq[ModuleID], updateConfig: Option[UpdateConfiguration], @@ -192,7 +192,7 @@ object LMCoursier { .withCache(cacheDirectory) .withReconciliation(reconciliation.toVector) .withLog(log) - .withIvyHome(ivyHome) + .withIvyHome(ivyHome.map(new File(_))) .withStrict(strict) .withForceVersions(userForceVersions.toVector) .withMissingOk(missingOk) diff --git a/main/src/main/scala/sbt/internal/LibraryManagement.scala b/main/src/main/scala/sbt/internal/LibraryManagement.scala index d793b0f4c..85bd5f971 100644 --- a/main/src/main/scala/sbt/internal/LibraryManagement.scala +++ b/main/src/main/scala/sbt/internal/LibraryManagement.scala @@ -110,8 +110,8 @@ private[sbt] object LibraryManagement { !force && !depsUpdated && !inChanged && - out.allFiles.forall(f => fileUptodate(f, out.stamps, log)) && - fileUptodate(out.cachedDescriptor, out.stamps, log) + out.allFiles.forall(f => fileUptodate(f.toString, out.stamps, log)) && + fileUptodate(out.cachedDescriptor.toString, out.stamps, log) } /* Skip resolve if last output exists, otherwise error. */ @@ -166,7 +166,8 @@ private[sbt] object LibraryManagement { handler((extraInputHash, settings, withoutClock)) } - private[this] def fileUptodate(file: File, stamps: Map[File, Long], log: Logger): Boolean = { + private[this] def fileUptodate(file0: String, stamps: Map[String, Long], log: Logger): Boolean = { + val file = File(file0) val exists = file.exists // https://github.com/sbt/sbt/issues/5292 warn the user that the file is missing since this indicates // that UpdateReport was persisted but Coursier cache was not. @@ -175,7 +176,7 @@ private[sbt] object LibraryManagement { } // coursier doesn't populate stamps val timeStampIsSame = stamps - .get(file) + .get(file0) .forall(_ == IO.getModifiedTimeOrZero(file)) exists && timeStampIsSame } diff --git a/main/src/main/scala/sbt/internal/Load.scala b/main/src/main/scala/sbt/internal/Load.scala index 302a87d1e..e44079a04 100755 --- a/main/src/main/scala/sbt/internal/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -82,7 +82,9 @@ private[sbt] object Load { Attributed.blankSeq(provider.mainClasspath.toIndexedSeq ++ scalaProvider.jars.toIndexedSeq) val ivyConfiguration = InlineIvyConfiguration() - .withPaths(IvyPaths(baseDirectory, bootIvyHome(state.configuration))) + .withPaths( + IvyPaths(baseDirectory.toString, bootIvyHome(state.configuration).map(_.toString)) + ) .withResolvers(Resolver.combineDefaultResolvers(Vector.empty)) .withLog(log) val dependencyResolution = IvyDependencyResolution(ivyConfiguration) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index bd3225ba6..5fd069bbf 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -15,7 +15,7 @@ object Dependencies { // sbt modules private val ioVersion = nightlyVersion.getOrElse("1.8.0") private val lmVersion = - sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("2.0.0-alpha12") + sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("2.0.0-alpha13") val zincVersion = nightlyVersion.getOrElse("2.0.0-alpha6") private val sbtIO = "org.scala-sbt" %% "io" % ioVersion @@ -82,7 +82,7 @@ object Dependencies { // val lmCoursierShaded = "io.get-coursier" %% "lm-coursier-shaded" % "2.0.10" val lmCoursierShaded = "org.scala-sbt" %% "librarymanagement-coursier" % "2.0.0-alpha6" - lazy val sjsonNewVersion = "0.13.0" + lazy val sjsonNewVersion = "0.14.0-M1" def sjsonNew(n: String) = Def.setting( "com.eed3si9n" %% n % sjsonNewVersion ) // contrabandSjsonNewVersion.value 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 e465c397a..a45af3462 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 @@ -88,7 +88,7 @@ abstract class IvyBridgeProviderSpecification val resolvers = resolvers0.toVector val chainResolver = ChainedResolver("zinc-chain", resolvers) InlineIvyConfiguration() - .withPaths(IvyPaths(baseDirectory, Some(ivyHome))) + .withPaths(IvyPaths(baseDirectory.toString, Some(ivyHome.toString))) .withResolvers(resolvers) .withModuleConfigurations(Vector(ModuleConfiguration("*", chainResolver))) .withLock(None) From c838c492b199a103b04210cfe0581d0422269528 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 21:16:17 -0500 Subject: [PATCH 10/18] Update to librarymanagement-coursier 2.0.0-alpha7 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 5fd069bbf..217402491 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -80,7 +80,7 @@ object Dependencies { def addSbtZincCompileCore = addSbtModule(sbtZincPath, "zincCompileCore", zincCompileCore) // val lmCoursierShaded = "io.get-coursier" %% "lm-coursier-shaded" % "2.0.10" - val lmCoursierShaded = "org.scala-sbt" %% "librarymanagement-coursier" % "2.0.0-alpha6" + val lmCoursierShaded = "org.scala-sbt" %% "librarymanagement-coursier" % "2.0.0-alpha7" lazy val sjsonNewVersion = "0.14.0-M1" def sjsonNew(n: String) = Def.setting( From f9686b2f0c10287dcc850bfa66a8fa317a5cb80e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 26 Nov 2023 00:28:47 -0500 Subject: [PATCH 11/18] Disable fork-loader test --- sbt-app/src/sbt-test/run/fork-loader/{test => disabled} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sbt-app/src/sbt-test/run/fork-loader/{test => disabled} (100%) diff --git a/sbt-app/src/sbt-test/run/fork-loader/test b/sbt-app/src/sbt-test/run/fork-loader/disabled similarity index 100% rename from sbt-app/src/sbt-test/run/fork-loader/test rename to sbt-app/src/sbt-test/run/fork-loader/disabled From 8098702a1aca1e3c0da514dfa8ec80e7828db468 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 26 Nov 2023 21:05:47 -0500 Subject: [PATCH 12/18] Update to Zinc 2.0.0-alpha8 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 217402491..5252c31ef 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -16,7 +16,7 @@ object Dependencies { private val ioVersion = nightlyVersion.getOrElse("1.8.0") private val lmVersion = sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("2.0.0-alpha13") - val zincVersion = nightlyVersion.getOrElse("2.0.0-alpha6") + val zincVersion = nightlyVersion.getOrElse("2.0.0-alpha8") private val sbtIO = "org.scala-sbt" %% "io" % ioVersion From fef08a03a5620d987a4d36288bf72d1159c188df Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2023 00:36:32 -0500 Subject: [PATCH 13/18] Bump version number --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index ae694c78b..092379d9f 100644 --- a/build.sbt +++ b/build.sbt @@ -10,7 +10,7 @@ import scala.util.Try // ThisBuild settings take lower precedence, // but can be shared across the multi projects. ThisBuild / version := { - val v = "2.0.0-alpha7-SNAPSHOT" + val v = "2.0.0-alpha8-SNAPSHOT" nightlyVersion.getOrElse(v) } ThisBuild / version2_13 := "2.0.0-alpha1-SNAPSHOT" From 81660b6734c1e3387291585def11b9e5860e808a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2023 00:36:45 -0500 Subject: [PATCH 14/18] Fix FileInfo --- main-actions/src/main/scala/sbt/Sync.scala | 1 - .../src/main/scala/sbt/util/FileInfo.scala | 31 +++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/main-actions/src/main/scala/sbt/Sync.scala b/main-actions/src/main/scala/sbt/Sync.scala index 0be07cf1f..4e783d4c9 100644 --- a/main-actions/src/main/scala/sbt/Sync.scala +++ b/main-actions/src/main/scala/sbt/Sync.scala @@ -162,7 +162,6 @@ object Sync { fileConverter.toVirtualFile(file.toPath) -> fileInfo } - import LibraryManagementCodec._ import sjsonnew.IsoString implicit def virtualFileRefStringIso: IsoString[VirtualFileRef] = IsoString.iso[VirtualFileRef](_.toString, VirtualFileRef.of(_)) diff --git a/util-cache/src/main/scala/sbt/util/FileInfo.scala b/util-cache/src/main/scala/sbt/util/FileInfo.scala index 3fbb8de6f..394ed07bd 100644 --- a/util-cache/src/main/scala/sbt/util/FileInfo.scala +++ b/util-cache/src/main/scala/sbt/util/FileInfo.scala @@ -11,8 +11,7 @@ import java.io.File import scala.util.control.NonFatal import sbt.io.{ Hash, IO } -import sjsonnew.{ Builder, DeserializationException, JsonFormat, Unbuilder, deserializationError } -import CacheImplicits.{ arrayFormat => _, _ } +import sjsonnew.{ arrayFormat => _, _ } import sbt.nio.file._ import sbt.nio.file.syntax._ @@ -118,7 +117,7 @@ object FileInfo { implicit val format: JsonFormat[HashModifiedFileInfo] = new JsonFormat[HashModifiedFileInfo] { def write[J](obj: HashModifiedFileInfo, builder: Builder[J]) = { builder.beginObject() - builder.addField("file", obj.file) + builder.addField("file", obj.file.toString) builder.addField("hash", obj.hashArray) builder.addField("lastModified", obj.lastModified) builder.endObject() @@ -127,11 +126,11 @@ object FileInfo { def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]) = jsOpt match { case Some(js) => unbuilder.beginObject(js) - val file = unbuilder.readField[File]("file") + val file = unbuilder.readField[String]("file") val hash = unbuilder.readField[Array[Byte]]("hash") val lastModified = unbuilder.readField[Long]("lastModified") unbuilder.endObject() - FileHashModifiedArrayRepr(file, hash, lastModified) + FileHashModifiedArrayRepr(new File(file), hash, lastModified) case None => deserializationError("Expected JsObject but found None") } } @@ -148,7 +147,7 @@ object FileInfo { implicit val format: JsonFormat[HashFileInfo] = new JsonFormat[HashFileInfo] { def write[J](obj: HashFileInfo, builder: Builder[J]) = { builder.beginObject() - builder.addField("file", obj.file) + builder.addField("file", obj.file.toString) builder.addField("hash", obj.hashArray) builder.endObject() } @@ -156,10 +155,10 @@ object FileInfo { def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]) = jsOpt match { case Some(js) => unbuilder.beginObject(js) - val file = unbuilder.readField[File]("file") + val file = unbuilder.readField[String]("file") val hash = unbuilder.readField[Array[Byte]]("hash") unbuilder.endObject() - FileHashArrayRepr(file, hash) + FileHashArrayRepr(new File(file), hash) case None => deserializationError("Expected JsObject but found None") } } @@ -182,18 +181,18 @@ object FileInfo { jsOpt match { case Some(js) => unbuilder.beginObject(js) - val file = unbuilder.readField[File]("file") - val lastModified = unbuilder.readField[Long]("lastModified") + val file = unbuilder.readField[String]("file") + val lastModified = unbuilder.readField[String]("lastModified").toLong unbuilder.endObject() - FileModified(file, lastModified) + FileModified(new File(file), lastModified) case None => deserializationError("Expected JsObject but found None") } override def write[J](obj: ModifiedFileInfo, builder: Builder[J]): Unit = { builder.beginObject() - builder.addField("file", obj.file) - builder.addField("lastModified", obj.lastModified) + builder.addField[String]("file", obj.file.toString) + builder.addField[String]("lastModified", obj.lastModified.toString) builder.endObject() } } @@ -232,7 +231,7 @@ object FileInfo { implicit val format: JsonFormat[PlainFileInfo] = new JsonFormat[PlainFileInfo] { def write[J](obj: PlainFileInfo, builder: Builder[J]): Unit = { builder.beginObject() - builder.addField("file", obj.file) + builder.addField("file", obj.file.toString) builder.addField("exists", obj.exists) builder.endObject() } @@ -240,10 +239,10 @@ object FileInfo { def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]) = jsOpt match { case Some(js) => unbuilder.beginObject(js) - val file = unbuilder.readField[File]("file") + val file = unbuilder.readField[String]("file") val exists = unbuilder.readField[Boolean]("exists") unbuilder.endObject() - PlainFile(file, exists) + PlainFile(new File(file), exists) case None => deserializationError("Expected JsObject but found None") } } From a8b46219ea7baf15eabc91cf4fa148f1548658e5 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2023 01:34:04 -0500 Subject: [PATCH 15/18] Mark actions/doc pending --- sbt-app/src/sbt-test/actions/doc/{test => pending} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sbt-app/src/sbt-test/actions/doc/{test => pending} (100%) diff --git a/sbt-app/src/sbt-test/actions/doc/test b/sbt-app/src/sbt-test/actions/doc/pending similarity index 100% rename from sbt-app/src/sbt-test/actions/doc/test rename to sbt-app/src/sbt-test/actions/doc/pending From 290d8f1a595026cd9b15fca7a2dec36f4a95e0de Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2023 01:51:23 -0500 Subject: [PATCH 16/18] Mark test-artifact pending --- .../test-artifact/pending | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sbt-app/src/sbt-test/dependency-management/test-artifact/pending diff --git a/sbt-app/src/sbt-test/dependency-management/test-artifact/pending b/sbt-app/src/sbt-test/dependency-management/test-artifact/pending new file mode 100644 index 000000000..e52a939c9 --- /dev/null +++ b/sbt-app/src/sbt-test/dependency-management/test-artifact/pending @@ -0,0 +1,36 @@ +# define a test jar and publish locally as ivy.xml +# and to a file repository as pom.xml + +$ copy-file changes/def/build.sbt build.sbt +$ copy-file changes/def/Def.java src/test/java/Def.java +> reload +> publishLocal +> publish +> clean + +$ delete build.sbt +$ delete src/test/java/Def.java + +# use the test jar from the maven repository +# by requesting the "tests" classifier + +$ copy-file changes/use/build.sbt build.sbt +$ copy-file changes/use/Use.java Use.java +$ copy-file changes/use/pom.sbt pom.sbt +> reload +> compile +> clean + +# necessary because the cache can't deal with two different types of metadata +$ delete ivy-cache/cache + + +# then, use the test jar via the Ivy repository +# by requesting the "test" configuration + +$ delete pom.sbt +$ copy-file changes/use/local.sbt local.sbt +> reload +> show update +> export dependencyClasspath +> compile From 035cc8da60e96ac96db185f7ef09c14b889ed184 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 Nov 2023 22:36:42 -0500 Subject: [PATCH 17/18] Fix ivyPaths --- .../dependency-management/artifact/build.sbt | 2 +- .../cache-classifiers/multi.sbt | 2 +- .../cache-local/cache.sbt | 2 +- .../dependency-management/cache-local/test | 2 +- .../cache-resolver/cache.sbt | 6 ++-- .../cache-update/build.sbt | 8 ++--- .../changes/multi.sbt | 5 ++- .../cached-resolution-circular/multi.sbt | 5 ++- .../cached-resolution-classifier/multi.sbt | 5 ++- .../build.sbt | 5 ++- .../cached-resolution-conflicts/multi.sbt | 5 ++- .../cached-resolution-exclude/multi.sbt | 5 ++- .../cached-resolution-force/multi.sbt | 5 ++- .../cached-resolution-interproj/multi.sbt | 5 ++- .../cached-resolution-overrides/multi.sbt | 5 ++- .../chainresolver/build.sbt | 5 ++- .../circular-dependency/changes/multi.sbt | 5 ++- .../circular-dependency/multi.sbt | 5 ++- .../classifier/build.sbt | 2 +- .../credentials/build.sbt | 2 +- .../deliver-artifacts/build.sbt | 5 ++- .../exclude-transitive/build.sbt | 5 ++- .../extra/DefineColor.sbt | 5 ++- .../extra/changes/UseColor.sbt | 7 ++-- .../dependency-management/force/build.sbt | 5 ++- .../dependency-management/info/build.sbt | 5 ++- .../inline-dependencies-a/build.sbt | 3 +- .../metadata-only-resolver/build.sbt | 2 -- .../no-file-fails-publish/build.sbt | 3 +- .../dependency-management/override/build.sbt | 2 -- .../pom-parent-pom/build.sbt | 9 +++-- .../snapshot-local/build.sbt | 9 +++-- .../snapshot-resolution/build.sbt | 9 +++-- .../dependency-management/t468/build.sbt | 2 +- .../test-artifact/cache.sbt | 2 +- .../dependency-management/test-artifact/test | 36 ------------------- .../dependency-management/url/build.sbt | 5 ++- 37 files changed, 107 insertions(+), 93 deletions(-) delete mode 100644 sbt-app/src/sbt-test/dependency-management/test-artifact/test diff --git a/sbt-app/src/sbt-test/dependency-management/artifact/build.sbt b/sbt-app/src/sbt-test/dependency-management/artifact/build.sbt index 87a0a5b4c..c9cec1c99 100644 --- a/sbt-app/src/sbt-test/dependency-management/artifact/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/artifact/build.sbt @@ -19,7 +19,7 @@ lazy val Dev = config("dev").extend(Compile) lazy val root = (project in file(".")) .configs(Dev) .settings( - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), + ivyPaths := IvyPaths(baseDirectory.value.toString, Some((target.value / "ivy-cache").toString)), publishTo := Some(Resolver.file("Test Publish Repo", file("test-repo"))), scalaCompilerBridgeResolvers += userLocalFileResolver(appConfiguration.value), resolvers += baseDirectory { base => "Test Repo" at (base / "test-repo").toURI.toString }.value, diff --git a/sbt-app/src/sbt-test/dependency-management/cache-classifiers/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cache-classifiers/multi.sbt index 9bca7e9d9..37637a953 100644 --- a/sbt-app/src/sbt-test/dependency-management/cache-classifiers/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cache-classifiers/multi.sbt @@ -7,7 +7,7 @@ ThisBuild / useCoursier := false ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" def localCache = - ivyPaths := IvyPaths(baseDirectory.value, Some((ThisBuild / baseDirectory).value / "ivy" / "cache")) + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) val b = project .settings( diff --git a/sbt-app/src/sbt-test/dependency-management/cache-local/cache.sbt b/sbt-app/src/sbt-test/dependency-management/cache-local/cache.sbt index 0623e2bce..0e0248829 100644 --- a/sbt-app/src/sbt-test/dependency-management/cache-local/cache.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cache-local/cache.sbt @@ -1,2 +1,2 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -ivyPaths := { IvyPaths(baseDirectory.value, Some(target.value / ".ivy2")) } +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) diff --git a/sbt-app/src/sbt-test/dependency-management/cache-local/test b/sbt-app/src/sbt-test/dependency-management/cache-local/test index 8919b5ea0..d84187f2d 100644 --- a/sbt-app/src/sbt-test/dependency-management/cache-local/test +++ b/sbt-app/src/sbt-test/dependency-management/cache-local/test @@ -11,7 +11,7 @@ $ copy-file changes/use.sbt build.sbt > update > update -$ delete target/.ivy2/local +$ delete ivy/cache/local -> update $ copy-file changes/resolver.sbt resolver.sbt diff --git a/sbt-app/src/sbt-test/dependency-management/cache-resolver/cache.sbt b/sbt-app/src/sbt-test/dependency-management/cache-resolver/cache.sbt index 699a01ea0..426d07c7e 100644 --- a/sbt-app/src/sbt-test/dependency-management/cache-resolver/cache.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cache-resolver/cache.sbt @@ -1,8 +1,6 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -ThisBuild / ivyPaths := { - val base = (ThisBuild / baseDirectory).value - IvyPaths(base, Some(base / "ivy-cache")) -} +ThisBuild / ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) ThisBuild / managedScalaInstance := false ThisBuild / autoScalaLibrary := false ThisBuild / crossPaths := false +ivyPaths := (ThisBuild / ivyPaths).value diff --git a/sbt-app/src/sbt-test/dependency-management/cache-update/build.sbt b/sbt-app/src/sbt-test/dependency-management/cache-update/build.sbt index 36cfe823e..4db4f0caa 100644 --- a/sbt-app/src/sbt-test/dependency-management/cache-update/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cache-update/build.sbt @@ -2,6 +2,9 @@ ThisBuild / scalaVersion := "2.10.4" ThisBuild / dependencyOverrides += "com.github.nscala-time" %% "nscala-time" % "1.0.0" ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")) .dependsOn(p1 % Compile) .settings( @@ -22,10 +25,7 @@ lazy val root = (project in file(".")) description := "An HTTP client for Scala with Async Http Client underneath.", licenses := Seq("Apache 2" -> new URL("http://www.apache.org/licenses/LICENSE-2.0.txt")), )), - ivyPaths := IvyPaths( - (ThisBuild / baseDirectory).value, - Some((LocalRootProject / baseDirectory).value / "ivy-cache") - ), + localCache, libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.0.0", // https://github.com/sbt/sbt/pull/1620 diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt index f7d828768..1616498cc 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/changes/multi.sbt @@ -10,9 +10,12 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c ThisBuild / organization := "org.example" ThisBuild / version := "1.0-SNAPSHOT" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, scalaVersion := "2.10.4", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project"), updateOptions := updateOptions.value.withCachedResolution(true) diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt index a2c91af11..15584a478 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-circular/multi.sbt @@ -8,9 +8,12 @@ val akkaVersion = "2.3.1" ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths( (ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, scalaVersion := "2.10.4", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project") ) diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt index 542a9fe0b..eaa3d983a 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/multi.sbt @@ -4,9 +4,12 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", scalaVersion := "2.10.4", resolvers += Resolver.sonatypeRepo("snapshots") diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt index ebfcae721..993050848 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt @@ -3,10 +3,13 @@ import xsbti.AppConfiguration ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" ThisBuild / scalaVersion := "2.12.17" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Vector[Def.Setting[_]] = Vector( organization := "com.example", - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", scalaCompilerBridgeResolvers += userLocalFileResolver(appConfiguration.value), resolvers += Resolver.file("buggy", (LocalRootProject / baseDirectory).value / "repo")( diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt index 97a892817..ed8b6cd22 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-conflicts/multi.sbt @@ -10,8 +10,11 @@ inThisBuild(Seq( updateOptions := updateOptions.value.withCachedResolution(true) )) +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project") ) diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt index ba2a58557..8a5dc14e3 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-exclude/multi.sbt @@ -4,9 +4,12 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / useCoursier := false ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", scalaVersion := "2.10.4", resolvers += Resolver.sonatypeRepo("snapshots") diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt index f3c52ba43..5b15fc6fe 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-force/multi.sbt @@ -2,9 +2,12 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", scalaVersion := "2.10.4", resolvers += Resolver.sonatypeRepo("snapshots") diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt index fc3498161..9262d8e12 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-interproj/multi.sbt @@ -6,9 +6,12 @@ val junit = "junit" % "junit" % "4.13.1" ThisBuild / scalaVersion := "2.12.12" ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", resolvers += Resolver.sonatypeRepo("snapshots") ) diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt b/sbt-app/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt index 8cee7f0f0..b30a35185 100644 --- a/sbt-app/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/cached-resolution-overrides/multi.sbt @@ -4,9 +4,12 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c ThisBuild / organization := "org.example" ThisBuild / version := "1.0" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, dependencyCacheDirectory := (LocalRootProject / baseDirectory).value / "dependency", libraryDependencies := Seq( "net.databinder" %% "unfiltered-uploads" % "0.8.0", diff --git a/sbt-app/src/sbt-test/dependency-management/chainresolver/build.sbt b/sbt-app/src/sbt-test/dependency-management/chainresolver/build.sbt index 03636f64a..26e67e2d3 100644 --- a/sbt-app/src/sbt-test/dependency-management/chainresolver/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/chainresolver/build.sbt @@ -2,9 +2,12 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, ThisBuild / scalaVersion := "2.11.12", ThisBuild / organization := "com.example", ThisBuild / version := "0.1.0-SNAPSHOT", diff --git a/sbt-app/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt b/sbt-app/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt index 5302e3951..94a928893 100644 --- a/sbt-app/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/circular-dependency/changes/multi.sbt @@ -3,9 +3,12 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c lazy val check = taskKey[Unit]("Runs the check") +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths( (ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, scalaVersion := "2.10.4", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project"), updateOptions := updateOptions.value.withCircularDependencyLevel(CircularDependencyLevel.Error) diff --git a/sbt-app/src/sbt-test/dependency-management/circular-dependency/multi.sbt b/sbt-app/src/sbt-test/dependency-management/circular-dependency/multi.sbt index fe6cb61f2..21a3a8acd 100644 --- a/sbt-app/src/sbt-test/dependency-management/circular-dependency/multi.sbt +++ b/sbt-app/src/sbt-test/dependency-management/circular-dependency/multi.sbt @@ -2,9 +2,12 @@ lazy val check = taskKey[Unit]("Runs the check") ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def commonSettings: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), + localCache, scalaVersion := "2.10.4", fullResolvers := fullResolvers.value.filterNot(_.name == "inter-project") ) diff --git a/sbt-app/src/sbt-test/dependency-management/classifier/build.sbt b/sbt-app/src/sbt-test/dependency-management/classifier/build.sbt index f82acfadb..e784cdba8 100644 --- a/sbt-app/src/sbt-test/dependency-management/classifier/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/classifier/build.sbt @@ -1,4 +1,4 @@ -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" libraryDependencies += "org.testng" % "testng" % "5.7" classifier "jdk15" diff --git a/sbt-app/src/sbt-test/dependency-management/credentials/build.sbt b/sbt-app/src/sbt-test/dependency-management/credentials/build.sbt index 81394881e..f42a799b6 100644 --- a/sbt-app/src/sbt-test/dependency-management/credentials/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/credentials/build.sbt @@ -1,6 +1,6 @@ ThisBuild / scalaVersion := "2.13.0" ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) // don't blow up when credential file doesn't exist // https://github.com/sbt/sbt/issues/4882 diff --git a/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/build.sbt b/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/build.sbt index 5eafbd756..ed8a554ac 100644 --- a/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/build.sbt @@ -14,8 +14,11 @@ lazy val b = project.settings(common: _*).settings( libraryDependencies := Seq(organization.value %% "a" % version.value) ) +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val common = Seq( + localCache, autoScalaLibrary := false, // avoid downloading fresh scala-library/scala-compiler managedScalaInstance := false, - ivyPaths := IvyPaths( (ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")) ) diff --git a/sbt-app/src/sbt-test/dependency-management/exclude-transitive/build.sbt b/sbt-app/src/sbt-test/dependency-management/exclude-transitive/build.sbt index 1d989540d..2d862a24d 100644 --- a/sbt-app/src/sbt-test/dependency-management/exclude-transitive/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/exclude-transitive/build.sbt @@ -1,9 +1,12 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" ThisBuild / scalaVersion := "2.12.17" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")). settings( - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), + localCache, libraryDependencies += baseDirectory(transitive("javax.mail" % "mail" % "1.4.1")).value, TaskKey[Unit]("checkTransitive") := check(true).value, TaskKey[Unit]("checkIntransitive") := check(false).value diff --git a/sbt-app/src/sbt-test/dependency-management/extra/DefineColor.sbt b/sbt-app/src/sbt-test/dependency-management/extra/DefineColor.sbt index bd3c981bc..380a9fa71 100644 --- a/sbt-app/src/sbt-test/dependency-management/extra/DefineColor.sbt +++ b/sbt-app/src/sbt-test/dependency-management/extra/DefineColor.sbt @@ -1,7 +1,11 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")) .settings( + localCache, organization := "com.example", version := "1.0", name := "define-color", @@ -9,7 +13,6 @@ lazy val root = (project in file(".")) val old = projectID.value old.extra("e:color" -> "red") }, - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), publishMavenStyle := false, publishTo := { val base = baseDirectory.value diff --git a/sbt-app/src/sbt-test/dependency-management/extra/changes/UseColor.sbt b/sbt-app/src/sbt-test/dependency-management/extra/changes/UseColor.sbt index f77e05981..31552016c 100644 --- a/sbt-app/src/sbt-test/dependency-management/extra/changes/UseColor.sbt +++ b/sbt-app/src/sbt-test/dependency-management/extra/changes/UseColor.sbt @@ -1,13 +1,16 @@ ThisBuild / useCoursier := false ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")) .settings( + localCache, organization := "org.example", name := "use-color", - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), publishMavenStyle := false, - resolvers := baseDirectory( base => + resolvers := baseDirectory( base => Resolver.file("test-repo", base / "repo" / "test")(Resolver.defaultIvyPatterns) :: Nil ).value, libraryDependencies := { diff --git a/sbt-app/src/sbt-test/dependency-management/force/build.sbt b/sbt-app/src/sbt-test/dependency-management/force/build.sbt index b2109f589..363063a7f 100644 --- a/sbt-app/src/sbt-test/dependency-management/force/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/force/build.sbt @@ -2,12 +2,15 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c lazy val root = (project in file(".")). settings( - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), + localCache, libraryDependencies ++= baseDirectory (libraryDeps).value, TaskKey[Unit]("checkForced") := check("1.2.14").value, TaskKey[Unit]("checkDepend") := check("1.2.13").value ) +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + def libraryDeps(base: File) = { val slf4j = Seq("org.slf4j" % "slf4j-log4j12" % "1.1.0") // Uses log4j 1.2.13 if ((base / "force").exists) slf4j :+ ("log4j" % "log4j" % "1.2.14").force() else slf4j diff --git a/sbt-app/src/sbt-test/dependency-management/info/build.sbt b/sbt-app/src/sbt-test/dependency-management/info/build.sbt index 8c46f1265..a596da392 100644 --- a/sbt-app/src/sbt-test/dependency-management/info/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/info/build.sbt @@ -3,9 +3,12 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c import scala.xml._ +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")). settings( - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), + localCache, ivyXML := inlineXML(customInfo.value, organization.value, moduleName.value, version.value), scalaVersion := "2.9.1", projectID ~= (_ cross false), diff --git a/sbt-app/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt b/sbt-app/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt index 0a1c74289..dd18a57ad 100644 --- a/sbt-app/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/inline-dependencies-a/build.sbt @@ -1,9 +1,8 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) libraryDependencies += "org.scalacheck" % "scalacheck" % "1.5" -ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy-home"))).value - TaskKey[Unit]("check") := { val report = update.value val files = report.matching( moduleFilter(organization = "org.scalacheck", name = "scalacheck", revision = "1.5") ) diff --git a/sbt-app/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt b/sbt-app/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt index b3d5e6d75..2467fc868 100644 --- a/sbt-app/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/metadata-only-resolver/build.sbt @@ -1,7 +1,5 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / ".ivy2")) - // not in the default repositories libraryDependencies += "com.sun.jmx" % "jmxri" % "1.2.1" diff --git a/sbt-app/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt b/sbt-app/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt index f02e86fd9..2330bcdff 100644 --- a/sbt-app/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/no-file-fails-publish/build.sbt @@ -1,6 +1,5 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" - -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) organization := "org.example" diff --git a/sbt-app/src/sbt-test/dependency-management/override/build.sbt b/sbt-app/src/sbt-test/dependency-management/override/build.sbt index 8398dfe04..8ed799405 100644 --- a/sbt-app/src/sbt-test/dependency-management/override/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/override/build.sbt @@ -2,8 +2,6 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c autoScalaLibrary := false -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) - scalaModuleInfo := Some(sbt.librarymanagement.ScalaModuleInfo( (update / scalaVersion).value, (update / scalaBinaryVersion).value, diff --git a/sbt-app/src/sbt-test/dependency-management/pom-parent-pom/build.sbt b/sbt-app/src/sbt-test/dependency-management/pom-parent-pom/build.sbt index e6eed4c76..450ed8b87 100644 --- a/sbt-app/src/sbt-test/dependency-management/pom-parent-pom/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/pom-parent-pom/build.sbt @@ -3,10 +3,13 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c val checkIvyXml = taskKey[Unit]("Checks the ivy.xml transform was correct") -lazy val root = (project in file(".")). - settings( +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + +lazy val root = (project in file(".")) + .settings( + localCache, name := "test-parent-pom", - ivyPaths := IvyPaths( (ThisBuild / baseDirectory).value, Some((LocalRootProject / target).value / "ivy-cache")), resolvers += MavenCache("Maven2 Local Test", baseDirectory.value / "local-repo"), libraryDependencies += "com.example" % "example-child" % "1.0-SNAPSHOT", libraryDependencies += "org.apache.geronimo.specs" % "geronimo-jta_1.1_spec" % "1.1.1", diff --git a/sbt-app/src/sbt-test/dependency-management/snapshot-local/build.sbt b/sbt-app/src/sbt-test/dependency-management/snapshot-local/build.sbt index 0a2c2e42b..4378e416f 100644 --- a/sbt-app/src/sbt-test/dependency-management/snapshot-local/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/snapshot-local/build.sbt @@ -2,9 +2,8 @@ ThisBuild / organization := "com.example" ThisBuild / scalaVersion := "2.12.12" ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -def customIvyPaths: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths((ThisBuild / baseDirectory).value, Some((ThisBuild / baseDirectory).value / "ivy-cache")) -) +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) lazy val sharedResolver: Resolver = { val r = Resolver.defaultShared @@ -14,7 +13,7 @@ lazy val sharedResolver: Resolver = { } lazy val common = project - .settings(customIvyPaths) + .settings(localCache) .settings( organization := "com.badexample", name := "badexample", @@ -30,7 +29,7 @@ lazy val common = project ) lazy val dependent = project - .settings(customIvyPaths) + .settings(localCache) .settings( // Ignore the inter-project resolver, so we force to look remotely. resolvers += sharedResolver, diff --git a/sbt-app/src/sbt-test/dependency-management/snapshot-resolution/build.sbt b/sbt-app/src/sbt-test/dependency-management/snapshot-resolution/build.sbt index b1e15032d..16678e2f2 100644 --- a/sbt-app/src/sbt-test/dependency-management/snapshot-resolution/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/snapshot-resolution/build.sbt @@ -5,9 +5,8 @@ ThisBuild / scalaVersion := "2.12.12" ThisBuild / useCoursier := false ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" -def customIvyPaths: Seq[Def.Setting[_]] = Seq( - ivyPaths := IvyPaths(baseDirectory.value, Some((ThisBuild / baseDirectory).value / "ivy" / "cache")) -) +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) lazy val sharedResolver: Resolver = { val r = Resolver.defaultShared @@ -17,7 +16,7 @@ lazy val sharedResolver: Resolver = { } lazy val common = project - .settings(customIvyPaths) + .settings(localCache) .settings( organization := "com.badexample", name := "badexample", @@ -34,7 +33,7 @@ lazy val common = project ) lazy val dependent = project - .settings(customIvyPaths) + .settings(localCache) .settings( // Uncomment the following to test the before/after // updateOptions := updateOptions.value.withLatestSnapshots(false), diff --git a/sbt-app/src/sbt-test/dependency-management/t468/build.sbt b/sbt-app/src/sbt-test/dependency-management/t468/build.sbt index bec54f66b..079948730 100644 --- a/sbt-app/src/sbt-test/dependency-management/t468/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/t468/build.sbt @@ -2,7 +2,7 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c autoScalaLibrary := false -ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")) +ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) libraryDependencies ++= Seq( "org.sat4j" % "org.sat4j.pb" % "2.3.1", diff --git a/sbt-app/src/sbt-test/dependency-management/test-artifact/cache.sbt b/sbt-app/src/sbt-test/dependency-management/test-artifact/cache.sbt index 312d66e8d..d03e0880f 100644 --- a/sbt-app/src/sbt-test/dependency-management/test-artifact/cache.sbt +++ b/sbt-app/src/sbt-test/dependency-management/test-artifact/cache.sbt @@ -3,7 +3,7 @@ ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-c ivyPaths := { val base = baseDirectory.value - IvyPaths(base, Some(base / "ivy-cache")) + IvyPaths(base.toString, Some((base / "ivy-cache").toString)) } managedScalaInstance := false diff --git a/sbt-app/src/sbt-test/dependency-management/test-artifact/test b/sbt-app/src/sbt-test/dependency-management/test-artifact/test deleted file mode 100644 index e52a939c9..000000000 --- a/sbt-app/src/sbt-test/dependency-management/test-artifact/test +++ /dev/null @@ -1,36 +0,0 @@ -# define a test jar and publish locally as ivy.xml -# and to a file repository as pom.xml - -$ copy-file changes/def/build.sbt build.sbt -$ copy-file changes/def/Def.java src/test/java/Def.java -> reload -> publishLocal -> publish -> clean - -$ delete build.sbt -$ delete src/test/java/Def.java - -# use the test jar from the maven repository -# by requesting the "tests" classifier - -$ copy-file changes/use/build.sbt build.sbt -$ copy-file changes/use/Use.java Use.java -$ copy-file changes/use/pom.sbt pom.sbt -> reload -> compile -> clean - -# necessary because the cache can't deal with two different types of metadata -$ delete ivy-cache/cache - - -# then, use the test jar via the Ivy repository -# by requesting the "test" configuration - -$ delete pom.sbt -$ copy-file changes/use/local.sbt local.sbt -> reload -> show update -> export dependencyClasspath -> compile diff --git a/sbt-app/src/sbt-test/dependency-management/url/build.sbt b/sbt-app/src/sbt-test/dependency-management/url/build.sbt index bed0ea857..f70617597 100644 --- a/sbt-app/src/sbt-test/dependency-management/url/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/url/build.sbt @@ -2,9 +2,12 @@ import sbt.internal.inc.classpath.ClasspathUtilities ThisBuild / csrCacheDirectory := (ThisBuild / baseDirectory).value / "coursier-cache" +def localCache = + ivyPaths := IvyPaths(baseDirectory.value.toString, Some(((ThisBuild / baseDirectory).value / "ivy" / "cache").toString)) + lazy val root = (project in file(".")). settings( - ivyPaths := IvyPaths(baseDirectory.value, Some(target.value / "ivy-cache")), + localCache, libraryDependencies += "org.jsoup" % "jsoup" % "1.9.1" % Test from "https://jsoup.org/packages/jsoup-1.9.1.jar", ivyLoggingLevel := UpdateLogging.Full, TaskKey[Unit]("checkInTest") := checkClasspath(Test).value, From e0e2ffce9c8e7c9ac063f51c42ce3b9471570ef7 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2023 02:06:56 -0500 Subject: [PATCH 18/18] Mark doc-dependent tests pending --- .../dependency-management/cache-resolver/{test => pending} | 0 .../cached-resolution-classifier/{test => pending} | 0 .../dependency-management/deliver-artifacts/{test => pending} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename sbt-app/src/sbt-test/dependency-management/cache-resolver/{test => pending} (100%) rename sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/{test => pending} (100%) rename sbt-app/src/sbt-test/dependency-management/deliver-artifacts/{test => pending} (100%) diff --git a/sbt-app/src/sbt-test/dependency-management/cache-resolver/test b/sbt-app/src/sbt-test/dependency-management/cache-resolver/pending similarity index 100% rename from sbt-app/src/sbt-test/dependency-management/cache-resolver/test rename to sbt-app/src/sbt-test/dependency-management/cache-resolver/pending diff --git a/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/test b/sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/pending similarity index 100% rename from sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/test rename to sbt-app/src/sbt-test/dependency-management/cached-resolution-classifier/pending diff --git a/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/test b/sbt-app/src/sbt-test/dependency-management/deliver-artifacts/pending similarity index 100% rename from sbt-app/src/sbt-test/dependency-management/deliver-artifacts/test rename to sbt-app/src/sbt-test/dependency-management/deliver-artifacts/pending