From 0f8c7a06f22d7dbab333e9c4a6aeafa216ce03a2 Mon Sep 17 00:00:00 2001 From: Nepomuk Seiler Date: Tue, 16 Dec 2014 23:20:30 +0100 Subject: [PATCH] FIX #141 Upgrading to native-packager 1.0.4 and autoplugins --- build.sbt | 4 +++- project/ScalaDist.scala | 20 +++++++++----------- project/Unix.scala | 2 ++ project/plugins.sbt | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/build.sbt b/build.sbt index 46944ca88..151db83a9 100644 --- a/build.sbt +++ b/build.sbt @@ -23,6 +23,8 @@ Docs.settings ScalaDist.platformSettings +enablePlugins(UniversalPlugin, RpmPlugin, JDebPackaging, WindowsPlugin) + // resolvers += "local" at "file:///e:/.m2/repository" // resolvers += Resolver.mavenLocal -// to test, run e.g., stage, or windows:packageBin, show s3-upload::mappings \ No newline at end of file +// to test, run e.g., stage, or windows:packageBin, show s3-upload::mappings diff --git a/project/ScalaDist.scala b/project/ScalaDist.scala index 42d22e5f6..52a3d9a79 100644 --- a/project/ScalaDist.scala +++ b/project/ScalaDist.scala @@ -2,6 +2,8 @@ import sbt._ import sbt.Keys._ import com.typesafe.sbt.SbtNativePackager._ +import com.typesafe.sbt.packager.MappingsHelper._ +import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport.useNativeZip import com.typesafe.sbt.packager.Keys._ import com.typesafe.sbt.S3Plugin.S3.upload @@ -42,7 +44,6 @@ object ScalaDist { ) def settings: Seq[Setting[_]] = - packagerSettings ++ useNativeZip ++ // use native zip to preserve +x permission on scripts Seq( name := "scala", @@ -74,19 +75,16 @@ object ScalaDist { case "scala-dist" => val tmpdir = IO.createTemporaryDirectory IO.unzip(file, tmpdir) - // IO.listFiles(tmpdir) does not recurse, use ** with glob "*" to find all files - (PathFinder(IO.listFiles(tmpdir)) ** "*").get flatMap { file => - val relative = IO.relativize(tmpdir, file).get // .get is safe because we just unzipped under tmpdir - - // files are stored in repository with platform-appropriate line endings - // if (onWindows && (relative endsWith ".bat")) toDosInPlace(file) + // create mappings from the unzip scala-dist zip + contentOf(tmpdir) filter { + case (file, dest) => !(dest.endsWith("MANIFEST.MF") || dest.endsWith("META-INF")) + } map { // make unix scripts executable (heuristically...) - if ((relative startsWith "bin/") && !(file.getName endsWith ".bat")) + case (file, dest) if (dest startsWith "bin/") && !(dest endsWith ".bat") => file.setExecutable(true, true) - - if (relative startsWith "META-INF") Seq() - else Seq(file -> relative) + file -> dest + case mapping => mapping } // core jars: use simple name for backwards compat diff --git a/project/Unix.scala b/project/Unix.scala index dde57f2b6..670c90cdc 100644 --- a/project/Unix.scala +++ b/project/Unix.scala @@ -4,6 +4,7 @@ import sbt.Keys._ import com.typesafe.sbt.SbtNativePackager._ import com.typesafe.sbt.packager.Keys._ import com.typesafe.sbt.packager.linux.{LinuxPackageMapping => pkgMap, LinuxSymlink} +import com.typesafe.sbt.packager.linux.LinuxPlugin.autoImport.packageMapping /** Create debian & rpm packages. * @@ -96,5 +97,6 @@ object Unix { // Hack so we use regular version, rather than debian version. target in Debian := target.value / s"${(name in Debian).value}-${version.value}" + ) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 07c892e87..4ab1b9843 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.6.4") +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.4") addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8")