aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2017-08-11 14:34:31 -0700
committerJakob Odersky <jakob@odersky.com>2017-08-26 16:08:18 -0700
commit3d2c3d07cab51ab0cb9cec5edfe14e3c37c8e68e (patch)
tree46bcacf2256464c3ba0b74c555fd7e91d5b87faa
parent1eb62d92fd638b129564dd910d68f4e291719220 (diff)
downloadsbt-jni-3d2c3d07cab51ab0cb9cec5edfe14e3c37c8e68e.tar.gz
sbt-jni-3d2c3d07cab51ab0cb9cec5edfe14e3c37c8e68e.tar.bz2
sbt-jni-3d2c3d07cab51ab0cb9cec5edfe14e3c37c8e68e.zip
Support sbt 1.0.0
-rw-r--r--README.md4
-rw-r--r--build.sbt9
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/build/BuildTool.scala2
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala1
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/build/ConfigureMakeInstall.scala1
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniJavah.scala12
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniNative.scala3
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniPackage.scala2
l---------plugin/src/sbt-test/sbt-jni/multiclasses/project/build.properties1
l---------plugin/src/sbt-test/sbt-jni/oneproject/project/build.properties1
-rw-r--r--plugin/src/sbt-test/sbt-jni/simple/project/build.properties1
-rw-r--r--project/build.properties2
-rw-r--r--project/plugins.sbt5
13 files changed, 25 insertions, 19 deletions
diff --git a/README.md b/README.md
index 7b6bdd9..8219139 100644
--- a/README.md
+++ b/README.md
@@ -186,10 +186,10 @@ Real-world use-cases of sbt-jni include:
The goal of sbt-jni is to be the least intrusive possible. No transitive dependencies are added to projects using any plugin (some dependencies are added to the `provided` configuration, however these do not affect any downstream projects).
## Building
-Both the macro library (`sbt-jni-macros`) and the sbt plugins (`sbt-jni`) are published. This project uses sbt-doge to allow cross-building on a per-project basis:
+Both the macro library (`sbt-jni-macros`) and the sbt plugins (`sbt-jni`) are published. Cross-building happens on a per-project basis:
- sbt-jni-macros is built against Scala 2.10, 2.11 and 2.12
-- sbt-jni is built against Scala 2.10 (the Scala version that sbt 0.13 uses)
+- sbt-jni is built against Scala 2.12 (the Scala version that sbt 1.x uses)
The differing Scala versions make it necessary to always cross-compile and cross-publish this project, i.e. append a "+" before every task.
diff --git a/build.sbt b/build.sbt
index 20439d7..0f1b328 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,4 +1,6 @@
-val scalaVersions = Seq("2.12.2", "2.11.11", "2.10.6")
+import scala.sys.process._
+
+val scalaVersions = Seq("2.12.3", "2.11.11", "2.10.6")
val macrosParadiseVersion = "2.1.0"
// version is derived from latest git tag
@@ -13,7 +15,6 @@ scalacOptions in ThisBuild ++= Seq(
licenses in ThisBuild := Seq(("BSD New", url("http://opensource.org/licenses/BSD-3-Clause")))
lazy val root = (project in file("."))
- .enablePlugins(CrossPerProjectPlugin)
.aggregate(macros, plugin)
.settings(
publish := {},
@@ -24,6 +25,7 @@ lazy val root = (project in file("."))
)
lazy val macros = (project in file("macros"))
+ .disablePlugins(ScriptedPlugin)
.settings(
name := "sbt-jni-macros",
scalaVersion := scalaVersions.head,
@@ -35,13 +37,10 @@ lazy val macros = (project in file("macros"))
)
lazy val plugin = (project in file("plugin"))
- .settings(scriptedSettings)
.settings(
name := "sbt-jni",
sbtPlugin := true,
publishMavenStyle := false,
- scalaVersion := "2.10.6",
- crossScalaVersions := Seq(scalaVersion.value),
libraryDependencies += "org.ow2.asm" % "asm" % "5.0.4",
// make project settings available to source
sourceGenerators in Compile += Def.task {
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/BuildTool.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/BuildTool.scala
index e1163f1..931ee58 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/BuildTool.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/BuildTool.scala
@@ -1,7 +1,7 @@
package ch.jodersky.sbt.jni
package build
-import java.io.{ File, InputStream }
+import java.io.File
import java.nio.file.Files
import scala.io.Source
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
index 07517a9..2eba748 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/CMake.scala
@@ -2,6 +2,7 @@ package ch.jodersky.sbt.jni
package build
import sbt._
+import sys.process._
object CMake extends BuildTool with ConfigureMakeInstall {
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/ConfigureMakeInstall.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/ConfigureMakeInstall.scala
index 0be900c..57977ed 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/build/ConfigureMakeInstall.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/build/ConfigureMakeInstall.scala
@@ -3,6 +3,7 @@ package build
import java.io.File
import sbt._
+import sys.process._
trait ConfigureMakeInstall { self: BuildTool =>
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniJavah.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniJavah.scala
index eee5875..e313112 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniJavah.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniJavah.scala
@@ -1,9 +1,11 @@
package ch.jodersky.sbt.jni
package plugins
+import collection.JavaConverters._
+import util.BytecodeUtil
import sbt._
import sbt.Keys._
-import util.BytecodeUtil
+import sys.process._
/** Adds `javah` header-generation functionality to projects. */
object JniJavah extends AutoPlugin {
@@ -27,8 +29,10 @@ object JniJavah extends AutoPlugin {
lazy val mainSettings: Seq[Setting[_]] = Seq(
javahClasses in javah := {
- val compiled: inc.Analysis = (compile in Compile).value
- val classFiles: Set[File] = compiled.relations.allProducts.toSet
+ import xsbti.compile._
+ val compiled: CompileAnalysis = (compile in Compile).value
+ val classFiles: Set[File] = compiled.readStamps().getAllProductStamps()
+ .asScala.keySet.toSet
val nativeClasses = classFiles flatMap { file =>
BytecodeUtil.nativeClasses(file)
}
@@ -63,7 +67,7 @@ object JniJavah extends AutoPlugin {
clazz
)
val cmd = parts.mkString(" ")
- val ev = Process(cmd) ! streams.value.log
+ val ev = Process(cmd) ! log
if (ev != 0) sys.error(s"Error occured running javah. Exit code: ${ev}")
}
out
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniNative.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniNative.scala
index a1e7c64..7bdf641 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniNative.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniNative.scala
@@ -4,6 +4,7 @@ package plugins
import build._
import sbt._
import sbt.Keys._
+import sys.process._
/** Wraps a native build system in sbt tasks. */
object JniNative extends AutoPlugin {
@@ -37,7 +38,7 @@ object JniNative extends AutoPlugin {
// the value retruned must match that of `ch.jodersky.jni.PlatformMacros#current()` of project `macros`
nativePlatform := {
try {
- val lines = Process("uname -sm").lines
+ val lines = Process("uname -sm").lineStream
if (lines.length == 0) {
sys.error("Error occured trying to run `uname`")
}
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniPackage.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniPackage.scala
index fe627a9..0c3fc31 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniPackage.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniPackage.scala
@@ -3,6 +3,7 @@ package plugins
import sbt._
import sbt.Keys._
+import sbt.io.Path._
import java.io.File
/** Packages libraries built with JniNative. */
@@ -50,7 +51,6 @@ object JniPackage extends AutoPlugin {
unmanagedNativeDirectories := Seq(baseDirectory.value / "lib_native"),
unmanagedNativeLibraries := {
- val baseDirs: Seq[File] = unmanagedNativeDirectories.value
val mappings: Seq[(File, String)] = unmanagedNativeDirectories.value.flatMap { dir =>
val files: Seq[File] = (dir ** "*").get.filter(_.isFile)
files pair rebase(dir, "/native")
diff --git a/plugin/src/sbt-test/sbt-jni/multiclasses/project/build.properties b/plugin/src/sbt-test/sbt-jni/multiclasses/project/build.properties
new file mode 120000
index 0000000..4f1a8ba
--- /dev/null
+++ b/plugin/src/sbt-test/sbt-jni/multiclasses/project/build.properties
@@ -0,0 +1 @@
+../../simple/project/build.properties \ No newline at end of file
diff --git a/plugin/src/sbt-test/sbt-jni/oneproject/project/build.properties b/plugin/src/sbt-test/sbt-jni/oneproject/project/build.properties
new file mode 120000
index 0000000..4f1a8ba
--- /dev/null
+++ b/plugin/src/sbt-test/sbt-jni/oneproject/project/build.properties
@@ -0,0 +1 @@
+../../simple/project/build.properties \ No newline at end of file
diff --git a/plugin/src/sbt-test/sbt-jni/simple/project/build.properties b/plugin/src/sbt-test/sbt-jni/simple/project/build.properties
new file mode 100644
index 0000000..94005e5
--- /dev/null
+++ b/plugin/src/sbt-test/sbt-jni/simple/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.0.0
diff --git a/project/build.properties b/project/build.properties
index 27e88aa..94005e5 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1 +1 @@
-sbt.version=0.13.13
+sbt.version=1.0.0
diff --git a/project/plugins.sbt b/project/plugins.sbt
index d57d693..97fc739 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,5 +1,2 @@
-// cross-compile subprojects with differing scala versions
-addSbtPlugin("com.eed3si9n" % "sbt-doge" % "0.1.5")
-
// testing for sbt plugins
-libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value
+libraryDependencies += "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value