Repository navigation
Conversation
The GraalVM resource metadata task found the buildNative tasks with tasks.matching, which creates every task registered in each module to test its name. A KMP app module with iOS targets then fails on a Linux arm64 host, where the Kotlin plugin refuses to create them. Select the tasks by name instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sproctor
added a commit
to sproctor/warlock3
that referenced
this pull request
Nov 3, 2026
* Fix the arm64 release build and a racy routing test v3.2.0-beta.2 failed on Linux arm64: Nucleus's native-image resource task creates the iOS tasks of the app's modules, and the Kotlin plugin refuses to create those there. Pass iosSkip, as CI and the Android job already do. NucleusFramework/Nucleus#904 fixes the cause. WraythStreamRoutingTests cancelled its collectors as soon as the client disconnected, which could drop lines they hadn't reached yet and failed CI on main. Wait for them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Collect routing test events on the client's own thread Waiting for main to go quiet for 50 ms still loses events if the collector stalls for longer. Unconfined collectors take each line inside the client's send, so nothing is buffered at disconnect and the test needs no wait at all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Description
Native-image packaging fails on Linux arm64 for a Kotlin Multiplatform app whose modules also have iOS targets.
generateGraalvmProjectResourceMetadatacreates every task in those modules, and the Kotlin plugin refuses to create iOS tasks on that host. This change selects thebuildNativetasks by name, so unrelated tasks stay uncreated. JVM packaging of the same app doesn't hit this.Minimal reproduction
A Linux arm64 host and a GraalVM app that depends on a KMP module with an iOS target:
Setup:
ubuntu-22.04-arm, Nucleus 3.0.0-dev-202611011507, Warlock's release run.Actual result:
Root cause and fix
collectNativeBuildTasksusedp.tasks.matching { it.name.startsWith("buildNative") }in adependsOn. Resolving that collection creates every registered task so the predicate can read its name.buildNativeTasksOfnow filtersp.tasks.namesand returns providers fromnamed, which creates nothing that doesn't match. It still runs inside the existingCallable, so modules configured after the app are covered as before.Testing
BuildNativeTasksOfTest: registers abuildNativetask plus a task whose configuration throws, and asserts that only the first is selected.generateGraalvmProjectResourceMetadata: 262 before, 0 after../gradlew preMerge --continuepasses on Ubuntu Linux.Not tested: a real Linux arm64 build with this change. I can't run one locally, and the x64 count stands in for it. I also didn't run the included build through a full native image.
Checklist
nucleus-3.0./gradlew preMergepassesapiDumpcommitted if the API changed🤖 Generated with Claude Code