From 07c427028a3f687f554da62f11a2444faf2d2c15 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 19 Nov 2015 16:29:47 -0500 Subject: [PATCH 01/10] Revert "FIX #141 Upgrading to native-packager 1.0.4 and autoplugins" This reverts commit 1da15821666edfc1829050bc07bbb7d53c324417 because it doesn't work on Windows; see https://github.com/scala/scala-dist/pull/142 for discussion. --- build.sbt | 4 +--- project/ScalaDist.scala | 20 +++++++++++--------- project/Unix.scala | 2 -- project/plugins.sbt | 2 +- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/build.sbt b/build.sbt index 6e4aaa761..46944ca88 100644 --- a/build.sbt +++ b/build.sbt @@ -23,8 +23,6 @@ Docs.settings ScalaDist.platformSettings -enablePlugins(UniversalPlugin, RpmPlugin, JDebPackaging) - // resolvers += "local" at "file:///e:/.m2/repository" // resolvers += Resolver.mavenLocal -// to test, run e.g., stage, or windows:packageBin, show s3-upload::mappings +// to test, run e.g., stage, or windows:packageBin, show s3-upload::mappings \ No newline at end of file diff --git a/project/ScalaDist.scala b/project/ScalaDist.scala index 52a3d9a79..42d22e5f6 100644 --- a/project/ScalaDist.scala +++ b/project/ScalaDist.scala @@ -2,8 +2,6 @@ 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 @@ -44,6 +42,7 @@ object ScalaDist { ) def settings: Seq[Setting[_]] = + packagerSettings ++ useNativeZip ++ // use native zip to preserve +x permission on scripts Seq( name := "scala", @@ -75,16 +74,19 @@ 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...) - case (file, dest) if (dest startsWith "bin/") && !(dest endsWith ".bat") => + if ((relative startsWith "bin/") && !(file.getName endsWith ".bat")) file.setExecutable(true, true) - file -> dest - case mapping => mapping + + if (relative startsWith "META-INF") Seq() + else Seq(file -> relative) } // core jars: use simple name for backwards compat diff --git a/project/Unix.scala b/project/Unix.scala index 670c90cdc..dde57f2b6 100644 --- a/project/Unix.scala +++ b/project/Unix.scala @@ -4,7 +4,6 @@ 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. * @@ -97,6 +96,5 @@ 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 4ab1b9843..07c892e87 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.4") +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.6.4") addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8") From 0f8c7a06f22d7dbab333e9c4a6aeafa216ce03a2 Mon Sep 17 00:00:00 2001 From: Nepomuk Seiler Date: Tue, 16 Dec 2014 23:20:30 +0100 Subject: [PATCH 02/10] 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") From df3806ab89c2ae54905fd30715a6819431461b5c Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 12 Jan 2016 16:10:37 -0500 Subject: [PATCH 03/10] fix regression in naming of doc bundle associated with upgrade of sbt-native-packager to 1.0.4 --- project/Docs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Docs.scala b/project/Docs.scala index 4b07d2163..ac8b99911 100644 --- a/project/Docs.scala +++ b/project/Docs.scala @@ -16,7 +16,7 @@ object Docs { import ScalaDist._ def settings: Seq[Setting[_]] = Seq( - name in UniversalDocs := s"scala-docs-${version.value}", + packageName in UniversalDocs := s"scala-docs-${version.value}", // libraryDependencies += scalaDistDep(version.value, "javadoc"), // seems not to be necessary // need updateClassifiers to get javadoc jars mappings in UniversalDocs ++= createMappingsWith(updateClassifiers.value.toSeq, universalDocsMappings) From 2d525f867f7839be582c36d2a6d92ee194287447 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Jan 2016 10:31:07 -0500 Subject: [PATCH 04/10] fix regression where .deb ended up with wrong name on server this happened when we upgraded sbt-native-packager from 0.6.x to 1.0.x; the new version calculates this differently --- project/ScalaDist.scala | 10 +++++++++- project/Unix.scala | 5 +---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/project/ScalaDist.scala b/project/ScalaDist.scala index 52a3d9a79..d86fea9f6 100644 --- a/project/ScalaDist.scala +++ b/project/ScalaDist.scala @@ -40,7 +40,15 @@ object ScalaDist { mappings in upload += uploadMapping(packageZipTarball in UniversalDocs).value, mappings in upload += uploadMapping(packageXzTarball in UniversalDocs).value, mappings in upload += uploadMapping(packageBin in Rpm).value, - mappings in upload += uploadMapping(packageBin in Debian).value + // Debian needs special handling because the value sbt-native-packager + // gives us for `packageBin in Debian` (coming from the archiveFilename + // method) includes the debian version and arch information, + // which we historically have not included. I don't see a way to + // override the filename on disk, so we re-map at upload time + mappings in upload += Def.task { + (packageBin in Debian).value -> + s"scala/${version.value}/${(name in Debian).value}-${version.value}.deb" + }.value ) def settings: Seq[Setting[_]] = diff --git a/project/Unix.scala b/project/Unix.scala index 670c90cdc..4a9e16fb6 100644 --- a/project/Unix.scala +++ b/project/Unix.scala @@ -93,10 +93,7 @@ object Unix { linuxPackageMappings in Debian += (packageMapping( (sourceDirectory.value / "debian" / "changelog") -> "/usr/share/doc/scala/changelog.gz" - ) withUser "root" withGroup "root" withPerms "0644" gzipped) asDocs(), - - // Hack so we use regular version, rather than debian version. - target in Debian := target.value / s"${(name in Debian).value}-${version.value}" + ) withUser "root" withGroup "root" withPerms "0644" gzipped) asDocs() ) } From 506fd28b245a509c7faf0214c6368edee0b87fd2 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Jan 2016 09:53:57 -0500 Subject: [PATCH 05/10] remove commented-out code --- project/Unix.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/project/Unix.scala b/project/Unix.scala index 4a9e16fb6..4ace418a4 100644 --- a/project/Unix.scala +++ b/project/Unix.scala @@ -89,7 +89,6 @@ object Unix { // Debian Specific name in Debian := "scala", debianPackageDependencies += "java6-runtime-headless", - // debianPackageDependencies += "libjansi-java", linuxPackageMappings in Debian += (packageMapping( (sourceDirectory.value / "debian" / "changelog") -> "/usr/share/doc/scala/changelog.gz" From 03bde36c7d4216cf55f5e874c197a71f5d69e83d Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Jan 2016 10:31:54 -0500 Subject: [PATCH 06/10] enable more warnings when compiling sbt build because warnings are a good thing & we want to see them --- project/plugins.sbt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project/plugins.sbt b/project/plugins.sbt index 4ab1b9843..35421a3fa 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,5 @@ +scalacOptions ++= Seq("-deprecation", "-feature", "-Xlint") + addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.4") addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8") From 7b9b52c1d40e36550f7ca06238601a64263a5ccd Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Jan 2016 10:33:26 -0500 Subject: [PATCH 07/10] make a language.postfixOps warning go away --- project/Unix.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Unix.scala b/project/Unix.scala index 4ace418a4..a65baecee 100644 --- a/project/Unix.scala +++ b/project/Unix.scala @@ -92,7 +92,7 @@ object Unix { linuxPackageMappings in Debian += (packageMapping( (sourceDirectory.value / "debian" / "changelog") -> "/usr/share/doc/scala/changelog.gz" - ) withUser "root" withGroup "root" withPerms "0644" gzipped) asDocs() + ).withUser("root").withGroup("root").withPerms("0644").gzipped).asDocs() ) } From 71aba627e3eabdda4cad363fff6f621f741d9f7b Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Tue, 12 Jan 2016 16:29:49 -0500 Subject: [PATCH 08/10] upgrade to sbt-native-packager 1.0.6 we recently upgraded to 1.0.4, but that caused a regression so the change never received full testing yet. the regression has bene fixed, so as long as we're going to do a new round of testing, let's test the latest latest --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 35421a3fa..ec8543a63 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,6 @@ scalacOptions ++= Seq("-deprecation", "-feature", "-Xlint") -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.4") +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.6") addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8") From 9950fbc2a22a09fcc8a1d00c48870454e754149e Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Wed, 13 Jan 2016 17:12:42 -0500 Subject: [PATCH 09/10] upgrade to sbt 0.13.9 just on general dogfooding principle. delicious gravy! --- README.md | 2 +- project/build.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7e4f0394b..5f9812251 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The specification also used to be in this repo -- it is now a part of the main r - install Windows 7 professional N 64-bit, ensure network access to GitHub - install Oracle Java 6 JDK - install WiX v3.6 (reboot!) - - download sbt launcher 0.13.1 from xsbt.org to `c:\users\jenkins\Downloads` + - download sbt launcher from xsbt.org to `c:\users\jenkins\Downloads` - install Git - configure the Jenkins master's tool locations for - HOME diff --git a/project/build.properties b/project/build.properties index 748703f77..817bc38df 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.7 +sbt.version=0.13.9 From f46d6ca5cf593dc63fa9bfd8a42dccf672bcb681 Mon Sep 17 00:00:00 2001 From: Seth Tisue Date: Thu, 21 Jan 2016 16:10:59 -0500 Subject: [PATCH 10/10] work around regression in sbt-native-packager 1.0.5 where some doc tasks were invoking `tar` without any flags at all see https://github.com/scala/scala-dev/issues/74 --- project/ScalaDist.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/project/ScalaDist.scala b/project/ScalaDist.scala index d86fea9f6..3d8dab355 100644 --- a/project/ScalaDist.scala +++ b/project/ScalaDist.scala @@ -65,7 +65,13 @@ object ScalaDist { // create lib directory by resolving scala-dist's dependencies // to populate the rest of the distribution, explode scala-dist artifact itself - mappings in Universal ++= createMappingsWith(update.value.toSeq, universalMappings) + mappings in Universal ++= createMappingsWith(update.value.toSeq, universalMappings), + + // work around regression in sbt-native-packager 1.0.5 where + // these tasks invoke `tar` without any flags at all + universalArchiveOptions in (UniversalDocs, packageZipTarball) := Seq("--force-local", "-pcvf"), + universalArchiveOptions in (UniversalDocs, packageXzTarball ) := Seq("--force-local", "-pcvf") + ) // private lazy val onWindows = System.getProperty("os.name").toLowerCase(Locale.ENGLISH).contains("windows")