Skip to content

fix(tvos): route precompiled tvOS bundle to the sign worker (needs_finishing)#4

Open
proggeramlug wants to merge 4 commits into
mainfrom
fix/tvos-needs-finishing
Open

fix(tvos): route precompiled tvOS bundle to the sign worker (needs_finishing)#4
proggeramlug wants to merge 4 commits into
mainfrom
fix/tvos-needs-finishing

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Summary

tvOS builds linked and uploaded their precompiled .app bundle but the publish then hung forever waiting for a signed artifact that never arrived.

#16 tagged the tvOS artifact as ios-precompiled (correct — the Linux-cross-built .app is signed → .ipa → App Store Connect on the macOS sign worker). But the build-complete message's needs_finishing match only covered windows/ios/macos:

"needs_finishing": match build_target.as_str() {
    "windows" => Some("windows"),
    "ios" => Some("ios"),
    "macos" => Some("macos"),
    _ => None,               // <-- tvos fell through here
}

So tvOS reported None; the hub treated the build as fully done and never dispatched the sign step. The CLI waited indefinitely for a signed result.

Fix

"tvos" => Some("ios"),

tvOS finishes via the same ios-sign path its precompiled bundle is already routed to. Verified in production: iOS signs + uploads to TestFlight fine on that worker; with this line tvOS follows the identical hand-off.

(Found while getting the first tvOS TestFlight build through — the libc++ cross-link fix made tvOS link; this makes it sign.)

Pairs with the perry compiler's new linux-arm64 target so this worker
can produce aarch64 Linux server binaries (e.g. for an AWS Lambda
arm64 matrix), alongside the existing x86_64 linux target.

- BuildTarget::LinuxArm64 variant; determine_target maps
  "linux-arm64"/"linux-aarch64" to it.
- compiler_target = Some("linux-arm64") so perry gets --target and
  cross-compiles (unlike native x86_64 linux which passes no --target).
  Falling through to BuildTarget::Linux would have silently produced an
  x86_64 binary.
- Packaging reuses run_linux_pipeline (the binary is just aarch64).
- compiler.rs: cross env for cc-rs (CC/CXX/AR_aarch64_unknown_linux_gnu
  + cargo linker var) so user-project native C/C++ deps build for
  aarch64. The build container must provide gcc-aarch64-linux-gnu.
- Advertise "linux-arm64" capability so the hub routes such jobs here.
#16 tagged the tvOS artifact as ios-precompiled (so the .app cross-built
on Linux gets signed -> .ipa -> App Store Connect on the macOS sign
worker), but the build-complete message's needs_finishing match only
covered windows/ios/macos -> tvOS fell through to None. The hub then
treated the tvOS build as fully done and never dispatched the sign step,
so the publish hung waiting for a signed artifact that never came.

Add "tvos" => Some("ios") so tvOS finishes via the same ios-sign path
its precompiled bundle is already routed to (verified: iOS signs fine on
that worker; tvOS now follows the identical hand-off).
…n jobs

Emit needs_finishing tvos/watchos (not flatten to ios) so the hub creates
tvos-sign / watchos-sign jobs; the macOS sign worker now has dedicated
TvosSign/WatchosSign pipelines (skip iOS icon mangling, altool --type tvos).
Supersedes the earlier ios-routing stopgap.
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