Only build static executable if musl toolchain is installed (#83)

This improves the development experience for (WSL) Linux users.
They can now run "./gradlew buildNative" without having a musl toolchain installed.
In this case, only the dynamically linked executable will be built.
This commit is contained in:
translatenix
2024-02-07 20:57:53 -08:00
committed by GitHub
parent a6e59c07ff
commit 77d0f5b8ca
3 changed files with 7 additions and 2 deletions

View File

@@ -95,6 +95,11 @@ open class BuildInfo(project: Project) {
java.lang.Boolean.getBoolean("releaseBuild")
}
val hasMuslToolchain: Boolean by lazy {
// see "install musl" in .circleci/jobs/BuildNativeJob.pkl
File(System.getProperty("user.home"), "staticdeps/bin/x86_64-linux-musl-gcc").exists()
}
val os: org.gradle.internal.os.OperatingSystem by lazy {
org.gradle.internal.os.OperatingSystem.current()
}

View File

@@ -254,7 +254,7 @@ val linuxExecutableAarch64: TaskProvider<Exec> by tasks.registering(Exec::class)
*/
val alpineExecutableAmd64: TaskProvider<Exec> by tasks.registering(Exec::class) {
configureExecutable(
buildInfo.os.isLinux && buildInfo.arch == "amd64",
buildInfo.os.isLinux && buildInfo.arch == "amd64" && buildInfo.hasMuslToolchain,
file("$buildDir/executable/pkl-alpine-linux-amd64"),
listOf(
"--static",

View File

@@ -256,7 +256,7 @@ val testLinuxExecutableAarch64 by tasks.registering(Test::class) {
}
val testAlpineExecutableAmd64 by tasks.registering(Test::class) {
enabled = buildInfo.os.isLinux && buildInfo.arch == "amd64"
enabled = buildInfo.os.isLinux && buildInfo.arch == "amd64" && buildInfo.hasMuslToolchain
dependsOn(":pkl-cli:alpineExecutableAmd64")
inputs.dir("src/test/files/LanguageSnippetTests/input")