#35774 ci: test cross-built macos arm64 binaries

ReviewabilityReviewsAgreementSize
#35774 willcl-ark ci: test cross-built macos arm64 binariesReady0Strong127
  • Catch platform-specific runtime defects before release by testing cross-built macOS arm64 binaries in CI
  • Ready for review following recent rebase
  • Concept support to test release-like cross-built macOS binaries natively in CI (fanquake)
  • Resolved prior questions regarding determinism, environment setup, and cache usage (maflcko)
  • 127 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 6 lines removed in total
  • 3 files, 3 commits
Build and CI#9 of 56
P2 · test coverage
  • P2 because it adds native CI execution for release-like cross-compiled macOS arm64 builds
  • Prevents platform-specific runtime failures from going undetected before release
Test infrastructure#8 of 54
P2 · test coverage
  • P2 because it extends unit test execution to native macOS arm64 hardware
  • Provides test coverage to catch realistic platform-specific runtime crashes
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.

Goal

Adds a CI workflow to run test_bitcoin and test_bitcoin-qt on native macOS arm64 runners using cross-built binaries from the macos_cross job. Enables cross-OS and cross-architecture cache sharing to transfer the built binaries to the native runner.

Problem: macOS binaries cross-compiled using depends are not executed or tested in CI, allowing platform-specific runtime defects such as #35771 (test_bitcoin-qt segfaulting on macOS) to slip through undetected.

Reviewability

Ready

Nothing known that would invalidate a review now.

Waiting on (from the thread read):

Agreement

Strong

substantive support, no open objection (fanquake)

Thread notes: Converted cache objection to a suggestion, added maflcko's non-determinism objection and question, and recorded fanquake's rebase suggestion, all addressed by the author. / Added maflcko's non-determinism objection and mac cross env question, fanquake's rebase suggestion, and updated waiting status following the author's rebase.

Objections, suggestions, and questions:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
maflcko (member)suggestion, approachUse CI artifacts instead of the cache to pass binaries between jobs, like the Windows testsaccepted · author explained CI infra speed concerns; maflcko had no strong opinionansweredyes2026-07-22: 'Seems a bit tedious to use the cache for this? Why not use a artifact, like the pre-existing windows tests'
Status from: 2026-07-30: maflcko: 'No strong opinion. I just wonder if artifcats are also slow and if inconsistent handling is worth it.'
maflcko (member)objection, correctnessCI will fail due to non-determinism if not frozen to record-frozen-commitfixed · fix pushed · author prepared commit and rebasedchangedyes2026-07-22: 'This must be frozen to `record-frozen-commit`, otherwise, the CI will fail due to non-determinism?'
Status from: 2026-09-11: willcl-ark: 'Rebased'
maflcko (member)question, scopeWhy make this change in 00_setup_env_mac_cross.sh?answered · fix pushed · author explained it was unintentional and dropped the commitansweredyes2026-07-22: 'Why this change?'
Status from: 2026-07-22: willcl-ark: 'Because I didn't realise deploy was already building that :) Commit will be dropped in next push.'
fanquake (member)suggestion, approachRebase and put this PR on top of #35838fixed · fix pushed · author rebasedchangedno2026-07-30: 'Could rebase, and put this on top of #35838?'
Status from: 2026-09-11: willcl-ark: 'Rebased'

Support:

  • fanquake (member) (Concept ACK, 2026-07-23): Similar to Windows, we should have a CI that is natively testing the release-like cross built bins.

Participants:

  • maflcko (member, objection, 4 statements 2026-07-22 to 2026-07-30): suggested artifacts over cache, flagged CI non-determinism, and questioned env setup change
  • fanquake (member, support, 2 statements 2026-07-23 to 2026-07-30): Concept ACK; suggested rebasing on top of #35838
  • sedited (member, neutral, 1 statements 2026-09-11 to 2026-09-11): prompted author for rebase

Files

0 lines under test/bench/ci.

  • .github/workflows/ci.yml +105/-6
  • .github/actions/cache/restore/internal/action.yml +11/-0
  • .github/actions/cache/save/internal/action.yml +11/-0

Card

The short text the ranking pass compares across PRs.

Runs unit tests on cross-built macOS arm64 binaries on native hardware in CI. Cross-built macOS binaries previously went untested in CI, allowing regressions like #35771 where depends builds crashed at runtime to slip through unnoticed. fanquake Concept ACKed the PR, stating that release-like cross-built binaries should be tested natively like Windows builds are. The branch was recently rebased with passing CI, and no open objections remain.

Data

dossier JSON · extract JSON · model ledger, generated 2026-09-29T01:29, confidence high, input hash 70a35b9b63c6f6cd
thread read through 2026-09-11 (11 statements), head 735c2bc0bb
labels: Tests

Categories

Build and CI

P2 · test coverage

Enables native CI execution of release-like cross-compiled macOS arm64 binaries. The PR description notes that cross-compiled macOS binaries are currently never run in CI, allowing platform runtime failures like #35771 to go undetected.

Membership: Modifies .github/workflows/ci.yml and cache actions to add a native macOS arm64 test job.

Factors: security/stability 1, bug 1, performance 0, user value 1, leverage 1

Test infrastructure

P2 · test coverage

Extends test infrastructure to run test_bitcoin and test_bitcoin-qt on native macOS arm64 hardware. As noted in the description, this provides test signal to catch realistic platform-specific runtime crashes before release.

Membership: Carries the Tests label and enables unit test suite execution on native macOS arm64 runners.

Factors: security/stability 1, bug 1, performance 0, user value 1, leverage 1