From e3b78cec99f97cea65b5da9b41a814c804ed3673 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 9 Oct 2024 11:52:28 +0200 Subject: [PATCH] Fix lm-coursier compilation --- .../sbt/librarymanagement/ConfigMacroTest.scala | 1 - .../sbt/librarymanagement/CrossVersionTest.scala | 3 ++- .../cache/protocol/CustomprotocolHandler.scala | 2 +- .../scala/lmcoursier/CoursierConfiguration.scala | 13 +------------ .../CoursierDependencyResolution.scala | 6 +++--- .../src/main/scala/lmcoursier/FromSbt.scala | 2 +- .../src/main/scala/lmcoursier/Inputs.scala | 6 +++--- .../src/main/scala/lmcoursier/IvyXml.scala | 3 +-- .../lmcoursier/credentials/Credentials.scala | 2 -- .../lmcoursier/definitions/FromCoursier.scala | 2 +- .../scala/lmcoursier/internal/Resolvers.scala | 2 +- .../lmcoursier/internal/SbtUpdateReport.scala | 16 +++++----------- .../scala/lmcoursier/internal/UpdateRun.scala | 8 ++------ .../main/scala/lmcoursier/syntax/package.scala | 11 +---------- .../test/scala/lmcoursier/ResolutionSpec.scala | 12 ++++++------ 15 files changed, 28 insertions(+), 61 deletions(-) diff --git a/lm-core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala b/lm-core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala index 1bb5d7a16..8c99536ab 100644 --- a/lm-core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala +++ b/lm-core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala @@ -1,6 +1,5 @@ package sbt.librarymanagement -import sbt.librarymanagement.Configurations.config import org.scalatest.funspec.AnyFunSpec import org.scalatest.matchers.should.Matchers diff --git a/lm-core/src/test/scala/sbt/librarymanagement/CrossVersionTest.scala b/lm-core/src/test/scala/sbt/librarymanagement/CrossVersionTest.scala index c273653a0..c7cac1919 100644 --- a/lm-core/src/test/scala/sbt/librarymanagement/CrossVersionTest.scala +++ b/lm-core/src/test/scala/sbt/librarymanagement/CrossVersionTest.scala @@ -2,6 +2,7 @@ package sbt.librarymanagement import sbt.internal.librarymanagement.UnitSpec import CrossVersion._ +import scala.annotation.nowarn class CrossVersionTest extends UnitSpec { "sbtApiVersion" should "for xyz return None" in { @@ -339,7 +340,7 @@ class CrossVersionTest extends UnitSpec { "Disabled" should "have structural equality" in { Disabled() shouldBe Disabled() - } + }: @nowarn "CrossVersion.full" should "have structural equality" in { CrossVersion.full shouldBe CrossVersion.full } diff --git a/lm-coursier/custom-protocol-for-test/src/main/scala/coursier/cache/protocol/CustomprotocolHandler.scala b/lm-coursier/custom-protocol-for-test/src/main/scala/coursier/cache/protocol/CustomprotocolHandler.scala index ea74e9a28..1d8b390cf 100644 --- a/lm-coursier/custom-protocol-for-test/src/main/scala/coursier/cache/protocol/CustomprotocolHandler.scala +++ b/lm-coursier/custom-protocol-for-test/src/main/scala/coursier/cache/protocol/CustomprotocolHandler.scala @@ -1,6 +1,6 @@ package coursier.cache.protocol -import java.net.{URL, URLConnection, URLStreamHandler, URLStreamHandlerFactory} +import java.net.{ URL, URLConnection, URLStreamHandler, URLStreamHandlerFactory } class CustomprotocolHandler extends URLStreamHandlerFactory { def createURLStreamHandler(protocol: String): URLStreamHandler = new URLStreamHandler { diff --git a/lm-coursier/definitions/src/main/scala/lmcoursier/CoursierConfiguration.scala b/lm-coursier/definitions/src/main/scala/lmcoursier/CoursierConfiguration.scala index 5fce01093..0d2173a20 100644 --- a/lm-coursier/definitions/src/main/scala/lmcoursier/CoursierConfiguration.scala +++ b/lm-coursier/definitions/src/main/scala/lmcoursier/CoursierConfiguration.scala @@ -3,7 +3,6 @@ package lmcoursier import java.io.File import dataclass.{ data, since } import coursier.cache.CacheDefaults -import coursier.params.rule.{ Rule, RuleResolution } import lmcoursier.credentials.Credentials import lmcoursier.definitions.{ Authentication, @@ -16,20 +15,10 @@ import lmcoursier.definitions.{ Reconciliation, Strict } -import sbt.librarymanagement.{ - CrossVersion, - InclExclRule, - ModuleDescriptorConfiguration, - ModuleID, - ModuleInfo, - Resolver, - UpdateConfiguration -} +import sbt.librarymanagement.{ InclExclRule, ModuleID, Resolver } import xsbti.Logger import scala.concurrent.duration.{ Duration, FiniteDuration } -import java.net.URL -import java.net.URLClassLoader @data class CoursierConfiguration( log: Option[Logger] = None, diff --git a/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala b/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala index 30b0e7f67..3d0d67b4f 100644 --- a/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala +++ b/lm-coursier/src/main/scala/lmcoursier/CoursierDependencyResolution.scala @@ -1,11 +1,11 @@ package lmcoursier import java.io.File -import java.net.{ URL, URLClassLoader, URLConnection, MalformedURLException } +import java.net.{ URL, URLClassLoader } -import coursier.{ Organization, Resolution, organizationString } +import coursier.{ Organization, Resolution } import coursier.core.{ Classifier, Configuration } -import coursier.cache.{ CacheDefaults, CachePolicy } +import coursier.cache.CacheDefaults import coursier.util.Artifact import coursier.internal.Typelevel import lmcoursier.definitions.ToCoursier diff --git a/lm-coursier/src/main/scala/lmcoursier/FromSbt.scala b/lm-coursier/src/main/scala/lmcoursier/FromSbt.scala index ed0ea99fa..3f1b28f1e 100644 --- a/lm-coursier/src/main/scala/lmcoursier/FromSbt.scala +++ b/lm-coursier/src/main/scala/lmcoursier/FromSbt.scala @@ -188,7 +188,7 @@ object FromSbt { ) val prefix = "e:" + SbtPomExtraProperties.POM_INFO_KEY_PREFIX - val properties = projectID.extraAttributes + val properties = projectID.extraAttributes.view .filterKeys(_.startsWith(prefix)) .toSeq .map { case (k, v) => (k.stripPrefix("e:"), v) } diff --git a/lm-coursier/src/main/scala/lmcoursier/Inputs.scala b/lm-coursier/src/main/scala/lmcoursier/Inputs.scala index 7f19a01d5..01272ddcb 100644 --- a/lm-coursier/src/main/scala/lmcoursier/Inputs.scala +++ b/lm-coursier/src/main/scala/lmcoursier/Inputs.scala @@ -1,7 +1,7 @@ package lmcoursier import coursier.ivy.IvyXml.{ mappings => initialIvyXmlMappings } -import lmcoursier.definitions.{ Configuration, Module, ModuleName, Organization, ToCoursier } +import lmcoursier.definitions.{ Configuration, Module, ModuleName, Organization } import sbt.librarymanagement.{ CrossVersion, InclExclRule, ModuleID } import sbt.util.Logger @@ -68,9 +68,9 @@ object Inputs { def helper( done: Set[Configuration], toAdd: List[Configuration] - ): Stream[(Configuration, Seq[Configuration])] = + ): LazyList[(Configuration, Seq[Configuration])] = toAdd match { - case Nil => Stream.empty + case Nil => LazyList.empty case config :: rest => val extends0 = map.getOrElse(config, Nil) val missingExtends = extends0.filterNot(done) diff --git a/lm-coursier/src/main/scala/lmcoursier/IvyXml.scala b/lm-coursier/src/main/scala/lmcoursier/IvyXml.scala index 92b9614e2..2984a8f31 100644 --- a/lm-coursier/src/main/scala/lmcoursier/IvyXml.scala +++ b/lm-coursier/src/main/scala/lmcoursier/IvyXml.scala @@ -71,8 +71,7 @@ object IvyXml { } val publications = project.publications - .groupBy { case (_, p) => p } - .mapValues { _.map { case (cfg, _) => cfg } } + .groupMap((_, p) => p)((cfg, _) => cfg) val publicationElems = publications.map { case (pub, configs) => val n = CachePolicy.LocalOnly case coursier.cache.CachePolicy.LocalOnlyIfValid => CachePolicy.LocalOnlyIfValid case coursier.cache.CachePolicy.LocalUpdateChanging => CachePolicy.LocalUpdateChanging diff --git a/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala b/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala index 34b482b97..56fba5b77 100644 --- a/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala +++ b/lm-coursier/src/main/scala/lmcoursier/internal/Resolvers.scala @@ -11,7 +11,7 @@ import org.apache.ivy.plugins.resolver.IBiblioResolver import sbt.librarymanagement.{ Configuration => _, MavenRepository => _, _ } import sbt.util.Logger -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ object Resolvers { diff --git a/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala b/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala index 7f27ab00a..af766b719 100644 --- a/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala +++ b/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala @@ -1,7 +1,6 @@ package lmcoursier.internal import java.io.File -import java.net.URL import java.util.GregorianCalendar import java.util.concurrent.ConcurrentHashMap import coursier.cache.CacheUrl @@ -13,6 +12,7 @@ import sbt.librarymanagement.{ Artifact => _, Configuration => _, _ } import sbt.util.Logger import scala.annotation.tailrec +import coursier.core.MinimizedExclusions private[internal] object SbtUpdateReport { @@ -220,7 +220,7 @@ private[internal] object SbtUpdateReport { def clean(dep: Dependency): Dependency = dep .withConfiguration(Configuration.empty) - .withExclusions(Set.empty) + .withMinimizedExclusions(MinimizedExclusions.zero) .withOptional(false) def lookupProject(mv: coursier.core.Resolution.ModuleVersion): Option[Project] = @@ -259,17 +259,11 @@ private[internal] object SbtUpdateReport { val reverseDependencies = { val transitiveReverseDependencies = res.reverseDependencies.toVector - .map { case (k, v) => - clean(k) -> v.map(clean) - } - .groupBy(_._1) - .mapValues(_.flatMap(_._2)) + .map { case (k, v) => clean(k) -> v.map(clean) } + .groupMapReduce(_._1)((_, deps) => deps)(_ ++ _) (transitiveReverseDependencies.toVector ++ directReverseDependencies.toVector) - .groupBy(_._1) - .mapValues(_.flatMap(_._2).toVector) - .toVector - .toMap + .groupMapReduce(_._1)((_, deps) => deps)(_ ++ _) } groupedDepArtifacts.toVector.map { case (dep, artifacts) => diff --git a/lm-coursier/src/main/scala/lmcoursier/internal/UpdateRun.scala b/lm-coursier/src/main/scala/lmcoursier/internal/UpdateRun.scala index d9c2f4e38..13e7d77d5 100644 --- a/lm-coursier/src/main/scala/lmcoursier/internal/UpdateRun.scala +++ b/lm-coursier/src/main/scala/lmcoursier/internal/UpdateRun.scala @@ -63,7 +63,7 @@ object UpdateRun { ) val projCache = params.res.values.foldLeft(Map.empty[ModuleVersion, Project])( - _ ++ _.projectCache.mapValues(_._2) + _ ++ _.projectCache.view.mapValues(_._2).toMap ) val repr = Print.dependenciesUnknownConfigs(finalDeps.toVector, projCache) log.info(repr.split('\n').map(" " + _).mkString("\n")) @@ -87,10 +87,6 @@ object UpdateRun { } private def grouped[K, V](map: Seq[(K, V)]): Map[K, Seq[V]] = - map - .groupBy(_._1) - .mapValues(_.map(_._2)) - .iterator - .toMap + map.groupMap(_._1)((_, values) => values) } diff --git a/lm-coursier/src/main/scala/lmcoursier/syntax/package.scala b/lm-coursier/src/main/scala/lmcoursier/syntax/package.scala index 966997931..676fc1eae 100644 --- a/lm-coursier/src/main/scala/lmcoursier/syntax/package.scala +++ b/lm-coursier/src/main/scala/lmcoursier/syntax/package.scala @@ -3,20 +3,11 @@ package lmcoursier import coursier.cache.CacheDefaults import lmcoursier.credentials._ import lmcoursier.definitions._ -import sbt.librarymanagement.{ - Resolver, - UpdateConfiguration, - ModuleID, - CrossVersion, - ModuleInfo, - ModuleDescriptorConfiguration -} +import sbt.librarymanagement.{ Resolver, UpdateConfiguration } import xsbti.Logger import scala.concurrent.duration.{ Duration, FiniteDuration } import java.io.File -import java.net.URL -import java.net.URLClassLoader package object syntax { implicit class CoursierConfigurationModule(value: CoursierConfiguration.type) { diff --git a/lm-coursier/src/test/scala/lmcoursier/ResolutionSpec.scala b/lm-coursier/src/test/scala/lmcoursier/ResolutionSpec.scala index a961e40f1..30182cb60 100644 --- a/lm-coursier/src/test/scala/lmcoursier/ResolutionSpec.scala +++ b/lm-coursier/src/test/scala/lmcoursier/ResolutionSpec.scala @@ -85,7 +85,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { val resolution = lmEngine.update(coursierModule, UpdateConfiguration(), UnresolvedWarningConfiguration(), log) - val r = resolution.right.get + val r = resolution.toOption.get val componentConfig = r.configurations.find(_.configuration == Component.toConfigRef).get componentConfig.modules should have size 2 @@ -100,7 +100,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { val resolution = lmEngine.update(coursierModule, UpdateConfiguration(), UnresolvedWarningConfiguration(), log) - val r = resolution.right.get + val r = resolution.toOption.get val modules = r.configurations.flatMap(_.modules) modules.map(_.module.name) should contain("main_2.12") @@ -155,7 +155,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { lmEngine.update(coursierModule, UpdateConfiguration(), UnresolvedWarningConfiguration(), log) - val report = resolution.right.get + val report = resolution.toOption.get val modules = report.configurations.flatMap(_.modules) modules.map(_.module).map(module => (module.organization, module.name, module.revision)) should contain( @@ -196,7 +196,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { lmEngine.update(coursierModule, UpdateConfiguration(), UnresolvedWarningConfiguration(), log) - val report = resolution.right.get + val report = resolution.toOption.get val modules = report.configurations.flatMap(_.modules) modules.map(_.module).map(module => (module.organization, module.name, module.revision)) should contain( @@ -213,7 +213,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { val resolution = lmEngine.update(coursierModule, UpdateConfiguration(), UnresolvedWarningConfiguration(), log) - val r = resolution.right.get + val r = resolution.toOption.get val componentConfig = r.configurations.find(_.configuration == Compile.toConfigRef).get componentConfig.modules.map(_.module.name) should have size 5 @@ -249,7 +249,7 @@ final class ResolutionSpec extends AnyPropSpec with Matchers { assert(resolution.isRight) val componentConfig = - resolution.right.get.configurations.find(_.configuration == Compile.toConfigRef).get + resolution.toOption.get.configurations.find(_.configuration == Compile.toConfigRef).get val compress = componentConfig.modules.find(_.module.name == "commons-compress").get compress.licenses should have size 1 }