Merge pull request #17761 from 2m/wip-check-all-bc

=pro verify BC against all binary compatible versions
This commit is contained in:
Patrik Nordwall 2015-10-23 09:40:35 +02:00
commit ee6b3cd8f3
24 changed files with 56 additions and 63 deletions

View file

@ -9,6 +9,6 @@ OSGi.actor
Dependencies.actor
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-actor").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-actor").value
spray.boilerplate.BoilerplatePlugin.Boilerplate.settings

View file

@ -9,6 +9,6 @@ OSGi.agent
Dependencies.agent
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-agent").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-agent").value
enablePlugins(ScaladocNoVerificationOfDiagrams)

View file

@ -9,4 +9,4 @@ OSGi.camel
Dependencies.camel
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-camel").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-camel").value

View file

@ -12,7 +12,7 @@ OSGi.clusterMetrics
Dependencies.clusterMetrics
//MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-metrics").value
//MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-cluster-metrics").value
parallelExecution in Test := false

View file

@ -9,6 +9,6 @@ OSGi.clusterSharding
Dependencies.clusterSharding
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-sharding").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-cluster-sharding").value
enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams)

View file

@ -9,6 +9,6 @@ OSGi.clusterTools
Dependencies.clusterTools
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-tools").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-cluster-tools").value
enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams)

View file

@ -10,7 +10,7 @@ OSGi.cluster
Dependencies.cluster
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-cluster").value
// disable parallel tests
parallelExecution in Test := false

View file

