From 03ae9f452e703774128c845590c883ac5a67e86d Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Mon, 2 Jan 2023 23:48:13 +0100 Subject: [PATCH] Set correct page size for aarch64 binaries --- build.sbt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 46681bca6..6bd6e6fb8 100644 --- a/build.sbt +++ b/build.sbt @@ -4,6 +4,7 @@ import com.typesafe.tools.mima.core.ProblemFilters._ import com.typesafe.tools.mima.core._ import local.Scripted import java.nio.file.{ Files, Path => JPath } +import java.util.Locale import scala.util.Try @@ -1146,6 +1147,10 @@ lazy val serverTestProj = (project in file("server-test")) ) val isWin = scala.util.Properties.isWin +val isLinux = scala.util.Properties.isLinux +val isArmArchitecture: Boolean = sys.props + .getOrElse("os.arch", "") + .toLowerCase(Locale.ROOT) == "aarch64" val buildThinClient = inputKey[JPath]("generate a java implementation of the thin client") // Use a TaskKey rather than SettingKey for nativeInstallDirectory so it can left unset by default @@ -1177,7 +1182,9 @@ lazy val sbtClientProj = (project in file("client")) "-H:+ReportExceptionStackTraces", "-H:-ParseRuntimeOptions", s"-H:Name=${target.value / "bin" / "sbtn"}", - ), + ) ++ (if (isLinux && isArmArchitecture) + Seq("-H:PageSize=65536") // Make sure binary runs on kernels with page size set to 4k, 16 and 64k + else Nil), buildThinClient := { val isFish = Def.spaceDelimited("").parsed.headOption.fold(false)(_ == "--fish") val ext = if (isWin) ".bat" else if (isFish) ".fish" else ".sh"