Skip to content

build: keep the local daemon builds universal, matching CI - #655

Open
filip131311 wants to merge 1 commit into
mainfrom
filip/universal-daemons-buildsh
Open

build: keep the local daemon builds universal, matching CI#655
filip131311 wants to merge 1 commit into
mainfrom
filip/universal-daemons-buildsh

Conversation

@filip131311

Copy link
Copy Markdown
Collaborator

Companion to software-mansion/argent-private#29. Together they fix #639.

Split of work

The binaries users install are not built by this script — they come from
build-native-binaries.yml in argent-private, which duplicates the compile commands inline. So the
load-bearing fix is argent-private#29;
this PR keeps build.sh (the pack:mcp:local path) in step, which that workflow's own comment
promises it mirrors. Letting them drift is how the gap appeared.

The change

The three daemon compiles built arm64 only while the dylibs five lines away already cross-compile
both slices, so a locally packed tarball had a universal simulator-server next to an arm64-only
ax-service. -target is kept and -arch arm64 -arch x86_64 added — identical output, but the
platform stays pinned by something that fails loudly rather than by a flag whose loss would silently
yield a macOS binary that packs fine and only dies at simctl spawn.

tvos-hid-daemon also gets -mmacosx-version-min=14.0. It was the only compile with no deployment
target, so its floor was whatever Xcode built it — on a current machine that is macOS 26, which would
exclude nearly every Intel Mac the x86_64 slice exists for. 14.0 is what the shipped binary already
reports, so this is a no-op against the current artifact.

Verification

Ran this script end to end against the real private sources:

ax-service        x86_64 arm64     IOSSIMULATOR 17.0  (both slices)
tvos-ax-service   x86_64 arm64     TVOSSIMULATOR 17.0 (both slices)
tvos-hid-daemon   x86_64 arm64     MACOS 14.0         (both slices, was 26.0 locally)
libNativeDevtoolsIos.dylib  x86_64 arm64  (unchanged)

Not verified: that the x86_64 slices run — no Intel Mac and no x86_64 simulator runtime here.
This restores a build pattern the repo already uses everywhere else; it is not a tested claim of Intel
support, and no doc is changed to say otherwise.

Note for whoever merges

Merging both PRs is still not enough for the fix to reach an npm release: publish-npm.yml pins a
frozen argent-<ref> binaries tag built by a manual dispatch of the private workflow. After
argent-private#29 lands, that workflow needs a dispatch against the tag the next release will use.

`build.sh` is what `pack:mcp:local` uses, and the CI workflow that produces the
published binaries states it mirrors this script. Its three daemon compiles built
arm64 only, like CI's did, so a locally packed tarball had the same gap as a
published one: a universal `simulator-server` next to an arm64-only `ax-service`.

`-target` stays and `-arch` is added, rather than moving the platform onto a
version-min flag — if the platform were carried only by that flag, losing it would
silently produce a macOS binary that packs fine and only fails when spawned in a
simulator.

`tvos-hid-daemon` gets the deployment target it never had. Without it the floor is
whatever Xcode built it, which on a current machine is macOS 26 — high enough to
exclude the Intel hosts the second slice exists for.

Verified by running this script: all three come out `x86_64 arm64`, the simulator
binaries keep `IOSSIMULATOR 17.0` on both slices, and the daemon reports
`MACOS 14.0` rather than the local toolchain's 26.0.

Refs #639
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.

bin/darwin ax-service and the tvos-* binaries are arm64-only while simulator-server is universal (Intel Macs get no describe)

1 participant