aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2019-06-15 15:36:47 +0200
committerJakob Odersky <jakob@odersky.com>2019-06-15 17:10:12 +0200
commit0be325d533af3c5d4f9af70bce495da6047f6c3a (patch)
tree9257057a8553285daaeb24130c37c29965f96e4d
parent7807a34943927fd94b51d15d9452af88330d3e99 (diff)
downloadsbt-jni-0be325d533af3c5d4f9af70bce495da6047f6c3a.tar.gz
sbt-jni-0be325d533af3c5d4f9af70bce495da6047f6c3a.tar.bz2
sbt-jni-0be325d533af3c5d4f9af70bce495da6047f6c3a.zip
Add support for Scala 2.13 and drop support for 2.10
-rw-r--r--README.md8
-rw-r--r--build.sbt23
-rw-r--r--macros/src/main/scala/ch/jodersky/jni/annotations.scala5
-rw-r--r--plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniLoad.scala17
-rw-r--r--plugin/src/sbt-test/sbt-jni/simple/build.sbt2
-rw-r--r--plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala2
-rw-r--r--plugin/src/sbt-test/sbt-jni/simple/project/build.properties2
-rw-r--r--project/build.properties2
8 files changed, 41 insertions, 20 deletions
diff --git a/README.md b/README.md
index 9b07d72..4556ff3 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
| sbt version | plugin version |
|-------------|----------------|
| 0.13.x | [![Download](https://api.bintray.com/packages/jodersky/sbt-plugins/sbt-jni/images/download.svg?version=1.2.6)](https://bintray.com/jodersky/sbt-plugins/sbt-jni/1.2.6/link) |
-| 1.0.x | [![Download](https://api.bintray.com/packages/jodersky/sbt-plugins/sbt-jni/images/download.svg)](https://bintray.com/jodersky/sbt-plugins/sbt-jni/_latestVersion) |
+| 1.x | [![Download](https://api.bintray.com/packages/jodersky/sbt-plugins/sbt-jni/images/download.svg)](https://bintray.com/jodersky/sbt-plugins/sbt-jni/_latestVersion) |
# sbt-jni
@@ -100,7 +100,7 @@ object Main extends App {
}
```
-Note: this plugin is just a shorthand for adding `sbt-jni-macros` (the project in `macros/`) and the scala-macros-paradise projects as provided dependencies.
+Note: this plugin is just a shorthand for adding `sbt-jni-macros` (the project in `macros/`) and the scala-macros-paradise (on Scala <= 2.13) projects as provided dependencies.
See the [annotation's implementation](macros/src/main/scala/ch/jodersky/jni/annotations.scala) for details about the injected code.
@@ -182,7 +182,7 @@ Real-world use-cases of sbt-jni include:
## Requirements and Dependencies
-- projects using `JniLoad` must use Scala versions 2.10, 2.11 or 2.12
+- projects using `JniLoad` must use Scala versions 2.11, 2.12 or 2.13
- only POSIX platforms are supported (actually, any platform that has the `uname` command available)
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).
@@ -190,7 +190,7 @@ The goal of sbt-jni is to be the least intrusive possible. No transitive depende
## Building
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-macros is built against Scala 2.11, 2.12 and 2.13
- 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 78c82f7..190cb06 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,6 +1,6 @@
import scala.sys.process._
-val scalaVersions = Seq("2.12.4", "2.11.12", "2.10.6")
+val scalaVersions = Seq("2.13.0", "2.12.8", "2.11.12")
val macrosParadiseVersion = "2.1.0"
// version is derived from latest git tag
@@ -30,10 +30,23 @@ lazy val macros = (project in file("macros"))
name := "sbt-jni-macros",
scalaVersion := scalaVersions.head,
crossScalaVersions := scalaVersions,
- addCompilerPlugin("org.scalamacros" % "paradise" % macrosParadiseVersion cross CrossVersion.full),
- libraryDependencies += "org.typelevel" %% "macro-compat" % "1.1.1",
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value % Provided,
- libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value
+ libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value,
+
+ libraryDependencies ++= {
+ CrossVersion.partialVersion(scalaVersion.value) match {
+ case Some((2, n)) if n >= 13 => Seq()
+ case _ => Seq(
+ compilerPlugin("org.scalamacros" % "paradise" % macrosParadiseVersion cross CrossVersion.full)
+ )
+ }
+ },
+ Compile / scalacOptions ++= {
+ CrossVersion.partialVersion(scalaVersion.value) match {
+ case Some((2, n)) if n >= 13 => Seq("-Ymacro-annotations")
+ case _ => Seq()
+ }
+ }
)
lazy val plugin = (project in file("plugin"))
@@ -58,6 +71,6 @@ lazy val plugin = (project in file("plugin"))
}.taskValue,
scriptedLaunchOpts := Seq(
"-Dplugin.version=" + version.value,
- "-XX:MaxPermSize=256m", "-Xmx2g", "-Xss2m"
+ "-Xmx2g", "-Xss2m"
)
)
diff --git a/macros/src/main/scala/ch/jodersky/jni/annotations.scala b/macros/src/main/scala/ch/jodersky/jni/annotations.scala
index b349ad4..5b8aecb 100644
--- a/macros/src/main/scala/ch/jodersky/jni/annotations.scala
+++ b/macros/src/main/scala/ch/jodersky/jni/annotations.scala
@@ -1,13 +1,10 @@
package ch.jodersky.jni
-import macrocompat.bundle
-
import scala.language.experimental.macros
import scala.reflect.macros.whitebox.Context
import scala.annotation.StaticAnnotation
import scala.annotation.compileTimeOnly
-@bundle
class nativeLoaderMacro(val c: Context) {
def impl(annottees: c.Expr[Any]*): c.Expr[Any] = {
@@ -47,7 +44,7 @@ class nativeLoaderMacro(val c: Context) {
val tmp: Path = Files.createTempDirectory("jni-")
val plat: String = {
val line = try {
- scala.sys.process.Process("uname -sm").lines.head
+ scala.sys.process.Process("uname -sm").lineStream.head
} catch {
case ex: Exception => sys.error("Error running `uname` command")
}
diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniLoad.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniLoad.scala
index 9f88dbb..0518024 100644
--- a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniLoad.scala
+++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/JniLoad.scala
@@ -13,9 +13,20 @@ object JniLoad extends AutoPlugin {
// Macro Paradise plugin and dependencies are needed to expand annotation macros.
// Once expanded however, downstream projects don't need these dependencies anymore
// (hence the "Provided" configuration).
- addCompilerPlugin(
- "org.scalamacros" % "paradise" % ProjectVersion.MacrosParadise cross CrossVersion.full
- ),
+ libraryDependencies ++= {
+ CrossVersion.partialVersion(scalaVersion.value) match {
+ case Some((2, n)) if n >= 13 => Seq()
+ case _ => Seq(
+ compilerPlugin("org.scalamacros" % "paradise" % ProjectVersion.MacrosParadise cross CrossVersion.full)
+ )
+ }
+ },
+ Compile / scalacOptions ++= {
+ CrossVersion.partialVersion(scalaVersion.value) match {
+ case Some((2, n)) if n >= 13 => Seq("-Ymacro-annotations")
+ case _ => Seq()
+ }
+ },
resolvers += Resolver.jcenterRepo,
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value % Provided,
libraryDependencies += "ch.jodersky" %% "sbt-jni-macros" % ProjectVersion.Macros % Provided
diff --git a/plugin/src/sbt-test/sbt-jni/simple/build.sbt b/plugin/src/sbt-test/sbt-jni/simple/build.sbt
index b6ee91b..e2d73d0 100644
--- a/plugin/src/sbt-test/sbt-jni/simple/build.sbt
+++ b/plugin/src/sbt-test/sbt-jni/simple/build.sbt
@@ -4,7 +4,7 @@ lazy val root = (project in file(".")).
aggregate(core, native)
lazy val core = (project in file("core")).
- settings(libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.2" % "test").
+ settings(libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % "test").
settings(target in javah := (sourceDirectory in nativeCompile in native).value / "include").
dependsOn(native % Runtime)
diff --git a/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala b/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala
index b3d7c70..d5d1d6e 100644
--- a/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala
+++ b/plugin/src/sbt-test/sbt-jni/simple/project/ScriptedHelper.scala
@@ -8,7 +8,7 @@ object ScriptedHelper extends AutoPlugin {
override def projectSettings = Seq(
scalacOptions ++= Seq("-feature", "-deprecation"),
- crossScalaVersions := Seq("2.12.4", "2.11.12", "2.10.6"),
+ crossScalaVersions := Seq("2.13.0", "2.12.8", "2.11.12"),
scalaVersion := crossScalaVersions.value.head
)
diff --git a/plugin/src/sbt-test/sbt-jni/simple/project/build.properties b/plugin/src/sbt-test/sbt-jni/simple/project/build.properties
index 31334bb..d6e3507 100644
--- a/plugin/src/sbt-test/sbt-jni/simple/project/build.properties
+++ b/plugin/src/sbt-test/sbt-jni/simple/project/build.properties
@@ -1 +1 @@
-sbt.version=1.1.1
+sbt.version=1.1.6
diff --git a/project/build.properties b/project/build.properties
index 31334bb..d6e3507 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1 +1 @@
-sbt.version=1.1.1
+sbt.version=1.1.6