diff --git a/.travis.yml b/.travis.yml index 177d263..19c8166 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: scala jdk: oraclejdk8 script: - - sbt ^test ^publishLocal + - sbt ^test scripted ^publishLocal - md5sum target/scala-*/sbt-*/*.jar_ deploy: diff --git a/build.sbt b/build.sbt index dd73346..980fba0 100644 --- a/build.sbt +++ b/build.sbt @@ -12,3 +12,8 @@ enablePlugins(ReproducibleBuildsPlugin) libraryDependencies += "net.bzzt" % "reproducible-build" % "0.2" licenses += ("MIT", url("http://opensource.org/licenses/MIT")) + +scriptedLaunchOpts := { scriptedLaunchOpts.value ++ + Seq("-Xmx1024M", "-Dplugin.version=" + version.value) +} +scriptedBufferLog := false diff --git a/project/scripted.sbt b/project/scripted.sbt new file mode 100644 index 0000000..ec4eaff --- /dev/null +++ b/project/scripted.sbt @@ -0,0 +1 @@ +libraryDependencies += { "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } diff --git a/src/main/scala/ReproducibleBuildsPlugin.scala b/src/main/scala/ReproducibleBuildsPlugin.scala index 5b9863b..051306e 100644 --- a/src/main/scala/ReproducibleBuildsPlugin.scala +++ b/src/main/scala/ReproducibleBuildsPlugin.scala @@ -11,7 +11,8 @@ object ReproducibleBuildsPlugin extends AutoPlugin { override def requires: Plugins = JvmPlugin override lazy val projectSettings = Seq( - packageBin in (Compile, packageBin) ~= { bin => + packageBin in Compile := { + val bin = (packageBin in Compile).value val out = new File(bin.getCanonicalPath + "_") new ZipStripper() .addFileStripper("META-INF/MANIFEST.MF", new ManifestStripper()) diff --git a/src/sbt-test/sbt-reproducible-builds/simple/build.sbt b/src/sbt-test/sbt-reproducible-builds/simple/build.sbt new file mode 100644 index 0000000..cf22945 --- /dev/null +++ b/src/sbt-test/sbt-reproducible-builds/simple/build.sbt @@ -0,0 +1,2 @@ +enablePlugins(ReproducibleBuildsPlugin) + diff --git a/src/sbt-test/sbt-reproducible-builds/simple/expected/simple_2.12-0.1.0-SNAPSHOT.jar b/src/sbt-test/sbt-reproducible-builds/simple/expected/simple_2.12-0.1.0-SNAPSHOT.jar new file mode 100644 index 0000000..86fe281 Binary files /dev/null and b/src/sbt-test/sbt-reproducible-builds/simple/expected/simple_2.12-0.1.0-SNAPSHOT.jar differ diff --git a/src/sbt-test/sbt-reproducible-builds/simple/project/build.properties b/src/sbt-test/sbt-reproducible-builds/simple/project/build.properties new file mode 100644 index 0000000..d6e3507 --- /dev/null +++ b/src/sbt-test/sbt-reproducible-builds/simple/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.1.6 diff --git a/src/sbt-test/sbt-reproducible-builds/simple/project/plugins.sbt b/src/sbt-test/sbt-reproducible-builds/simple/project/plugins.sbt new file mode 100644 index 0000000..eef3d38 --- /dev/null +++ b/src/sbt-test/sbt-reproducible-builds/simple/project/plugins.sbt @@ -0,0 +1,5 @@ +sys.props.get("plugin.version") match { + case Some(x) => addSbtPlugin("net.bzzt" % "sbt-reproducible-builds" % sys.props("plugin.version")) + case _ => sys.error("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) +} diff --git a/src/sbt-test/sbt-reproducible-builds/simple/src/main/scala/Main.scala b/src/sbt-test/sbt-reproducible-builds/simple/src/main/scala/Main.scala new file mode 100644 index 0000000..dfdfe0f --- /dev/null +++ b/src/sbt-test/sbt-reproducible-builds/simple/src/main/scala/Main.scala @@ -0,0 +1,3 @@ +object Main extends App { + println("Hello, Reproducible World") +} diff --git a/src/sbt-test/sbt-reproducible-builds/simple/test b/src/sbt-test/sbt-reproducible-builds/simple/test new file mode 100644 index 0000000..e6a2229 --- /dev/null +++ b/src/sbt-test/sbt-reproducible-builds/simple/test @@ -0,0 +1,3 @@ +> package +$ exists target/scala-2.12/simple_2.12-0.1.0-SNAPSHOT.jar_ +$ must-mirror target/scala-2.12/simple_2.12-0.1.0-SNAPSHOT.jar_ expected/simple_2.12-0.1.0-SNAPSHOT.jar