@ -9,8 +9,6 @@ OSGi.contrib
Dependencies.contrib
MimaKeys.reportBinaryIssues := () // disable bin comp check
description := """|
|This subproject provides a home to modules contributed by external
|developers which may or may not move into the officially supported code

View file

@ -11,8 +11,6 @@ OSGi.distributedData
Dependencies.distributedData
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-distributed-data-experimental").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-distributed-data-experimental").value
enablePlugins(MultiNodeScalaTest)

View file

@ -25,8 +25,6 @@ Dependencies.docs
unmanagedSourceDirectories in ScalariformKeys.format in Test <<= unmanagedSourceDirectories in Test
MimaKeys.reportBinaryIssues := () // disable bin comp check
additionalTasks in ValidatePR += generate in Sphinx
AkkaBuild.dontPublishSettings

View file

@ -7,6 +7,6 @@ Formatting.formatSettings
Dependencies.kernel
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-kernel").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-kernel").value
enablePlugins(ScaladocNoVerificationOfDiagrams)

View file

@ -5,4 +5,4 @@ AkkaBuild.defaultSettings
Formatting.formatSettings
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-multi-node-testkit").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-multi-node-testkit").value

View file

@ -10,5 +10,3 @@ OSGi.osgi
Dependencies.osgi
parallelExecution in Test := false
MimaKeys.reportBinaryIssues := () // disable bin comp check

View file

@ -11,7 +11,7 @@ OSGi.persistenceQuery
Dependencies.persistenceQuery
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-persistence-query-experimental").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-persistence-query-experimental").value
enablePlugins(ScaladocNoVerificationOfDiagrams)

View file

@ -9,6 +9,4 @@ Formatting.formatSettings
Dependencies.persistenceTck
MimaKeys.previousArtifact := None
fork in Test := true

View file

@ -9,6 +9,6 @@ OSGi.persistence
Dependencies.persistence
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-persistence").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-persistence").value
fork in Test := true

View file

@ -13,8 +13,6 @@ parallelExecution in Test := false
publishArtifact in Compile := false
MimaKeys.reportBinaryIssues := () // disable bin comp check
enablePlugins(MultiNodeScalaTest)
AkkaBuild.dontPublishSettings

View file

@ -11,4 +11,4 @@ Dependencies.remote
parallelExecution in Test := false
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-remote").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-remote").value

View file

@ -9,4 +9,4 @@ OSGi.slf4j
Dependencies.slf4j
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-slf4j").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-slf4j").value

View file

@ -12,4 +12,4 @@ Dependencies.testkit
initialCommands += "import akka.testkit._"
MimaKeys.previousArtifact := akkaPreviousArtifact("akka-testkit").value
MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-testkit").value

View file

@ -404,17 +404,28 @@ object AkkaBuild extends Build {
mavenLocalResolverSettings ++
JUnitFileReporting.settings ++ StatsDMetrics.settings
def akkaPreviousArtifact(id: String): Def.Initialize[Option[sbt.ModuleID]] = Def.setting {
def akkaPreviousArtifacts(id: String): Def.Initialize[Set[sbt.ModuleID]] = Def.setting {
if (enableMiMa) {
val version: String = "2.4.0" // FIXME verify all 2.3.x versions
val fullId = crossVersion.value match {
case _ : CrossVersion.Binary => id + "_" + scalaBinaryVersion.value
case _ : CrossVersion.Full => id + "_" + scalaVersion.value
case CrossVersion.Disabled => id
val versions = {
val akka23Versions = Seq("2.3.11", "2.3.12", "2.3.13", "2.3.14")
val akka24Versions = Seq("2.4.0")
val akka24NewArtifacts = Seq(
"akka-cluster-sharding",
"akka-cluster-tools",
"akka-persistence",
"akka-distributed-data-experimental",
"akka-persistence-query-experimental"
)
scalaBinaryVersion.value match {
case "2.11" if !akka24NewArtifacts.contains(id) => akka23Versions ++ akka24Versions
case _ => akka24Versions // Only Akka 2.4.x for scala > than 2.11
}
}
Some(organization.value % fullId % version) // the artifact to compare binary compatibility with
// check against all binary compatible artifacts
versions.map(organization.value %% id % _).toSet
}
else None
else Set.empty
}
def loadSystemProperties(fileName: String): Unit = {

View file

@ -3,7 +3,7 @@
*/
package akka
import com.typesafe.tools.mima.plugin.MimaKeys.{binaryIssueFilters, previousArtifact}
import com.typesafe.tools.mima.plugin.MimaKeys.{bbcIssueFilters, previousArtifacts}
import com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings
import sbt._
@ -12,8 +12,8 @@ object MiMa extends AutoPlugin {
override def trigger = allRequirements
override val projectSettings = mimaDefaultSettings ++ Seq(
previousArtifact := None,
binaryIssueFilters ++= mimaIgnoredProblems
previousArtifacts := Set.empty,
bbcIssueFilters ++= mimaIgnoredProblems
)
case class FilterAnyProblem(name: String) extends com.typesafe.tools.mima.core.ProblemFilter {
@ -34,12 +34,8 @@ object MiMa extends AutoPlugin {
val mimaIgnoredProblems = {
import com.typesafe.tools.mima.core._
Seq(
FilterAnyProblem("akka.remote.transport.ProtocolStateActor"))
// FIXME somehow we must use different filters when akkaPreviousArtifact is 2.3.x
/* Below are the filters we used when comparing to 2.3.x
Seq(
val bcIssuesBetween23and24 = Seq(
FilterAnyProblem("akka.remote.testconductor.Terminate"),
FilterAnyProblem("akka.remote.testconductor.TerminateMsg"),
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.testconductor.Conductor.shutdown"),
@ -544,7 +540,6 @@ object MiMa extends AutoPlugin {
// issue #17554
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.ReliableDeliverySupervisor.maxResendRate"),
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.ReliableDeliverySupervisor.resendLimit"),
//changes introduced by #16911
ProblemFilters.exclude[MissingMethodProblem]("akka.remote.RemoteActorRefProvider.afterSendSystemMessage"),
FilterAnyProblem("akka.remote.RemoteWatcher"),
@ -553,18 +548,10 @@ object MiMa extends AutoPlugin {
FilterAnyProblem("akka.remote.RemoteWatcher$Rewatch"),
FilterAnyProblem("akka.remote.RemoteWatcher$RewatchRemote"),
FilterAnyProblem("akka.remote.RemoteWatcher$Stats"),
// toString is available on any object, mima is confused due to a generated toString appearing #17722
ProblemFilters.exclude[MissingMethodProblem]("akka.japi.Pair.toString"),
// #17805
ProblemFilters.exclude[MissingMethodProblem]("akka.actor.ActorCell.clearActorFields"),
// internal changes introduced by #17253
ProblemFilters.exclude[IncompatibleResultTypeProblem]("akka.cluster.ClusterDaemon.coreSupervisor"),
ProblemFilters.exclude[MissingMethodProblem]("akka.cluster.ClusterCoreSupervisor.publisher"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("akka.cluster.ClusterCoreSupervisor.coreDaemon"),
// protofbuf embedding #13783
FilterAnyProblemStartingWith("akka.remote.WireFormats"),
FilterAnyProblemStartingWith("akka.remote.ContainerFormats"),
@ -572,11 +559,17 @@ object MiMa extends AutoPlugin {
FilterAnyProblemStartingWith("akka.remote.testconductor.TestConductorProtocol"),
FilterAnyProblemStartingWith("akka.cluster.protobuf.msg.ClusterMessages"),
FilterAnyProblemStartingWith("akka.cluster.protobuf.ClusterMessageSerializer"),
// #13584 change in internal actor
ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.cluster.ClusterCoreDaemon.akka$cluster$ClusterCoreDaemon$$isJoiningToUp$1")
)
)
*/
Map(
"2.3.11" -> Seq(
ProblemFilters.exclude[MissingMethodProblem]("akka.actor.ActorCell.clearActorFields"), // #17805, incomatibility with 2.4.x fixed in 2.3.12
ProblemFilters.exclude[MissingMethodProblem]("akka.japi.Pair.toString") // reported on PR validation machine which uses Java 1.8.0_45
),
"2.3.14" -> bcIssuesBetween23and24,
"2.4.0" -> Seq(FilterAnyProblem("akka.remote.transport.ProtocolStateActor"))
)
}
}

View file

@ -17,7 +17,8 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "0.7.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.6.0")
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.7")
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.7-32-g3bebac4")
resolvers += Resolver.url("2m-sbt-plugins", url("https://dl.bintray.com/2m/sbt-plugins/"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
@ -35,7 +36,7 @@ libraryDependencies += "com.timgroup" % "java-statsd-client" % "2.0.0"
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0-RC1")
// for advanced PR validation features
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.4")
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.5")
libraryDependencies += "org.kohsuke" % "github-api" % "1.68"