iOS pipeline: self-recovering simulator builds + docs - #11588
Merged
tool4ever merged 2 commits intoAug 11, 2026
Conversation
tool4ever
reviewed
Aug 10, 2026
tool4ever
reviewed
Aug 10, 2026
tool4ever
reviewed
Aug 10, 2026
Contributor
|
By the way, I assume the code block in "ios/Main.java" related to |
…app launch RoboVM's ipad-sim mojo launches the app after the AOT link and blocks in SimLauncherProcess.waitFor until the app quits — and on Apple Silicon it picks its own simulator, so every scripted sim build hung at the launch step and needed the wedged maven process killed by hand. All the pipeline needs from the mojo there is target/robovm.tmp/config.xml, written once the link is done: run the mojo in its own process group, stop it when config.xml lands (test -s plus a settle sleep — the mojo opens the file before serializing into it), and let assemble_arm64_sim_app rebundle with the standalone AppCompiler (the AOT cache is content-hashed, so nothing recompiles). Intel keeps the foreground path unchanged: there the mojo bundles the .app itself during its launch phase, which the early stop would skip. Verified: pipeline/ios-pipeline.sh sim completes build + install + launch unattended on Apple Silicon. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
shoeless
force-pushed
the
improve/ios-pipeline-sim-launch
branch
from
August 11, 2026 05:16
54aa2b7 to
b0701fb
Compare
Main.java cleared cardcache.bin/cardsdb.bin (keyed on a .build_version marker) on every new build, but nothing in this repository writes those files — they belong to a card-cache experiment that never landed. Dead code either way. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
Author
|
Trimmed to just the functional change — the README and comment churn are gone (the doc you moved to And correct about |
shoeless
force-pushed
the
improve/ios-pipeline-sim-launch
branch
from
August 11, 2026 06:31
b0701fb to
85c1ee0
Compare
tool4ever
approved these changes
Aug 11, 2026
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.
Problem
RoboVM 2.3.24's
robovm:ipad-simmojo launches the app after the AOT link and then blocks inSimLauncherProcess.waitForuntil the app quits — and on Apple Silicon it picks its own simulator (its device-type table predates arm64 sims). Net effect: every scripted simulator build hung at the launch step and needed the wedged maven process killed by hand.Fix
All the pipeline needs from the mojo is
target/robovm.tmp/config.xml, written once the AOT link finishes. Sosimmode now:config.xmlto appear,AppCompilervia the existingassemble_arm64_sim_app(the AOT cache is content-hashed — nothing recompiles).Also adds
pipeline/README.mddocumenting the transform stages (JvmDowngrader → MobiVmBridge → MobiVmLinkAudit) and the CIauditmode, plus comment-only clarifications in the two pipeline helpers.Verification
Ran
pipeline/ios-pipeline.sh classpath && pipeline/ios-pipeline.sh simon this branch against current master: the build completed build → install → launch on the simulator fully unattended — previously the same invocation required manually detecting and killing the wedged mojo on every single build.Build-tooling only; no app/runtime code touched.
🤖 Generated with Claude Code