mirror of
https://github.com/apple/pkl.git
synced 2026-04-28 03:07:14 +02:00
Motivation - Enable correct NullAway analysis - Pick up toolchain fixes and improvements Toolchains - Require JDK 25 for JVM toolchain (keep Java 17 runtime compatibility) - Require Kotlin 2.3.20 for Kotlin toolchain (keep Kotlin 2.2 runtime compatibility) - Require JDK 25 for Gradle daemon JVM (via gradle-daemon-jvm.properties) - Fix javac and kotlinc warnings from toolchain upgrades CI - Bump GitHub workflows to JDK 25 Building Kotlin - Bump Kotlin language level to 2.2 to match stdlib version - Consolidate build logic into pklKotlinBase.gradle.kts - Adopt modern Kotlin plugin syntax - Fix new kotlinc warnings - Update ktfmt to 0.62 - first version compatible with Kotlin 2.3.20 - changes formatting compared to 0.61 - Replace dependency resolution rule with BOM alignment - rule was too broad and interfered with toolchain/runtime separation Testing - Expand matrix to JDK 25 (LTS) and 26 - Ensure each matrix task can be run independently - Fix KotlinCodeGeneratorsTest and EmbeddedExecutorsTest on affected JDKs - Disable one test in CliCommandTest on affected JDKs (failure cause unknown) Compatibility fixes - Fix reflective access in DocGenerator on affected JDKs Build fixes - Fix misuse of `task.enabled` vs. `report.required` - Fix `gradlew tasks` on Windows - Downgrade Spotless to 8.3.0 to (hopefully) work around sporadic NoClassDefFoundError Result - NullAway runs correctly - Broader JDK test coverage - More reproducible and potentially faster builds
103 lines
2.1 KiB
Plaintext
103 lines
2.1 KiB
Plaintext
abstract module GradleJob
|
|
|
|
extends "PklJob.pkl"
|
|
|
|
import "@gha/Workflow.pkl"
|
|
import "@pkl.impl.ghactions/catalog.pkl"
|
|
|
|
/// Whether this is a release build or not.
|
|
isRelease: Boolean = false
|
|
|
|
/// The architecture to use
|
|
arch: "amd64" | "aarch64" = "amd64"
|
|
|
|
/// The OS to run on.
|
|
os: "macOS" | "linux" | "windows" = "linux"
|
|
|
|
// TODO flip this to `true` when nightly macOS is available
|
|
/// Whether to run on nightly macOS.
|
|
nightlyMacOS: Boolean(implies(os == "macOS")) = false
|
|
|
|
extraGradleArgs: Listing<String>
|
|
|
|
steps: Listing<Workflow.Step>
|
|
|
|
preSteps: Listing<Workflow.Step>
|
|
|
|
/// The fetch depth to use when doing a git checkout.
|
|
fetchDepth: Int?
|
|
|
|
fixed gradleArgs =
|
|
new Listing {
|
|
"--info"
|
|
"--stacktrace"
|
|
"--no-daemon"
|
|
"-DpklMultiJdkTesting=true"
|
|
when (isRelease) {
|
|
"-DreleaseBuild=true"
|
|
}
|
|
...extraGradleArgs
|
|
}.join(" ")
|
|
|
|
fixed job {
|
|
env {
|
|
["LANG"] = "en_US.UTF-8"
|
|
when (os == "windows") {
|
|
["JAVA_HOME"] = "/jdk"
|
|
}
|
|
}
|
|
when (os == "macOS") {
|
|
`if` =
|
|
let (cond = "github.repository_owner == 'apple'")
|
|
if (super.`if` != null)
|
|
"(\(super.`if`)) && \(cond)"
|
|
else
|
|
cond
|
|
}
|
|
`runs-on` =
|
|
if (os == "linux" && arch == "amd64")
|
|
"ubuntu-latest"
|
|
else if (os == "linux" && arch == "aarch64")
|
|
"ubuntu-24.04-arm"
|
|
else if (os == "windows")
|
|
"windows-latest"
|
|
else
|
|
new Listing {
|
|
"self-hosted"
|
|
"macos"
|
|
when (nightlyMacOS) {
|
|
"nightly"
|
|
}
|
|
}
|
|
steps {
|
|
...preSteps
|
|
// full checkout (needed for spotless)
|
|
(catalog.`actions/checkout@v6`) {
|
|
when (fetchDepth != null) {
|
|
with {
|
|
`fetch-depth` = fetchDepth
|
|
}
|
|
}
|
|
}
|
|
(catalog.`actions/setup-java@v5`) {
|
|
with {
|
|
`java-version` = "25"
|
|
distribution = "temurin"
|
|
architecture =
|
|
if (arch == "amd64")
|
|
"x64"
|
|
else
|
|
"aarch64"
|
|
}
|
|
}
|
|
(catalog.`gradle/actions/setup-gradle@v5`) {
|
|
when (isRelease) {
|
|
with {
|
|
`cache-disabled` = true
|
|
}
|
|
}
|
|
}
|
|
...module.steps
|
|
}
|
|
}
|