Skip to content

Include firmware helpers in normal Xcode app builds - #7

Merged
hideouts-io merged 4 commits into
mainfrom
codex/bundle-firmware-helpers
Oct 10, 2026
Merged

hideouts-io merged 4 commits into
mainfrom
codex/bundle-firmware-helpers

Conversation

@hideouts-io

@hideouts-io hideouts-io commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Purpose

Normal Xcode Debug builds currently open the Firmware page without idevicerestore or irecovery. Make the app depend on a pinned-source helper build, then embed both universal executables, their license notices and the source manifest. Missing inputs, build failures and signing failures stop the build with an error.

The helper builder finds Homebrew tools from GUI Xcode, serializes builds with a PID lock, and uses script-specific build state. A build-local Autoconf 2.73 launcher changes the reproduced stalled Perl exec handoff to a child process while preserving failure status. Source pins, TLS verification, OpenSSL checksum verification and installed Homebrew tools are unchanged. Signing happens in Xcode's writable staging directory before copying declared outputs into the sandboxed app build phase.

Add a bundle/UI smoke check and a stable identifier for the missing-helper warning. Check sidebar reachability through an actionable button before scrolling and clicking the target row. Give app and Swift CodeQL jobs the helper build tools/cache while preserving the verified Action pins, read-only extraction and separate upload jobs already merged in PR #8.

Verification

  • swift build -Xswiftc -warnings-as-errors

  • swift test -Xswiftc -warnings-as-errors --skip RealUSBMuxTests: 263 tests passed with live device, simulator and network opt-ins unset. The earlier focused Firmware run passed 51 tests.

  • Fresh Debug build-for-testing passed with a minimal GUI-style PATH and no helper override. Run from the repository root:

    env -u IDT_RESTORE_HELPERS PATH=/usr/bin:/bin:/usr/sbin:/sbin \
      xcodebuild -project iOSDeveloperToolkit.xcodeproj -scheme iOSDeveloperToolkit \
      -configuration Debug -destination 'platform=macOS,arch=arm64' \
      -derivedDataPath "$PWD/build-output/github-firmware-20261008/DerivedData" \
      -onlyUsePackageVersionsFromResolvedFile build-for-testing
  • The fresh app's two helpers are executable and contain arm64 and x86_64. Both native and Rosetta version commands pass. Strict bundle signature verification and byte comparisons of all 16 notices plus SOURCES.txt pass.

  • All 17 workspaces rendered without SQUEEZED or OVERFLOW at the default size and requested 900x560 size; the window enforces an actual minimum height of 612.

  • The four previously failing navigation cases plus Firmware bundling passed in a focused native run. The complete native UI suite then passed all 16 tests with xcodebuild ... test using the same Debug destination/DerivedData and no helper override. All bundle, reachability, filtering and demo-operation assertions remain enabled.

  • No-device demo Firmware rendering passed without the missing-tools warning. No physical-device connection, firmware update or restore was attempted.

  • scripts/build-release.sh "" "$PWD/build-output/github-firmware-20261008/release" passed at f5f0b5e, before the picker/sidebar accessibility correction. The universal app, CLI and helpers were checked before packaging and after ZIP extraction; signatures, versions, library links, notices, SBOM, helper source archive and checksums passed. These are local ad hoc signed artifacts, not a published or notarized release. Release packaging also passed for the integrated candidate 0b0b4e8 in CI.

  • All ten required checks passed at integrated candidate 0b0b4e8: Swift package tests; App build, UI tests, and layout; Real simulator end-to-end test; Release packaging; Analyze Swift; Analyze Actions; Upload Swift analysis; Upload Actions analysis; Code scanning uploads; Dependency review. CI passed 265 package tests, all 16 hosted UI tests including both Firmware cases, both simulator tests including the opt-in workflow, layout checks and Release ZIP verification. Dependency review passed.

  • CodeQL completed both language analyses and SARIF uploads for test-merge 4d573370, whose source tree matches candidate 0b0b4e8. Swift ran 27 rules and Actions ran 17. Inspection of Swift SARIF found zero compiler/error diagnostics, including entries labeled level: none; extraction recorded 1,710,912 AST nodes and zero unresolved nodes. File coverage metrics are unavailable for this PR ref; successful extraction does not establish complete imported-module semantics.

Device and host coverage: local macOS 27 / Xcode 27; arm64 host, both arm64 and x86_64 helper execution. GitHub's macOS runner with Xcode 26.6 passed the complete hosted UI suite, Release packaging and the real simulator integration check at 0b0b4e8.

Safety and privacy

  • Physical-device and simulator targeting and confirmation behavior are unchanged.
  • No app Process calls, shell execution or elevated privileges were introduced.
  • Helper build and embedding failures are explicit; missing tools have an actionable recovery message.
  • No private device data, logs, captures, backups, profiles, IPAs, credentials or evidence are included.
  • Documentation describes normal Debug/Release embedding and first-build prerequisites.

Notes

PR #8 is merged. Integration commit 0b0b4e8 preserves its workflow protections, the firmware helper dependencies/cache and all application/test sources from cf9ac8e. Workflow YAML, Action pin and final diff checks passed. All required hosted checks and revision-specific uploads passed before merging. No installed app was replaced and no release was published. The simulator integration assertions remain intact.

@hideouts-io
hideouts-io marked this pull request as ready for review October 9, 2026 05:21
@hideouts-io
hideouts-io merged commit c05dd8f into main Oct 10, 2026
11 checks passed
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.

1 participant