Repository navigation
ci: cross-compile the linuxArm64 nightly engine - #617
Merged
Merged
Conversation
Kotlin/Native 2.4 has no linux-aarch64 compiler, so the arm64 nightly runner skipped linkReleaseExecutableLinuxArm64, Gradle still exited 0, and tarball staging failed because klardrop-engine.kexe was never produced. That cancelled the x64 leg and nothing was published. Co-authored-by: Carlo Marinangeli <carlonzo@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The nightly workflow has not published a release since
1.0.0-nightly.850(Sep 24). Thenightlytag moves before the builds run, so a failed attempt is not retried the next day: later green runs (including Oct 15) were the gate seeing no new commits and exiting without publishing.Oct 16 — arm64 tarball staging (run 38847497853)
linux-native (arm64)failed at Stage native Linux tarball (arm64):The Gradle step before it was
BUILD SUCCESSFUL, but the log also says:Kotlin/Native 2.4 only runs on linux x64, windows x64, and macOS. On
ubuntu-24.04-armthe plugin disableslinuxArm64, the link task is skipped, and Gradle still exits 0. Staging then cannot find the engine. The matrixfail-fastcancelled the x64 leg, sopublishnever ran.Oct 14 (run 38510125816)
Three jobs failed. Two of them are already fixed on main and succeeded on Oct 16. The third is the same arm64 host problem, at an earlier step.
:klardrop-common:linuxArm64Test, which Gradle rejects as ambiguous (linuxArm64TestBinaries,linuxArm64TestKlibrary,linuxArm64TestProcessResources). The host warning is in that log too. fix(ci): unbreak main, nightly release, and Renovate PRs #612 renamed the task tolinuxArm64TestBinaries, so this step no longer fails — it skips, and the missing binary shows up later at staging (the Oct 16 failure).Copy-Itemintodist/failed withThe directory name is invalidbecausedist/was never created. The MSI itself had been written. fix(ci): unbreak main, nightly release, and Renovate PRs #612 addedNew-Item -ItemType Directory. The Oct 16 Windows job collected and uploaded the MSI.Upload succeeded/EXPORT SUCCEEDED). The following step called/v1/apps/{id}/betaGroups?filter[name]=..., which App Store Connect rejects with400 PARAMETER_ERROR.ILLEGAL. fix(ci): unbreak main, nightly release, and Renovate PRs #612/ci(nightly): fix TestFlight beta group lookup #613 query/v1/betaGroups?filter[app]&filter[name]instead. The Oct 16 iOS job completed “Add build to TestFlight Klardrop External Testers group”.What changed
The arm64 Kotlin/Native engine is cross-compiled on
ubuntu-24.04(-Pklardrop.forceLinuxArm64=true).packaging/linux/install-arm64-cross-deps.shinstalls the aarch64 multiarch dev packages fromports.ubuntu.com(archive.ubuntu.comdoes not publish arm64, and an unrestrictedapt-get update404s). The cinterop.deffiles and linker search paths are per target (compilerOpts.linux_arm64/linkerOpts.linux_arm64), so the cross compile uses aarch64 headers and libraries rather than the host’s x86_64 ones.Qt and the Rust client stay native builds on
ubuntu-24.04-arm(those steps succeeded on Oct 16). That job downloads the engine and stagesklardrop-native-linux-arm64.tar.gz. The raw.kexeis removed before the release assets are checksummed, so it is not attached to the GitHub release. The same split is inrelease.yml, which had the identical arm64 runner.linuxArm64TestBinariesis not part of the cross job. The Linux testactuals live inlinuxX64Test, and the default hierarchy only creates a sharedlinuxTestsource set when both Linux targets are declared — which a normal x64 build is not. x64 still runs that suite.An ordinary
./gradlew buildon x64 still does not declarelinuxArm64.Verification
On an x64 Ubuntu 24.04 host, with the cross packages installed:
./gradlew :cli:linkReleaseExecutableLinuxArm64 -Pklardrop.forceLinuxArm64=truesucceeded.readelfreportsMachine: AArch64and interpreter/lib/ld-linux-aarch64.so.1. NEEDED entries includelibsqlite3,libavahi-client,libssl, andlibsystemd.linuxX64engine is stillAdvanced Micro Devices X86-64with/lib64/ld-linux-x86-64.so.2.0 upgraded, 0 newly installed).Not verified here
ubuntu-24.04-armQt build, Qt tests, Rust client, and tarball staging. Those commands are the ones that passed on Oct 16; this environment is x64, so they were not re-run.nightlytag, or publish a release.