Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zinc 1.10.0 + universal macOS sbtn binary #7551

Merged
merged 4 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 13 additions & 28 deletions launcher-package/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,11 @@ val debianBuildId = settingKey[Int]("build id for Debian")
val exportRepoUsingCoursier = taskKey[File]("export Maven style repository")
val exportRepoCsrDirectory = settingKey[File]("")

val x86MacPlatform = "x86_64-apple-darwin"
val aarch64MacPlatform = "aarch64-apple-darwin"
val universalMacPlatform = "universal-apple-darwin"
val x86LinuxPlatform = "x86_64-pc-linux"
val aarch64LinuxPlatform = "aarch64-pc-linux"
val x86WindowsPlatform = "x86_64-pc-win32"
val x86MacImageName = s"sbtn-$x86MacPlatform"
val aarch64MacImageName = s"sbtn-$aarch64MacPlatform"
val universalMacImageName = s"sbtn-$universalMacPlatform"
val x86LinuxImageName = s"sbtn-$x86LinuxPlatform"
val aarch64LinuxImageName = s"sbtn-$aarch64LinuxPlatform"
val x86WindowsImageName = s"sbtn-$x86WindowsPlatform.exe"
Expand Down Expand Up @@ -123,42 +121,30 @@ val root = (project in file(".")).
file
},
// update sbt.sh at root
sbtnVersion := "1.9.0",
sbtnVersion := "1.10.0",
sbtnJarsBaseUrl := "https://github.com/sbt/sbtn-dist/releases/download",
sbtnJarsMappings := {
val baseUrl = sbtnJarsBaseUrl.value
val v = sbtnVersion.value
val macosX86ImageTar = s"sbtn-$x86MacPlatform-$v.tar.gz"
val macosAarch64ImageTar = s"sbtn-$aarch64MacPlatform-$v.tar.gz"
val macosUniversalImageTar = s"sbtn-$universalMacPlatform-$v.tar.gz"
val linuxX86ImageTar = s"sbtn-$x86LinuxPlatform-$v.tar.gz"
val linuxAarch64ImageTar = s"sbtn-$aarch64LinuxPlatform-$v.tar.gz"
val windowsImageZip = s"sbtn-$x86WindowsPlatform-$v.zip"
val t = target.value
val macosX86Tar = t / macosX86ImageTar
val macosAarch64Tar = t / macosAarch64ImageTar
val macosUniversalTar = t / macosUniversalImageTar
val linuxX86Tar = t / linuxX86ImageTar
val linuxAarch64Tar = t / linuxAarch64ImageTar
val windowsZip = t / windowsImageZip
import dispatch.classic._
if(!macosX86Tar.exists && !isWindows && sbtIncludeSbtn) {
IO.touch(macosX86Tar)
val writer = new java.io.BufferedOutputStream(new java.io.FileOutputStream(macosX86Tar))
try Http(url(s"$baseUrl/v$v/$macosX86ImageTar") >>> writer)
if(!macosUniversalTar.exists && !isWindows && sbtIncludeSbtn) {
IO.touch(macosUniversalTar)
val writer = new java.io.BufferedOutputStream(new java.io.FileOutputStream(macosUniversalTar))
try Http(url(s"$baseUrl/v$v/$macosUniversalImageTar") >>> writer)
finally writer.close()
val platformDir = t / x86MacPlatform
val platformDir = t / universalMacPlatform
IO.createDirectory(platformDir)
s"tar zxvf $macosX86Tar --directory $platformDir".!
IO.move(platformDir / "sbtn", t / x86MacImageName)
}
if(!macosAarch64Tar.exists && !isWindows && sbtIncludeSbtn) {
IO.touch(macosAarch64Tar)
val writer = new java.io.BufferedOutputStream(new java.io.FileOutputStream(macosAarch64Tar))
try Http(url(s"$baseUrl/v$v/$macosAarch64ImageTar") >>> writer)
finally writer.close()
val platformDir = t / aarch64MacPlatform
IO.createDirectory(platformDir)
s"tar zxvf $macosAarch64Tar --directory $platformDir".!
IO.move(platformDir / "sbtn", t / aarch64MacImageName)
s"tar zxvf $macosUniversalTar --directory $platformDir".!
IO.move(platformDir / "sbtn", t / universalMacImageName)
}
if(!linuxX86Tar.exists && !isWindows && sbtIncludeSbtn) {
IO.touch(linuxX86Tar)
Expand Down Expand Up @@ -192,8 +178,7 @@ val root = (project in file(".")).
if (!sbtIncludeSbtn) Seq()
else if (isWindows) Seq(t / x86WindowsImageName -> s"bin/$x86WindowsImageName")
else
Seq(t / x86MacImageName -> s"bin/$x86MacImageName",
t / aarch64MacImageName -> s"bin/$aarch64MacImageName",
Seq(t / universalMacImageName -> s"bin/$universalMacImageName",
t / x86LinuxImageName -> s"bin/$x86LinuxImageName",
t / aarch64LinuxImageName -> s"bin/$aarch64LinuxImageName",
t / x86WindowsImageName -> s"bin/$x86WindowsImageName")
Expand Down
10 changes: 10 additions & 0 deletions main/src/main/scala/sbt/internal/Banner.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ package sbt.internal
private[sbt] object Banner {
def apply(version: String): Option[String] =
version match {
case v if v.startsWith("1.10.0") =>
Some(s"""
|Here are some highlights of sbt 1.10.0:
| - SIP-51 support for Scala 2.13 evolution
| - Various Zinc fixes
| - ConsistentAnalysisFormat: new Zinc Analysis serialization
| - CommandProgress API
|See https://eed3si9n.com/sbt-1.10.0 for full release notes.
|Hide the banner for this release by running `skipBanner`.
|""".stripMargin.linesIterator.mkString("\n"))
case v if v.startsWith("1.9.0") =>
Some(s"""
|Here are some highlights of sbt 1.9.0:
Expand Down
14 changes: 10 additions & 4 deletions main/src/main/scala/sbt/internal/InstallSbtn.scala
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,16 @@ private[sbt] object InstallSbtn {
if (Properties.isWin) "pc-win32.exe"
else if (Properties.isLinux) "pc-linux"
else "apple-darwin"
val isArmArchitecture: Boolean = sys.props
.getOrElse("os.arch", "")
.toLowerCase(java.util.Locale.ROOT) == "aarch64"
val arch = if (Properties.isLinux && isArmArchitecture) "aarch64" else "x86_64"
val isArmArchitecture: Boolean = {
val prop = sys.props
.getOrElse("os.arch", "")
.toLowerCase(java.util.Locale.ROOT)
prop == "arm64" || prop == "aarch64"
}
val arch =
if (Properties.isWin) "x86_64"
else if (Properties.isLinux && isArmArchitecture) "aarch64"
else "universal"
val sbtnName = s"sbt/bin/sbtn-$arch-$bin"
val fis = new FileInputStream(sbtZip.toFile)
val zipInputStream = new ZipInputStream(fis)
Expand Down
6 changes: 3 additions & 3 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ object Dependencies {
sys.env.get("BUILD_VERSION") orElse sys.props.get("sbt.build.version")

// sbt modules
private val ioVersion = nightlyVersion.getOrElse("1.9.9")
private val ioVersion = nightlyVersion.getOrElse("1.10.0")
private val lmVersion =
sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.10.0-RC1")
val zincVersion = nightlyVersion.getOrElse("1.10.0-RC2")
sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.10.0")
val zincVersion = nightlyVersion.getOrElse("1.10.0")

private val sbtIO = "org.scala-sbt" %% "io" % ioVersion

Expand Down
6 changes: 3 additions & 3 deletions sbt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ declare build_props_sbt_version=
declare use_sbtn=
declare no_server=
declare sbtn_command="$SBTN_CMD"
declare sbtn_version="1.9.0"
declare sbtn_version="1.10.0"

### ------------------------------- ###
### Helper methods for BASH scripts ###
Expand Down Expand Up @@ -182,8 +182,8 @@ acquire_sbtn () {
exit 2
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
archive_target="$p/sbtn-x86_64-apple-darwin-${sbtn_v}.tar.gz"
url="https://github.com/sbt/sbtn-dist/releases/download/v${sbtn_v}/sbtn-x86_64-apple-darwin-${sbtn_v}.tar.gz"
archive_target="$p/sbtn-universal-apple-darwin-${sbtn_v}.tar.gz"
url="https://github.com/sbt/sbtn-dist/releases/download/v${sbtn_v}/sbtn-universal-apple-darwin-${sbtn_v}.tar.gz"
elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
target="$p/sbtn.exe"
archive_target="$p/sbtn-x86_64-pc-win32-${sbtn_v}.zip"
Expand Down