Skip to content

ci: add workflow job to build unsigned iOS TestApp IPA - #6

Draft
goodvids56 wants to merge 5 commits into
tfrom
cursor/ios-build-workflow-6db4
Draft

ci: add workflow job to build unsigned iOS TestApp IPA#6
goodvids56 wants to merge 5 commits into
tfrom
cursor/ios-build-workflow-6db4

Conversation

@goodvids56

Copy link
Copy Markdown
Owner

Summary

Adds a build-ios job to the release workflow that produces an unsigned TestApp.ipa artifact for sideloading on jailbroken devices (same app described in tests/README.md).

Changes

  • New build-ios job on macos-latest:
    • Installs Boost, vendored CMake, LLVM 12 (arm64 or x64 matching the runner), and common-3.0-sdk
    • Builds host touchHLE and runs the test_app integration test to cross-compile TestApp.app for iOS (ARMv6 + ARMv7)
    • Packages the bundle with make-ipa.sh (no codesigning)
    • Uploads tests/TestApp.ipa as TestApp_unsigned_iOS
  • Adds reusable dev-scripts/make-ipa.sh and routes tests/make-ipa.sh through it
  • Extends workflow triggers to include the t branch

Notes

This builds the integration-test app IPA, not a touchHLE host app for iOS (touchHLE does not ship an iOS host port). The IPA is unsigned by design; install on device requires bypassing signature checks (e.g. jailbreak), as documented in tests/README.md.

Open in Web Open in Cursor 

cursoragent and others added 5 commits May 26, 2026 00:51
Add a build-ios workflow job that cross-compiles the integration-test
TestApp for iPhone OS (ARMv6+ARMv7), packages it with make-ipa.sh, and
uploads the unsigned IPA as a CI artifact.

Introduce dev-scripts/make-ipa.sh as a reusable IPA packager and wire
tests/make-ipa.sh through it. LLVM downloads pick arm64 vs x86_64 based
on the macOS runner architecture.

Co-authored-by: goodvids56 <goodvids56@users.noreply.github.com>
LLVM 12.0.0 has no arm64-apple-darwin release asset; the ARM64 branch
was downloading a 404 (9 bytes) and tar failed. Always fetch the
published x86_64-apple-darwin tarball (same as upstream touchHLE CI)
and use curl -fL so HTTP errors fail the step.

Co-authored-by: goodvids56 <goodvids56@users.noreply.github.com>
…ntifiers

_OBJC_IVAR_$_NSObject.isa cannot appear in a C declaration like
'int OBJC_IVAR_$_NSObject.isa;', which broke integration-test stub
compilation in the iOS CI job. dump_host_symbols now uses inline asm
for constants and functions whose names contain '.' or '$'.

Co-authored-by: goodvids56 <goodvids56@users.noreply.github.com>
The build-ios job only needs a cross-compiled TestApp.app packaged as an
unsigned IPA. Running the full CLI test suite under touchHLE in CI is
fragile on headless macOS runners and unrelated to IPA packaging.

Honor TOUCHHLE_TESTAPP_BUILD_ONLY in the integration test and set it in
the workflow. Also improve the panic message when touchHLE exits non-zero.

Co-authored-by: goodvids56 <goodvids56@users.noreply.github.com>
zip(1) stores symlinks as tiny entries, which produced ~200 byte IPAs in CI
with no real TestApp binary inside. Copy the bundle before zipping and fail
if the resulting IPA is suspiciously small.

Co-authored-by: goodvids56 <goodvids56@users.noreply.github.com>
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