Skip to content

iOS pipeline: self-recovering simulator builds + docs - #11588

Merged
tool4ever merged 2 commits into
Card-Forge:masterfrom
shoeless:improve/ios-pipeline-sim-launch
Aug 11, 2026
Merged

iOS pipeline: self-recovering simulator builds + docs#11588
tool4ever merged 2 commits into
Card-Forge:masterfrom
shoeless:improve/ios-pipeline-sim-launch

Conversation

@shoeless

@shoeless shoeless commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Problem

RoboVM 2.3.24's robovm:ipad-sim mojo launches the app after the AOT link and then blocks in SimLauncherProcess.waitFor until 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. So sim mode now:

  1. runs the mojo in its own process group with output to a log,
  2. waits for config.xml to appear,
  3. stops the process group right before the launch step it would wedge in,
  4. rebundles with the standalone AppCompiler via the existing assemble_arm64_sim_app (the AOT cache is content-hashed — nothing recompiles).

Also adds pipeline/README.md documenting the transform stages (JvmDowngrader → MobiVmBridge → MobiVmLinkAudit) and the CI audit mode, plus comment-only clarifications in the two pipeline helpers.

Verification

Ran pipeline/ios-pipeline.sh classpath && pipeline/ios-pipeline.sh sim on 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

Comment thread forge-gui-ios/pipeline/README.md Outdated
Comment thread forge-gui-ios/pipeline/ios-pipeline.sh Outdated
Comment thread forge-gui-ios/pipeline/src/MobiVmBridge.java Outdated
@tool4ever

Copy link
Copy Markdown
Contributor

By the way, I assume the code block in "ios/Main.java" related to cardcache.bin is obsolete?

…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
shoeless force-pushed the improve/ios-pipeline-sim-launch branch from 54aa2b7 to b0701fb Compare August 11, 2026 05:16
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>
@shoeless

Copy link
Copy Markdown
Contributor Author

Trimmed to just the functional change — the README and comment churn are gone (the doc you moved to docs/Development/iOS-Builds.md covers it). Two corrections from re-testing: the early-stop is now gated to Apple Silicon — on Intel the mojo bundles the .app during its launch phase, so stopping at config.xml would have broken those builds — and the wait tests -s with a settle sleep, since the mojo opens config.xml before serializing into it.

And correct about cardcache.bin — nothing in the repo writes those files (they're left over from a card-cache experiment on my iOS branch); dropped the block in this PR.

@shoeless
shoeless force-pushed the improve/ios-pipeline-sim-launch branch from b0701fb to 85c1ee0 Compare August 11, 2026 06:31
@tool4ever
tool4ever merged commit 391262a into Card-Forge:master Aug 11, 2026
3 checks passed
@shoeless
shoeless deleted the improve/ios-pipeline-sim-launch branch August 11, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants