Merge pull request #368 from alexarchambault/topic/prepare-scala-2.12.0-RC2

Cross compile for Scala 2.12.0-RC2
This commit is contained in:
Alexandre Archambault 2016-10-23 00:10:01 +02:00 committed by GitHub
commit 3fc50ee846
7 changed files with 138 additions and 94 deletions

View File

@ -12,6 +12,9 @@ script:
# - bash <(curl -s https://codecov.io/bash) # - bash <(curl -s https://codecov.io/bash)
matrix: matrix:
include: include:
- env: TRAVIS_SCALA_VERSION=2.12.0-RC2 PUBLISH=1
os: linux
jdk: oraclejdk8
- env: TRAVIS_SCALA_VERSION=2.11.8 PUBLISH=1 - env: TRAVIS_SCALA_VERSION=2.11.8 PUBLISH=1
os: linux os: linux
jdk: oraclejdk8 jdk: oraclejdk8

190
build.sbt
View File

@ -47,21 +47,21 @@ lazy val noPublishSettings = Seq(
publishArtifact := false publishArtifact := false
) )
def noPublishForScalaVersionSettings(sbv: String) = Seq( def noPublishForScalaVersionSettings(sbv: String*) = Seq(
publish := { publish := {
if (scalaBinaryVersion.value == sbv) if (sbv.contains(scalaBinaryVersion.value))
() ()
else else
publish.value publish.value
}, },
publishLocal := { publishLocal := {
if (scalaBinaryVersion.value == sbv) if (sbv.contains(scalaBinaryVersion.value))
() ()
else else
publishLocal.value publishLocal.value
}, },
publishArtifact := { publishArtifact := {
if (scalaBinaryVersion.value == sbv) if (sbv.contains(scalaBinaryVersion.value))
false false
else else
publishArtifact.value publishArtifact.value
@ -74,26 +74,40 @@ lazy val scalaVersionAgnosticCommonSettings = Seq(
"Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases", "Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases",
Resolver.sonatypeRepo("releases") Resolver.sonatypeRepo("releases")
), ),
scalacOptions += "-target:jvm-1.7", scalacOptions ++= {
javacOptions ++= Seq( scalaBinaryVersion.value match {
"-source", "1.7", case "2.10" | "2.11" =>
"-target", "1.7" Seq("-target:jvm-1.7")
), case _ =>
Seq()
}
},
javacOptions ++= {
scalaBinaryVersion.value match {
case "2.10" | "2.11" =>
Seq(
"-source", "1.7",
"-target", "1.7"
)
case _ =>
Seq()
}
},
javacOptions in Keys.doc := Seq() javacOptions in Keys.doc := Seq()
) ++ releaseSettings ) ++ releaseSettings
lazy val commonSettings = scalaVersionAgnosticCommonSettings ++ Seq( lazy val commonSettings = scalaVersionAgnosticCommonSettings ++ Seq(
scalaVersion := "2.11.8", scalaVersion := "2.11.8",
crossScalaVersions := Seq("2.11.8", "2.10.6"), crossScalaVersions := Seq("2.12.0-RC2", "2.11.8", "2.10.6"),
libraryDependencies ++= { libraryDependencies ++= {
if (scalaBinaryVersion.value == "2.10") if (scalaBinaryVersion.value == "2.10")
Seq(compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)) Seq(compilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
else else
Seq() Seq()
} }
) )
val scalazVersion = "7.2.5" val scalazVersion = "7.2.6"
lazy val core = crossProject lazy val core = crossProject
.settings(commonSettings: _*) .settings(commonSettings: _*)
@ -102,30 +116,16 @@ lazy val core = crossProject
name := "coursier", name := "coursier",
libraryDependencies ++= Seq( libraryDependencies ++= Seq(
"org.scalaz" %%% "scalaz-core" % scalazVersion, "org.scalaz" %%% "scalaz-core" % scalazVersion,
"com.lihaoyi" %%% "fastparse" % "0.3.7" "com.lihaoyi" %%% "fastparse" % "0.4.2"
), ),
resourceGenerators.in(Compile) += { mimaPreviousArtifacts := {
(target, version).map { (dir, ver) => scalaBinaryVersion.value match {
import sys.process._ case "2.10" | "2.11" =>
Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion)
val f = dir / "coursier.properties" case _ =>
dir.mkdirs() Set()
}
val p = new java.util.Properties
p.setProperty("version", ver)
p.setProperty("commit-hash", Seq("git", "rev-parse", "HEAD").!!.trim)
val w = new FileOutputStream(f)
p.store(w, "Coursier properties")
w.close()
println(s"Wrote $f")
Seq(f)
}.taskValue
}, },
mimaPreviousArtifacts := Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion),
mimaBinaryIssueFilters ++= { mimaBinaryIssueFilters ++= {
import com.typesafe.tools.mima.core._ import com.typesafe.tools.mima.core._
@ -205,12 +205,32 @@ lazy val core = crossProject
else Seq( else Seq(
"org.scala-lang.modules" %% "scala-xml" % "1.0.5" "org.scala-lang.modules" %% "scala-xml" % "1.0.5"
) )
} },
resourceGenerators.in(Compile) += {
(target, version).map { (dir, ver) =>
import sys.process._
val f = dir / "coursier.properties"
dir.mkdirs()
val p = new java.util.Properties
p.setProperty("version", ver)
p.setProperty("commit-hash", Seq("git", "rev-parse", "HEAD").!!.trim)
val w = new FileOutputStream(f)
p.store(w, "Coursier properties")
w.close()
println(s"Wrote $f")
Seq(f)
}.taskValue
}
) )
.jsSettings( .jsSettings(
libraryDependencies ++= Seq( libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % "0.9.1", "org.scala-js" %%% "scalajs-dom" % "0.9.1"
"be.doeraene" %%% "scalajs-jquery" % "0.9.0"
) )
) )
@ -234,17 +254,21 @@ lazy val tests = crossProject
.settings(Defaults.itSettings: _*) .settings(Defaults.itSettings: _*)
.settings( .settings(
name := "coursier-tests", name := "coursier-tests",
libraryDependencies ++= Seq( libraryDependencies += {
"org.scala-lang.modules" %% "scala-async" % "0.9.5" % "provided", val asyncVersion =
"com.lihaoyi" %%% "utest" % "0.4.3" % "test" if (scalaBinaryVersion.value == "2.10")
), "0.9.5"
else
"0.9.6-RC6"
"org.scala-lang.modules" %% "scala-async" % asyncVersion % "provided"
},
libraryDependencies += "com.lihaoyi" %%% "utest" % "0.4.4" % "test",
unmanagedResourceDirectories in Test += (baseDirectory in LocalRootProject).value / "tests" / "shared" / "src" / "test" / "resources", unmanagedResourceDirectories in Test += (baseDirectory in LocalRootProject).value / "tests" / "shared" / "src" / "test" / "resources",
testFrameworks += new TestFramework("utest.runner.Framework") testFrameworks += new TestFramework("utest.runner.Framework")
) )
.jsSettings( .jsSettings(
jsEnv := NodeJSEnv().value, scalaJSStage in Global := FastOptStage
scalaJSStage in Global := FastOptStage,
scalaJSUseRhino in Global := false
) )
lazy val testsJvm = tests.jvm.dependsOn(cache % "test") lazy val testsJvm = tests.jvm.dependsOn(cache % "test")
@ -257,7 +281,14 @@ lazy val cache = project
.settings( .settings(
name := "coursier-cache", name := "coursier-cache",
libraryDependencies += "org.scalaz" %% "scalaz-concurrent" % scalazVersion, libraryDependencies += "org.scalaz" %% "scalaz-concurrent" % scalazVersion,
mimaPreviousArtifacts := Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion), mimaPreviousArtifacts := {
scalaBinaryVersion.value match {
case "2.10" | "2.11" =>
Set("com.github.alexarchambault" %% moduleName.value % binaryCompatibilityVersion)
case _ =>
Set()
}
},
mimaBinaryIssueFilters ++= { mimaBinaryIssueFilters ++= {
import com.typesafe.tools.mima.core._ import com.typesafe.tools.mima.core._
@ -334,16 +365,16 @@ lazy val bootstrap = project
lazy val cli = project lazy val cli = project
.dependsOn(coreJvm, cache) .dependsOn(coreJvm, cache)
.settings(commonSettings) .settings(commonSettings)
.settings(noPublishForScalaVersionSettings("2.10")) .settings(noPublishForScalaVersionSettings("2.10", "2.12"))
.settings(packAutoSettings) .settings(packAutoSettings)
.settings(proguardSettings) .settings(proguardSettings)
.settings( .settings(
name := "coursier-cli", name := "coursier-cli",
libraryDependencies ++= { libraryDependencies ++= {
if (scalaBinaryVersion.value == "2.10") if (scalaBinaryVersion.value == "2.11")
Seq()
else
Seq("com.github.alexarchambault" %% "case-app" % "1.1.2") Seq("com.github.alexarchambault" %% "case-app" % "1.1.2")
else
Seq()
}, },
resourceGenerators in Compile += packageBin.in(bootstrap).in(Compile).map { jar => resourceGenerators in Compile += packageBin.in(bootstrap).in(Compile).map { jar =>
Seq(jar) Seq(jar)
@ -357,16 +388,17 @@ lazy val cli = project
javaOptions in (Proguard, ProguardKeys.proguard) := Seq("-Xmx3172M"), javaOptions in (Proguard, ProguardKeys.proguard) := Seq("-Xmx3172M"),
artifactPath in Proguard := (ProguardKeys.proguardDirectory in Proguard).value / "coursier-standalone.jar", artifactPath in Proguard := (ProguardKeys.proguardDirectory in Proguard).value / "coursier-standalone.jar",
artifacts ++= { artifacts ++= {
if (scalaBinaryVersion.value == "2.10") if (scalaBinaryVersion.value == "2.11")
Nil Seq(
else Seq( Artifact(
Artifact( moduleName.value,
moduleName.value, "jar",
"jar", "jar",
"jar", "standalone"
"standalone" )
) )
) else
Nil
}, },
packagedArtifacts <++= { packagedArtifacts <++= {
( (
@ -376,9 +408,7 @@ lazy val cli = project
packageBin.in(bootstrap) in Compile packageBin.in(bootstrap) in Compile
).map { ).map {
(mod, sbv, files, bootstrapJar) => (mod, sbv, files, bootstrapJar) =>
if (sbv == "2.10") if (sbv == "2.11") {
Map.empty[Artifact, File]
else {
import java.util.zip.{ ZipEntry, ZipOutputStream, ZipInputStream } import java.util.zip.{ ZipEntry, ZipOutputStream, ZipInputStream }
import java.io.{ ByteArrayOutputStream, FileInputStream, FileOutputStream, File, InputStream, IOException } import java.io.{ ByteArrayOutputStream, FileInputStream, FileOutputStream, File, InputStream, IOException }
@ -455,7 +485,8 @@ lazy val cli = project
"standalone" "standalone"
) -> f ) -> f
) )
} } else
Map.empty[Artifact, File]
} }
} }
) )
@ -467,18 +498,21 @@ lazy val web = project
.settings(noPublishSettings) .settings(noPublishSettings)
.settings( .settings(
libraryDependencies ++= { libraryDependencies ++= {
if (scalaBinaryVersion.value == "2.10") if (scalaBinaryVersion.value == "2.11")
Seq() Seq(
"be.doeraene" %%% "scalajs-jquery" % "0.9.0",
"com.github.japgolly.scalajs-react" %%% "core" % "0.9.0"
)
else else
Seq("com.github.japgolly.scalajs-react" %%% "core" % "0.9.0") Seq()
}, },
sourceDirectory := { sourceDirectory := {
val dir = sourceDirectory.value val dir = sourceDirectory.value
if (scalaBinaryVersion.value == "2.10") if (scalaBinaryVersion.value == "2.11")
dir / "dummy"
else
dir dir
else
dir / "dummy"
}, },
test in Test := (), test in Test := (),
testOnly in Test := (), testOnly in Test := (),
@ -505,7 +539,7 @@ lazy val doc = project
lazy val plugin = project lazy val plugin = project
.dependsOn(coreJvm, cache) .dependsOn(coreJvm, cache)
.settings(scalaVersionAgnosticCommonSettings) .settings(scalaVersionAgnosticCommonSettings)
.settings(noPublishForScalaVersionSettings("2.11")) .settings(noPublishForScalaVersionSettings("2.11", "2.12"))
.settings( .settings(
name := "sbt-coursier", name := "sbt-coursier",
sbtPlugin := (scalaBinaryVersion.value == "2.10"), sbtPlugin := (scalaBinaryVersion.value == "2.10"),
@ -533,14 +567,20 @@ val http4sVersion = "0.8.6"
lazy val `http-server` = project lazy val `http-server` = project
.settings(commonSettings) .settings(commonSettings)
.settings(packAutoSettings) .settings(packAutoSettings)
.settings(noPublishForScalaVersionSettings("2.10", "2.12"))
.settings( .settings(
name := "http-server-java7", name := "http-server-java7",
libraryDependencies ++= Seq( libraryDependencies ++= {
"org.http4s" %% "http4s-blazeserver" % http4sVersion, if (scalaBinaryVersion.value == "2.11")
"org.http4s" %% "http4s-dsl" % http4sVersion, Seq(
"org.slf4j" % "slf4j-nop" % "1.7.21", "org.http4s" %% "http4s-blazeserver" % http4sVersion,
"com.github.alexarchambault" %% "case-app" % "1.1.2" "org.http4s" %% "http4s-dsl" % http4sVersion,
) "org.slf4j" % "slf4j-nop" % "1.7.21",
"com.github.alexarchambault" %% "case-app" % "1.1.2"
)
else
Seq()
}
) )
lazy val okhttp = project lazy val okhttp = project

View File

@ -107,26 +107,27 @@ object IvyXml {
.find(_.label == "info") .find(_.label == "info")
.toRightDisjunction("Info not found") .toRightDisjunction("Info not found")
(module, version) <- info(infoNode) modVer <- info(infoNode)
} yield {
dependenciesNodeOpt = node.children val (module, version) = modVer
val dependenciesNodeOpt = node.children
.find(_.label == "dependencies") .find(_.label == "dependencies")
dependencies0 = dependenciesNodeOpt.map(dependencies).getOrElse(Nil) val dependencies0 = dependenciesNodeOpt.map(dependencies).getOrElse(Nil)
configurationsNodeOpt = node.children val configurationsNodeOpt = node.children
.find(_.label == "configurations") .find(_.label == "configurations")
configurationsOpt = configurationsNodeOpt.map(configurations) val configurationsOpt = configurationsNodeOpt.map(configurations)
configurations0 = configurationsOpt.getOrElse(Seq("default" -> Seq.empty[String])) val configurations0 = configurationsOpt.getOrElse(Seq("default" -> Seq.empty[String]))
publicationsNodeOpt = node.children val publicationsNodeOpt = node.children
.find(_.label == "publications") .find(_.label == "publications")
publicationsOpt = publicationsNodeOpt.map(publications) val publicationsOpt = publicationsNodeOpt.map(publications)
} yield {
val description = infoNode.children val description = infoNode.children
.find(_.label == "description") .find(_.label == "description")

View File

@ -1,9 +1,9 @@
addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.8.0") addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.8.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.11") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.13")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.1.0") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.4.0")
addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.2") addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.5")
addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M14") addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0-M14")
addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.9") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.11")
libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value

View File

@ -1,8 +1,8 @@
com.lihaoyi:fastparse-utils_2.11:0.3.7:default com.lihaoyi:fastparse-utils_2.11:0.4.2:default
com.lihaoyi:fastparse_2.11:0.3.7:default com.lihaoyi:fastparse_2.11:0.4.2:default
com.lihaoyi:sourcecode_2.11:0.1.1:default com.lihaoyi:sourcecode_2.11:0.1.3:default
io.get-coursier:coursier_2.11:1.0.0-SNAPSHOT:compile io.get-coursier:coursier_2.11:1.0.0-SNAPSHOT:compile
org.jsoup:jsoup:1.9.2:default org.jsoup:jsoup:1.9.2:default
org.scala-lang:scala-library:2.11.8:default org.scala-lang:scala-library:2.11.8:default
org.scala-lang.modules:scala-xml_2.11:1.0.5:default org.scala-lang.modules:scala-xml_2.11:1.0.5:default
org.scalaz:scalaz-core_2.11:7.2.5:default org.scalaz:scalaz-core_2.11:7.2.6:default

View File

@ -92,7 +92,7 @@ object CentralTests extends TestSuite {
} }
for (((e, r), idx) <- expected.zip(result).zipWithIndex if e != r) for (((e, r), idx) <- expected.zip(result).zipWithIndex if e != r)
println(s"Line $idx:\n expected: $e\n got: $r") println(s"Line ${idx + 1}:\n expected: $e\n got: $r")
assert(result == expected) assert(result == expected)
} }