diff --git a/project/Build.scala b/project/Build.scala index c1a8800421a6..fc16f5ba8a43 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -5,9 +5,15 @@ import Process._ import Modes._ import ScaladocGeneration._ import com.jsuereth.sbtpgp.PgpKeys -import sbt.Keys._ -import sbt._ -import complete.DefaultParsers._ +import com.typesafe.sbt.packager.Keys._ +import com.typesafe.sbt.packager.MappingsHelper.directory +import com.typesafe.sbt.packager.universal.UniversalPlugin +import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport.Universal +import com.typesafe.sbt.packager.windows.WindowsPlugin +import com.typesafe.sbt.packager.windows.WindowsPlugin.autoImport.Windows +import sbt.Keys.* +import sbt.* +import complete.DefaultParsers.* import pl.project13.scala.sbt.JmhPlugin import pl.project13.scala.sbt.JmhPlugin.JmhKeys.Jmh import sbt.Package.ManifestAttributes @@ -16,8 +22,6 @@ import dotty.tools.sbtplugin.RepublishPlugin import dotty.tools.sbtplugin.RepublishPlugin.autoImport._ import sbt.plugins.SbtPlugin import sbt.ScriptedPlugin.autoImport._ -import xerial.sbt.pack.PackPlugin -import xerial.sbt.pack.PackPlugin.autoImport._ import xerial.sbt.Sonatype.autoImport._ import com.typesafe.tools.mima.plugin.MimaPlugin.autoImport._ import org.scalajs.sbtplugin.ScalaJSPlugin @@ -2121,18 +2125,20 @@ object Build { ) lazy val commonDistSettings = Seq( - packMain := Map(), publishArtifact := false, - packGenerateMakefile := false, republishRepo := target.value / "republish", - packResourceDir += (republishRepo.value / "bin" -> "bin"), - packResourceDir += (republishRepo.value / "maven2" -> "maven2"), - Compile / pack := (Compile / pack).dependsOn(republish).value, + Universal / packageName := packageName.value, + Universal / stage := (Universal / stage).dependsOn(republish).value, + Universal / packageBin := (Universal / packageBin).dependsOn(republish).value, + // ======== + Universal / mappings ++= directory(republishRepo.value / "bin"), + Universal / mappings ++= (Compile / dependencyClasspathAsJars).value.map(jar => jar.data -> s"lib/${jar.data.getName}"), + Universal / mappings ++= directory(republishRepo.value / "maven2"), ) lazy val dist = project.asDist(Bootstrapped) + .settings(packageName := "scala3-" + dottyVersion) .settings( - packArchiveName := "scala3-" + dottyVersion, republishBinDir := baseDirectory.value / "bin", republishCoursier += ("coursier.jar" -> s"https://github.com/coursier/coursier/releases/download/v$coursierJarVersion/coursier.jar"), @@ -2141,9 +2147,9 @@ object Build { ) lazy val `dist-mac-x86_64` = project.in(file("dist/mac-x86_64")).asDist(Bootstrapped) + .settings(packageName := (dist / packageName).value + "-x86_64-apple-darwin") .settings( republishBinDir := (dist / republishBinDir).value, - packArchiveName := (dist / packArchiveName).value + "-x86_64-apple-darwin", republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides", republishFetchCoursier := (dist / republishFetchCoursier).value, republishLaunchers += @@ -2151,9 +2157,9 @@ object Build { ) lazy val `dist-mac-aarch64` = project.in(file("dist/mac-aarch64")).asDist(Bootstrapped) + .settings(packageName := (dist / packageName).value + "-aarch64-apple-darwin") .settings( republishBinDir := (dist / republishBinDir).value, - packArchiveName := (dist / packArchiveName).value + "-aarch64-apple-darwin", republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides", republishFetchCoursier := (dist / republishFetchCoursier).value, republishLaunchers += @@ -2161,21 +2167,32 @@ object Build { ) lazy val `dist-win-x86_64` = project.in(file("dist/win-x86_64")).asDist(Bootstrapped) + .enablePlugins(WindowsPlugin) // TO GENERATE THE `.msi` installer + .settings(packageName := (dist / packageName).value + "-x86_64-pc-win32") .settings( republishBinDir := (dist / republishBinDir).value, - packArchiveName := (dist / packArchiveName).value + "-x86_64-pc-win32", republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides", republishFetchCoursier := (dist / republishFetchCoursier).value, republishExtraProps += ("cli_version" -> scalaCliLauncherVersion), - mappings += (republishRepo.value / "etc" / "EXTRA_PROPERTIES" -> "EXTRA_PROPERTIES"), republishLaunchers += ("scala-cli.exe" -> s"zip+https://github.com/VirtusLab/scala-cli/releases/download/v$scalaCliLauncherVersionWindows/scala-cli-x86_64-pc-win32.zip!/scala-cli.exe") ) + .settings( + Universal / mappings += (republishRepo.value / "etc" / "EXTRA_PROPERTIES" -> "EXTRA_PROPERTIES"), + ) + .settings( + Windows / mappings := (Universal / mappings).value, + maintainer := "Josh Suereth ", + packageSummary := "test-windows", + packageDescription := """Test Windows MSI.""", + wixProductId := "ce07be71-510d-414a-92d4-dff47631848a", + wixProductUpgradeId := "4552fb0e-e257-4dbd-9ecb-dba9dbacf424" + ) lazy val `dist-linux-x86_64` = project.in(file("dist/linux-x86_64")).asDist(Bootstrapped) + .settings(packageName := (dist / packageName).value + "-x86_64-pc-linux") .settings( republishBinDir := (dist / republishBinDir).value, - packArchiveName := (dist / packArchiveName).value + "-x86_64-pc-linux", republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides", republishFetchCoursier := (dist / republishFetchCoursier).value, republishLaunchers += @@ -2183,9 +2200,9 @@ object Build { ) lazy val `dist-linux-aarch64` = project.in(file("dist/linux-aarch64")).asDist(Bootstrapped) + .settings(packageName := (dist / packageName).value + "-aarch64-pc-linux") .settings( republishBinDir := (dist / republishBinDir).value, - packArchiveName := (dist / packArchiveName).value + "-aarch64-pc-linux", republishBinOverrides += (dist / baseDirectory).value / "bin-native-overrides", republishFetchCoursier := (dist / republishFetchCoursier).value, republishLaunchers += @@ -2323,7 +2340,7 @@ object Build { settings(scala3PresentationCompilerBuildInfo) def asDist(implicit mode: Mode): Project = project. - enablePlugins(PackPlugin, RepublishPlugin). + enablePlugins(UniversalPlugin, RepublishPlugin). withCommonSettings. settings(commonDistSettings). dependsOn( @@ -2419,7 +2436,6 @@ object ScaladocConfigs { } lazy val DefaultGenerationConfig = Def.task { - def distLocation = (dist / Compile / pack).value DefaultGenerationSettings.value } diff --git a/project/RepublishPlugin.scala b/project/RepublishPlugin.scala index 537c82d62cce..b8afcbb0e7e5 100644 --- a/project/RepublishPlugin.scala +++ b/project/RepublishPlugin.scala @@ -1,21 +1,18 @@ package dotty.tools.sbtplugin -import sbt._ -import xerial.sbt.pack.PackPlugin -import sbt.Keys._ +import com.typesafe.sbt.packager.universal.UniversalPlugin +import sbt.* +import sbt.Keys.* import sbt.AutoPlugin import sbt.PublishBinPlugin -import sbt.PublishBinPlugin.autoImport._ +import sbt.PublishBinPlugin.autoImport.* import sbt.io.Using -import sbt.util.CacheImplicits._ +import sbt.util.CacheImplicits.* -import scala.collection.mutable import java.nio.file.Files - import java.nio.file.attribute.PosixFilePermission -import java.nio.file.{Files, Path} - -import scala.jdk.CollectionConverters._ +import java.nio.file.Path +import scala.jdk.CollectionConverters.* /** This local plugin provides ways of publishing a project classpath and library dependencies to * .a local repository */ @@ -52,7 +49,7 @@ object RepublishPlugin extends AutoPlugin { } override def trigger = allRequirements - override def requires = super.requires && PublishBinPlugin && PackPlugin + override def requires = super.requires && PublishBinPlugin && UniversalPlugin object autoImport { val republishProjectRefs = taskKey[Seq[ProjectRef]]("fetch the classpath deps from the project.") diff --git a/project/plugins.sbt b/project/plugins.sbt index 59e58007a4a0..96f767726315 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -12,8 +12,6 @@ addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.21") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") -addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.17") - addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.5") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") @@ -21,3 +19,5 @@ addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.2") addSbtPlugin("ch.epfl.scala" % "sbt-tasty-mima" % "1.0.0") + +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.7.6")