From b65a76136fa7b8df76374a4014de6967d6677f24 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Tue, 31 Jan 2017 16:19:31 +0100 Subject: [PATCH] Switch to sbt-mima 0.1.13, update mima settings In particular, check compatibility only against current latest version New issues unearthed after mima plugin version bump --- build.sbt | 155 +++++++------------------------------------- project/plugins.sbt | 2 +- 2 files changed, 25 insertions(+), 132 deletions(-) diff --git a/build.sbt b/build.sbt index ec4258778..313a76c9f 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,7 @@ import java.io.FileOutputStream -val binaryCompatibilityVersion = "1.0.0-M7" +val binaryCompatibilityVersion = "1.0.0-M14" +val binaryCompatibility212Version = "1.0.0-M15" lazy val IntegrationTest = config("it") extend Test @@ -8,26 +9,21 @@ lazy val scalazVersion = "7.2.7" lazy val core = crossProject .settings(commonSettings) + .settings(mimaPreviousArtifactSettings) .settings( name := "coursier", libraryDependencies ++= Seq( "org.scalaz" %%% "scalaz-core" % scalazVersion, "com.lihaoyi" %%% "fastparse" % "0.4.2" ), - mimaPreviousArtifacts := { - scalaBinaryVersion.value match { - case "2.10" | "2.11" => - Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion) - case _ => - Set() - } - }, mimaBinaryIssueFilters ++= { import com.typesafe.tools.mima.core._ Seq( - // Since 1.0.0-M15 - // reworked profile activation + ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.package#Resolution.apply$default$9"), + ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.package#Resolution.apply"), + ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.core.Resolution.copy$default$9"), + ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.core.Resolution.copyWithCache$default$8"), ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.copy"), ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.profileActivation"), ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.copyWithCache"), @@ -37,70 +33,7 @@ lazy val core = crossProject ProblemFilters.exclude[MissingTypesProblem]("coursier.core.Activation$"), ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Activation.apply"), ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.profiles"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.apply"), - // Since 1.0.0-M13 - // reworked VersionConstraint - ProblemFilters.exclude[MissingClassProblem]("coursier.core.VersionConstraint$Interval"), - ProblemFilters.exclude[MissingClassProblem]("coursier.core.VersionConstraint$Preferred"), - ProblemFilters.exclude[MissingClassProblem]("coursier.core.VersionConstraint$Preferred$"), - ProblemFilters.exclude[MissingClassProblem]("coursier.core.VersionConstraint$Interval$"), - ProblemFilters.exclude[FinalClassProblem]("coursier.core.VersionConstraint"), - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.core.VersionConstraint.repr"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.core.VersionConstraint.this"), - // Extra `actualVersion` field in `Project` - ProblemFilters.exclude[MissingTypesProblem]("coursier.core.Project$"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Project.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Project.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Project.this"), - // Reworked Ivy pattern handling - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.pattern"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.copy"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.properties"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.parts"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.substitute"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.this"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.substituteProperties"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.propertyRegex"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.apply"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.variableRegex"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.Pattern.optionalPartRegex"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart$Literal$"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart$"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.ivy.IvyRepository.apply"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart$Optional$"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart$Literal"), - ProblemFilters.exclude[MissingClassProblem]("coursier.ivy.Pattern$PatternPart$Optional"), - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.ivy.IvyRepository.pattern"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.ivy.IvyRepository.copy"), - ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.ivy.IvyRepository.properties"), - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.ivy.IvyRepository.metadataPattern"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.ivy.IvyRepository.this"), - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.util.Parse.repository"), - // Since 1.0.0-M12 - // Extra `authentication` field - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Artifact.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Artifact.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.Artifact.this"), - ProblemFilters.exclude[MissingTypesProblem]("coursier.ivy.IvyRepository$"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.ivy.IvyRepository.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.ivy.IvyRepository.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.ivy.IvyRepository.this"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenRepository.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenRepository.this"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenSource.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenRepository.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenSource.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.maven.MavenSource.this"), - // Since 1.0.0-M11 - // Extra parameter with default value added, problem for forward compatibility only - ProblemFilters.exclude[MissingMethodProblem]("coursier.core.ResolutionProcess.next"), - // method made final (for - non critical - tail recursion) - ProblemFilters.exclude[FinalMethodProblem]("coursier.core.ResolutionProcess.next"), - // Since 1.0.0-M10 - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.core.Resolution.withParentConfigurations"), - // New singleton object, problem for forward compatibility only - ProblemFilters.exclude[MissingTypesProblem]("coursier.maven.MavenSource$") + ProblemFilters.exclude[DirectMissingMethodProblem]("coursier.core.Resolution.apply") ) } ) @@ -185,69 +118,19 @@ lazy val testsJs = tests.js.dependsOn(`fetch-js` % "test") lazy val cache = project .dependsOn(coreJvm) .settings(commonSettings) + .settings(mimaPreviousArtifactSettings) .settings( name := "coursier-cache", libraryDependencies += "org.scalaz" %% "scalaz-concurrent" % scalazVersion, - mimaPreviousArtifacts := { - scalaBinaryVersion.value match { - case "2.10" | "2.11" => - Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion) - case _ => - Set() - } - }, mimaBinaryIssueFilters ++= { import com.typesafe.tools.mima.core._ Seq( - // Since 1.0.0-M13 - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache.file"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache.fetch"), - // Since 1.0.0-M12 - // Remove deprecated / unused helper method - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache.readFully"), - // Since 1.0.0-M11 - // Add constructor parameter on FileError - shouldn't be built by users anyway - ProblemFilters.exclude[MissingMethodProblem]("coursier.FileError.this"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.FileError#Recoverable.this"), - // Since 1.0.0-M10 - // methods that should have been private anyway - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay.update"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay.fallbackMode_="), - // cache argument type changed from `Seq[(String, File)]` to `File` - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.Cache.file"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.Cache.fetch"), - ProblemFilters.exclude[IncompatibleResultTypeProblem]("coursier.Cache.default"), - ProblemFilters.exclude[IncompatibleMethTypeProblem]("coursier.Cache.validateChecksum"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache.defaultBase"), - // New methdos in Cache.Logger - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdates"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.checkingUpdatesResult"), - // Better overload of Cache.Logger.downloadLength, deprecate previous one - ProblemFilters.exclude[MissingMethodProblem]("coursier.Cache#Logger.downloadLength"), - // Changes to private class TermDisplay#Info - ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Info$"), - ProblemFilters.exclude[AbstractClassProblem]("coursier.TermDisplay$Info"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.downloaded"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.productElement"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.productArity"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.canEqual"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.length"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.display"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.fraction"), - // Since 1.0.0-M9 - // Added an optional extra parameter to FileError.NotFound - only - // its unapply method should break compatibility at the source level. - ProblemFilters.exclude[MissingMethodProblem]("coursier.FileError#NotFound.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.FileError#NotFound.this"), - ProblemFilters.exclude[MissingTypesProblem]("coursier.FileError$NotFound$"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.FileError#NotFound.apply"), - // Since 1.0.0-M8 - ProblemFilters.exclude[MissingTypesProblem]("coursier.TermDisplay$Info$"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.apply"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.copy"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.pct"), - ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.this") + ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Message$Stop$"), + ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Message"), + ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Message$"), + ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$Message$Update$"), + ProblemFilters.exclude[MissingClassProblem]("coursier.TermDisplay$UpdateDisplayThread") ) } ) @@ -639,3 +522,13 @@ lazy val pluginSettings = ) ) +lazy val mimaPreviousArtifactSettings = Seq( + mimaPreviousArtifacts := { + val version = scalaBinaryVersion.value match { + case "2.12" => binaryCompatibility212Version + case _ => binaryCompatibilityVersion + } + + Set(organization.value %% moduleName.value % version) + } +) diff --git a/project/plugins.sbt b/project/plugins.sbt index 2997486e7..cfb97f581 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,5 +5,5 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.4.0") addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.8") addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M15-1") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.11") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.13") libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value