From 298028831b97c8c4313500f7dbbcd7c275e37f28 Mon Sep 17 00:00:00 2001 From: Alex Archambault Date: Wed, 19 Feb 2025 10:56:07 +0100 Subject: [PATCH 1/2] Update coursier to 2.1.25-M2 (adds early Gradle Module support) --- build.mill | 4 +- .../src/mill/contrib/bloop/BloopImpl.scala | 2 +- .../src/mill/scalalib/JsonFormatters.scala | 52 ++++++++++++++++++- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/build.mill b/build.mill index a17dcd91089..1d6de1266b0 100644 --- a/build.mill +++ b/build.mill @@ -126,9 +126,9 @@ object Deps { val asmTree = ivy"org.ow2.asm:asm-tree:9.7.1" val bloopConfig = ivy"ch.epfl.scala::bloop-config:1.5.5".withDottyCompat(scalaVersion) - val coursierVersion = "2.1.24" + val coursierVersion = "2.1.25-M2" val coursier = ivy"io.get-coursier::coursier:$coursierVersion".withDottyCompat(scalaVersion) - val coursierInterface = ivy"io.get-coursier:interface:1.0.27" + val coursierInterface = ivy"io.get-coursier:interface:1.0.29-M1" val coursierJvm = ivy"io.get-coursier::coursier-jvm:$coursierVersion".withDottyCompat(scalaVersion) diff --git a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala index 78d2bc9c25e..04a6ab808f6 100644 --- a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala +++ b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala @@ -330,7 +330,7 @@ class BloopImpl(evs: () => Seq[Evaluator], wd: os.Path) extends ExternalModule { import scala.concurrent.ExecutionContext.Implicits.global val unresolved = Resolution(deps) val fetch = - ResolutionProcess.fetch(repos, coursier.cache.Cache.default.fetch) + ResolutionProcess.fetch0(repos, coursier.cache.Cache.default.fetch) val gatherTask = for { resolved <- unresolved.process.run(fetch) diff --git a/scalalib/src/mill/scalalib/JsonFormatters.scala b/scalalib/src/mill/scalalib/JsonFormatters.scala index b7d3d518c3f..871c61e66cc 100644 --- a/scalalib/src/mill/scalalib/JsonFormatters.scala +++ b/scalalib/src/mill/scalalib/JsonFormatters.scala @@ -11,6 +11,30 @@ trait JsonFormatters { implicit lazy val extensionFormat: RW[coursier.core.Extension] = upickle.default.macroRW implicit lazy val modFormat: RW[coursier.Module] = upickle.default.macroRW + implicit lazy val versionConstraintFormat: RW[coursier.version.VersionConstraint] = + implicitly[RW[String]].bimap( + _.asString, + coursier.version.VersionConstraint(_) + ) + implicit lazy val versionIntervalFormat0: RW[coursier.version.VersionInterval] = + upickle.default.macroRW + implicit lazy val versionFormat0: RW[coursier.version.Version] = + implicitly[RW[String]].bimap( + _.asString, + coursier.version.Version(_) + ) + implicit lazy val variantSelectorFormat: RW[coursier.core.VariantSelector] = + RW.merge( + upickle.default.macroRW[coursier.core.VariantSelector.ConfigurationBased], + upickle.default.macroRW[coursier.core.VariantSelector.AttributesBased] + ) + private implicit lazy val variantAttributesFormat: RW[coursier.core.Variant.Attributes] = + upickle.default.macroRW + implicit lazy val variantFormat: RW[coursier.core.Variant] = + RW.merge( + upickle.default.macroRW[coursier.core.Variant.Configuration], + variantAttributesFormat + ) implicit lazy val bomDepFormat: RW[coursier.core.BomDependency] = upickle.default.macroRW implicit lazy val overridesFormat: RW[coursier.core.Overrides] = implicitly[RW[coursier.core.DependencyManagement.Map]].bimap( @@ -65,14 +89,22 @@ trait JsonFormatters { coursier.core.Versions( latest = json("latest").str, release = json("release").str, - available = upickle.default.read(json("available")), - lastUpdated = upickle.default.read(json("lastUpdated")) + available = upickle.default.read(json("available")): List[String], + lastUpdated = + upickle.default.read(json("lastUpdated")): Option[coursier.core.Versions.DateTime] ) ) implicit lazy val versionsDateTimeFormat: RW[coursier.core.Versions.DateTime] = upickle.default.macroRW implicit lazy val activationFormat: RW[coursier.core.Activation] = upickle.default.macroRW implicit lazy val profileFormat: RW[coursier.core.Profile] = upickle.default.macroRW + private implicit lazy val variantPublicationFormat: RW[coursier.core.VariantPublication] = + upickle.default.macroRW + private implicit def attributesMapFormat[T: RW]: RW[Map[coursier.core.Variant.Attributes, T]] = + implicitly[RW[Map[String, T]]].bimap( + attrMap => attrMap.map { case (k, v) => k.variantName -> v }, + strMap => strMap.map { case (k, v) => coursier.core.Variant.Attributes(k) -> v } + ) implicit lazy val projectFormat: RW[coursier.core.Project] = upickle.default.macroRW } @@ -84,6 +116,19 @@ object JsonFormatters extends JsonFormatters { Mirrors.autoRoot[coursier.core.Extension] given Root_coursier_Module: Mirrors.Root[coursier.core.Module] = Mirrors.autoRoot[coursier.core.Module] + given Root_coursier_version_VersionInterval: Mirrors.Root[coursier.version.VersionInterval] = + Mirrors.autoRoot[coursier.version.VersionInterval] + given Root_coursier_core_VariantSelector_ConfigurationBased + : Mirrors.Root[coursier.core.VariantSelector.ConfigurationBased] = + Mirrors.autoRoot[coursier.core.VariantSelector.ConfigurationBased] + given Root_coursier_core_VariantSelector_AttributesBased + : Mirrors.Root[coursier.core.VariantSelector.AttributesBased] = + Mirrors.autoRoot[coursier.core.VariantSelector.AttributesBased] + given Root_coursier_core_Variant_Configuration + : Mirrors.Root[coursier.core.Variant.Configuration] = + Mirrors.autoRoot[coursier.core.Variant.Configuration] + given Root_coursier_core_Variant_Attributes: Mirrors.Root[coursier.core.Variant.Attributes] = + Mirrors.autoRoot[coursier.core.Variant.Attributes] given Root_coursier_BomDependency: Mirrors.Root[coursier.core.BomDependency] = Mirrors.autoRoot[coursier.core.BomDependency] given Root_coursier_Dependency: Mirrors.Root[coursier.core.Dependency] = @@ -147,6 +192,9 @@ object JsonFormatters extends JsonFormatters { given Root_coursier_core_Profile : Mirrors.Root[coursier.core.Profile] = Mirrors.autoRoot[coursier.core.Profile] + given Root_coursier_core_VariantPublication + : Mirrors.Root[coursier.core.VariantPublication] = + Mirrors.autoRoot[coursier.core.VariantPublication] given Root_coursier_core_Project : Mirrors.Root[coursier.core.Project] = Mirrors.autoRoot[coursier.core.Project] From 23bc0242c0b230379c96684a2c6fc38c5f73670c Mon Sep 17 00:00:00 2001 From: Alex Archambault Date: Wed, 19 Feb 2025 12:26:59 +0100 Subject: [PATCH 2/2] fixup (regression?) --- scalalib/test/src/mill/scalalib/BomTests.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalalib/test/src/mill/scalalib/BomTests.scala b/scalalib/test/src/mill/scalalib/BomTests.scala index be6092e0789..50b5aae9a04 100644 --- a/scalalib/test/src/mill/scalalib/BomTests.scala +++ b/scalalib/test/src/mill/scalalib/BomTests.scala @@ -677,7 +677,7 @@ object BomTests extends TestSuite { val res = eval(modules.bom.placeholder.check.compileClasspath) assert( res.left.exists(_.toString.contains( - "not found: https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java//protobuf-java-.pom" + "No version available in (,)" )) ) }