From 5dc25fbb442d302c90f19853c93b6021542b5aea Mon Sep 17 00:00:00 2001 From: Roland Kuhn Date: Thu, 21 May 2015 21:07:37 +0200 Subject: [PATCH] add crosscompilation for 2.12.0-M1 --- akka-actor-tests/build.sbt | 2 +- akka-actor/build.sbt | 2 +- akka-agent/build.sbt | 2 +- akka-camel/build.sbt | 2 +- akka-cluster-metrics/build.sbt | 2 +- akka-cluster-sharding/build.sbt | 2 +- akka-cluster-tools/build.sbt | 2 +- akka-cluster/build.sbt | 2 +- akka-contrib/build.sbt | 2 +- akka-docs/build.sbt | 2 +- akka-kernel/build.sbt | 2 +- akka-osgi/build.sbt | 2 +- akka-persistence-tck/build.sbt | 2 +- akka-remote/build.sbt | 2 +- akka-slf4j/build.sbt | 2 +- akka-testkit/build.sbt | 2 +- .../src/main/scala/akka/typed/ActorRef.scala | 4 +- project/AkkaBuild.scala | 6 +- project/Dependencies.scala | 91 +++++++------------ project/MultiNode.scala | 13 ++- 20 files changed, 62 insertions(+), 84 deletions(-) diff --git a/akka-actor-tests/build.sbt b/akka-actor-tests/build.sbt index 22783f3625..4db11d0d5d 100644 --- a/akka-actor-tests/build.sbt +++ b/akka-actor-tests/build.sbt @@ -8,4 +8,4 @@ Unidoc.scaladocSettings publishArtifact in Compile := false -libraryDependencies ++= Dependencies.actorTests +Dependencies.actorTests diff --git a/akka-actor/build.sbt b/akka-actor/build.sbt index a55394ba6b..f009316b6a 100644 --- a/akka-actor/build.sbt +++ b/akka-actor/build.sbt @@ -11,7 +11,7 @@ Unidoc.javadocSettings OSGi.actor -libraryDependencies ++= Dependencies.actor +Dependencies.actor MimaKeys.previousArtifact := akkaPreviousArtifact("akka-actor").value diff --git a/akka-agent/build.sbt b/akka-agent/build.sbt index b4b652cb1c..431eda29e2 100644 --- a/akka-agent/build.sbt +++ b/akka-agent/build.sbt @@ -11,6 +11,6 @@ Unidoc.javadocSettings OSGi.agent -libraryDependencies ++= Dependencies.agent +Dependencies.agent MimaKeys.previousArtifact := akkaPreviousArtifact("akka-agent").value diff --git a/akka-camel/build.sbt b/akka-camel/build.sbt index b6c5f140a2..e72d1c59ae 100644 --- a/akka-camel/build.sbt +++ b/akka-camel/build.sbt @@ -11,6 +11,6 @@ Unidoc.javadocSettings OSGi.camel -libraryDependencies ++= Dependencies.camel +Dependencies.camel MimaKeys.previousArtifact := akkaPreviousArtifact("akka-camel").value diff --git a/akka-cluster-metrics/build.sbt b/akka-cluster-metrics/build.sbt index e895ccf06a..03a5a2f74d 100644 --- a/akka-cluster-metrics/build.sbt +++ b/akka-cluster-metrics/build.sbt @@ -16,7 +16,7 @@ SigarLoader.sigarSettings OSGi.clusterMetrics -libraryDependencies ++= Dependencies.clusterMetrics +Dependencies.clusterMetrics //MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-metrics").value diff --git a/akka-cluster-sharding/build.sbt b/akka-cluster-sharding/build.sbt index b867b07fd4..51733f2fc8 100644 --- a/akka-cluster-sharding/build.sbt +++ b/akka-cluster-sharding/build.sbt @@ -13,6 +13,6 @@ OSGi.clusterSharding MultiNode.multiJvmSettings -libraryDependencies ++= Dependencies.clusterSharding +Dependencies.clusterSharding //MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-sharding").value diff --git a/akka-cluster-tools/build.sbt b/akka-cluster-tools/build.sbt index ca1f28bb82..6515b5f8ea 100644 --- a/akka-cluster-tools/build.sbt +++ b/akka-cluster-tools/build.sbt @@ -13,6 +13,6 @@ OSGi.clusterTools MultiNode.multiJvmSettings -libraryDependencies ++= Dependencies.clusterTools +Dependencies.clusterTools //MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster-tools").value diff --git a/akka-cluster/build.sbt b/akka-cluster/build.sbt index c9c5030fae..bd807f9f44 100644 --- a/akka-cluster/build.sbt +++ b/akka-cluster/build.sbt @@ -14,7 +14,7 @@ MultiNode.multiJvmSettings OSGi.cluster -libraryDependencies ++= Dependencies.cluster +Dependencies.cluster MimaKeys.previousArtifact := akkaPreviousArtifact("akka-cluster").value diff --git a/akka-contrib/build.sbt b/akka-contrib/build.sbt index 116e3e2f04..0dc27e26f5 100644 --- a/akka-contrib/build.sbt +++ b/akka-contrib/build.sbt @@ -11,7 +11,7 @@ Unidoc.javadocSettings MultiNode.multiJvmSettings -libraryDependencies ++= Dependencies.contrib +Dependencies.contrib MimaKeys.reportBinaryIssues := () // disable bin comp check diff --git a/akka-docs/build.sbt b/akka-docs/build.sbt index 161fe13078..5f92baa973 100644 --- a/akka-docs/build.sbt +++ b/akka-docs/build.sbt @@ -17,7 +17,7 @@ SphinxDoc.sphinxPreprocessing SphinxDoc.docsSettings -libraryDependencies ++= Dependencies.docs +Dependencies.docs publishArtifact in Compile := false diff --git a/akka-kernel/build.sbt b/akka-kernel/build.sbt index 583cedbc85..2aafebecb2 100644 --- a/akka-kernel/build.sbt +++ b/akka-kernel/build.sbt @@ -9,6 +9,6 @@ Unidoc.scaladocSettingsNoVerificationOfDiagrams Unidoc.javadocSettings -libraryDependencies ++= Dependencies.kernel +Dependencies.kernel MimaKeys.previousArtifact := akkaPreviousArtifact("akka-kernel").value diff --git a/akka-osgi/build.sbt b/akka-osgi/build.sbt index d543056dc4..bedcd28408 100644 --- a/akka-osgi/build.sbt +++ b/akka-osgi/build.sbt @@ -11,7 +11,7 @@ Unidoc.javadocSettings OSGi.osgi -libraryDependencies ++= Dependencies.osgi +Dependencies.osgi parallelExecution in Test := false diff --git a/akka-persistence-tck/build.sbt b/akka-persistence-tck/build.sbt index 35fb4b92fa..c4f2674401 100644 --- a/akka-persistence-tck/build.sbt +++ b/akka-persistence-tck/build.sbt @@ -14,7 +14,7 @@ Unidoc.javadocSettings // OSGi.persistenceTck TODO: we do need to export this as OSGi bundle too? -libraryDependencies ++= Dependencies.persistenceTck +Dependencies.persistenceTck MimaKeys.previousArtifact := None diff --git a/akka-remote/build.sbt b/akka-remote/build.sbt index d03d0495d9..de4e6b3c43 100644 --- a/akka-remote/build.sbt +++ b/akka-remote/build.sbt @@ -11,7 +11,7 @@ Unidoc.javadocSettings OSGi.remote -libraryDependencies ++= Dependencies.remote +Dependencies.remote parallelExecution in Test := false diff --git a/akka-slf4j/build.sbt b/akka-slf4j/build.sbt index d7d2571ce7..65b7a17d1a 100644 --- a/akka-slf4j/build.sbt +++ b/akka-slf4j/build.sbt @@ -11,6 +11,6 @@ Unidoc.javadocSettings OSGi.slf4j -libraryDependencies ++= Dependencies.slf4j +Dependencies.slf4j MimaKeys.previousArtifact := akkaPreviousArtifact("akka-slf4j").value diff --git a/akka-testkit/build.sbt b/akka-testkit/build.sbt index c1a8090daa..8a9f998a10 100644 --- a/akka-testkit/build.sbt +++ b/akka-testkit/build.sbt @@ -12,7 +12,7 @@ Unidoc.javadocSettings OSGi.testkit // to fix scaladoc generation -libraryDependencies ++= Dependencies.testkit +Dependencies.testkit initialCommands += "import akka.testkit._" diff --git a/akka-typed/src/main/scala/akka/typed/ActorRef.scala b/akka-typed/src/main/scala/akka/typed/ActorRef.scala index a56edcb5c3..f65eadf7af 100644 --- a/akka-typed/src/main/scala/akka/typed/ActorRef.scala +++ b/akka-typed/src/main/scala/akka/typed/ActorRef.scala @@ -16,7 +16,7 @@ import language.implicitConversions * [[akka.event.EventStream]] on a best effort basis * (i.e. this delivery is not reliable). */ -abstract class ActorRef[-T] extends java.lang.Comparable[ActorRef[_]] { this: ScalaActorRef[T] ⇒ +abstract class ActorRef[-T] extends java.lang.Comparable[ActorRef[Any]] { this: ScalaActorRef[T] ⇒ /** * INTERNAL API. * @@ -52,7 +52,7 @@ abstract class ActorRef[-T] extends java.lang.Comparable[ActorRef[_]] { this: Sc case _ ⇒ false } override def hashCode = untypedRef.hashCode - override def compareTo(other: ActorRef[_]) = untypedRef.compareTo(other.untypedRef) + override def compareTo(other: ActorRef[Any]) = untypedRef.compareTo(other.untypedRef) } /** diff --git a/project/AkkaBuild.scala b/project/AkkaBuild.scala index b1e9a2f4bc..c87decd088 100644 --- a/project/AkkaBuild.scala +++ b/project/AkkaBuild.scala @@ -31,11 +31,9 @@ object AkkaBuild extends Build { val parallelExecutionByDefault = false // TODO: enable this once we're sure it doesn not break things - lazy val buildSettings = Seq( + lazy val buildSettings = Dependencies.Versions ++ Seq( organization := "com.typesafe.akka", - version := "2.4-SNAPSHOT", - scalaVersion := Dependencies.Versions.scalaVersion, - crossScalaVersions := Dependencies.Versions.crossScala + version := "2.4-SNAPSHOT" ) lazy val root = Project( diff --git a/project/Dependencies.scala b/project/Dependencies.scala index c10ec6b512..e8ed64573c 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -1,23 +1,23 @@ package akka import sbt._ +import Keys._ object Dependencies { - import DependencyHelpers._ - import DependencyHelpers.ScalaVersionDependentModuleID._ + lazy val scalaTestVersion = settingKey[String]("The version of ScalaTest to use.") + lazy val scalaStmVersion = settingKey[String]("The version of ScalaSTM to use.") + lazy val scalaCheckVersion = settingKey[String]("The version of ScalaCheck to use.") - object Versions { - val crossScala = Seq("2.11.6") - val scalaVersion = crossScala.head - val scalaStmVersion = sys.props.get("akka.build.scalaStmVersion").getOrElse("0.7") - val scalaTestVersion = sys.props.get("akka.build.scalaTestVersion").getOrElse("2.2.4") - val scalaCheckVersion = sys.props.get("akka.build.scalaCheckVersion").getOrElse("1.11.6") - } + val Versions = Seq( + crossScalaVersions := Seq("2.11.6", "2.12.0-M1"), + scalaVersion := crossScalaVersions.value.head, + scalaStmVersion := sys.props.get("akka.build.scalaStmVersion").getOrElse("0.7"), + scalaCheckVersion := sys.props.get("akka.build.scalaCheckVersion").getOrElse("1.11.6"), + scalaTestVersion := (if (scalaVersion.value == "2.12.0-M1") "2.2.5-M1" else "2.2.4") + ) object Compile { - import Versions._ - // Compile val camelCore = "org.apache.camel" % "camel-core" % "2.13.4" exclude("org.slf4j", "slf4j-api") // ApacheV2 @@ -25,7 +25,7 @@ object Dependencies { val config = "com.typesafe" % "config" % "1.3.0" // ApacheV2 val netty = "io.netty" % "netty" % "3.10.3.Final" // ApacheV2 val protobuf = "com.google.protobuf" % "protobuf-java" % "2.5.0" // New BSD - val scalaStm = "org.scala-stm" %% "scala-stm" % scalaStmVersion // Modified BSD (Scala) + val scalaStm = Def.setting { "org.scala-stm" %% "scala-stm" % scalaStmVersion.value } // Modified BSD (Scala) val slf4jApi = "org.slf4j" % "slf4j-api" % "1.7.12" // MIT // mirrored in OSGi sample @@ -44,8 +44,8 @@ object Dependencies { val logback = "ch.qos.logback" % "logback-classic" % "1.1.3" % "test" // EPL 1.0 / LGPL 2.1 val mockito = "org.mockito" % "mockito-all" % "1.10.19" % "test" // MIT // changing the scalatest dependency must be reflected in akka-docs/rst/dev/multi-jvm-testing.rst - val scalatest = "org.scalatest" %% "scalatest" % scalaTestVersion % "test" // ApacheV2 - val scalacheck = "org.scalacheck" %% "scalacheck" % scalaCheckVersion % "test" // New BSD + val scalatest = Def.setting { "org.scalatest" %% "scalatest" % scalaTestVersion.value % "test" } // ApacheV2 + val scalacheck = Def.setting { "org.scalacheck" %% "scalacheck" % scalaCheckVersion.value % "test" } // New BSD val pojosr = "com.googlecode.pojosr" % "de.kalpatec.pojosr.framework" % "0.2.1" % "test" // ApacheV2 val tinybundles = "org.ops4j.pax.tinybundles" % "tinybundles" % "1.0.0" % "test" // ApacheV2 val log4j = "log4j" % "log4j" % "1.2.14" % "test" // ApacheV2 @@ -75,66 +75,41 @@ object Dependencies { } import Compile._ + val l = libraryDependencies - val actor = Seq(config) + val actor = l ++= Seq(config) - val testkit = Seq(Test.junit, Test.scalatest) ++ Test.metricsAll + val testkit = l ++= Seq(Test.junit, Test.scalatest.value) ++ Test.metricsAll - val actorTests = Seq(Test.junit, Test.scalatest, Test.commonsCodec, Test.commonsMath, Test.mockito, Test.scalacheck, protobuf, Test.junitIntf) + val actorTests = l ++= Seq(Test.junit, Test.scalatest.value, Test.commonsCodec, Test.commonsMath, Test.mockito, Test.scalacheck.value, protobuf, Test.junitIntf) - val remote = Seq(netty, protobuf, uncommonsMath, Test.junit, Test.scalatest) + val remote = l ++= Seq(netty, protobuf, uncommonsMath, Test.junit, Test.scalatest.value) - val remoteTests = deps(Test.junit, Test.scalatest, Test.scalaXml) + val remoteTests = l ++= Seq(Test.junit, Test.scalatest.value, Test.scalaXml) - val cluster = Seq(Test.junit, Test.scalatest) + val cluster = l ++= Seq(Test.junit, Test.scalatest.value) - val clusterTools = Seq(Test.junit, Test.scalatest) + val clusterTools = l ++= Seq(Test.junit, Test.scalatest.value) - val clusterSharding = Seq(Test.junit, Test.scalatest, Test.commonsIo) + val clusterSharding = l ++= Seq(Test.junit, Test.scalatest.value, Test.commonsIo) - val clusterMetrics = Seq(Provided.sigarLoader, Test.slf4jJul, Test.slf4jLog4j, Test.logback, Test.mockito) + val clusterMetrics = l ++= Seq(Provided.sigarLoader, Test.slf4jJul, Test.slf4jLog4j, Test.logback, Test.mockito) - val slf4j = Seq(slf4jApi, Test.logback) + val slf4j = l ++= Seq(slf4jApi, Test.logback) - val agent = Seq(scalaStm, Test.scalatest, Test.junit) + val agent = l ++= Seq(scalaStm.value, Test.scalatest.value, Test.junit) - val persistence = deps(protobuf, Provided.levelDB, Provided.levelDBNative, Test.scalatest, Test.junit, Test.commonsIo, Test.scalaXml) + val persistence = l ++= Seq(protobuf, Provided.levelDB, Provided.levelDBNative, Test.scalatest.value, Test.junit, Test.commonsIo, Test.scalaXml) - val persistenceTck = Seq(Test.scalatest.copy(configurations = Some("compile")), Test.junit.copy(configurations = Some("compile"))) + val persistenceTck = l ++= Seq(Test.scalatest.value.copy(configurations = Some("compile")), Test.junit.copy(configurations = Some("compile"))) - val kernel = Seq(Test.scalatest, Test.junit) + val kernel = l ++= Seq(Test.scalatest.value, Test.junit) - val camel = Seq(camelCore, Test.scalatest, Test.junit, Test.mockito, Test.logback, Test.commonsIo, Test.junitIntf) + val camel = l ++= Seq(camelCore, Test.scalatest.value, Test.junit, Test.mockito, Test.logback, Test.commonsIo, Test.junitIntf) - val osgi = Seq(osgiCore, osgiCompendium, Test.logback, Test.commonsIo, Test.pojosr, Test.tinybundles, Test.scalatest, Test.junit) + val osgi = l ++= Seq(osgiCore, osgiCompendium, Test.logback, Test.commonsIo, Test.pojosr, Test.tinybundles, Test.scalatest.value, Test.junit) - val docs = Seq(Test.scalatest, Test.junit, Test.junitIntf) + val docs = l ++= Seq(Test.scalatest.value, Test.junit, Test.junitIntf) - val contrib = Seq(Test.junitIntf, Test.commonsIo) -} - -object DependencyHelpers { - - import sbt.Keys._ - - case class ScalaVersionDependentModuleID(val modules: String => Seq[ModuleID]) { - def %(config: String): ScalaVersionDependentModuleID = - ScalaVersionDependentModuleID(version => modules(version).map(_ % config)) - } - - object ScalaVersionDependentModuleID { - implicit def liftConstantModule(mod: ModuleID): ScalaVersionDependentModuleID = - ScalaVersionDependentModuleID(_ => Seq(mod)) - - def fromPF(f: PartialFunction[String, ModuleID]): ScalaVersionDependentModuleID = - ScalaVersionDependentModuleID(version => if (f.isDefinedAt(version)) Seq(f(version)) else Nil) - - } - - /** - * Use this as a dependency setting if the dependencies contain both static and Scala-version - * dependent entries. - */ - def deps(modules: ScalaVersionDependentModuleID*) = - libraryDependencies <++= scalaVersion(version => modules.flatMap(m => m.modules(version))) + val contrib = l ++= Seq(Test.junitIntf, Test.commonsIo) } diff --git a/project/MultiNode.scala b/project/MultiNode.scala index 59a6d302c2..1da1ff1ac3 100644 --- a/project/MultiNode.scala +++ b/project/MultiNode.scala @@ -37,10 +37,15 @@ object MultiNode { (if (onlyTestTags.value.isEmpty) Seq.empty else Seq("-n", if (multiNodeEnabled) onlyTestTags.value.mkString("\"", " ", "\"") else onlyTestTags.value.mkString(" "))) } - lazy val multiJvmSettings = SbtMultiJvm.multiJvmSettings ++ inConfig(MultiJvm)(SbtScalariform.configScalariformSettings) ++ Seq( - jvmOptions in MultiJvm := defaultMultiJvmOptions, - compileInputs in(MultiJvm, compile) <<= (compileInputs in(MultiJvm, compile)) dependsOn (ScalariformKeys.format in MultiJvm), - compile in MultiJvm <<= (compile in MultiJvm) triggeredBy (compile in Test)) ++ + lazy val multiJvmSettings = + SbtMultiJvm.multiJvmSettings ++ + inConfig(MultiJvm)(SbtScalariform.configScalariformSettings) ++ + Seq( + jvmOptions in MultiJvm := defaultMultiJvmOptions, + compileInputs in(MultiJvm, compile) <<= (compileInputs in(MultiJvm, compile)) dependsOn (ScalariformKeys.format in MultiJvm), + scalacOptions in MultiJvm <<= scalacOptions in Test, + compile in MultiJvm <<= (compile in MultiJvm) triggeredBy (compile in Test) + ) ++ Option(System.getProperty("akka.test.multi-node.hostsFileName")).map(x => Seq(multiNodeHostsFileName in MultiJvm := x)).getOrElse(Seq.empty) ++ Option(System.getProperty("akka.test.multi-node.java")).map(x => Seq(multiNodeJavaName in MultiJvm := x)).getOrElse(Seq.empty) ++ Option(System.getProperty("akka.test.multi-node.targetDirName")).map(x => Seq(multiNodeTargetDirName in MultiJvm := x)).getOrElse(Seq.empty) ++