#35774 ci: test cross-built macos arm64 binaries

full analysis

https://github.com/bitcoin/bitcoin/pull/35774 · willcl-ark · +127/-6 in 3 files, 3 commits · labels: Tests

Goal

  • Run unit tests on native macOS arm64 hardware using release-like cross-built binaries
  • Catch platform-specific regressions and silent toolchain breakages before release

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.

Category: Build and CI (#4 of 55)

P2 · test coverage

  • P2 because it closes CI gaps for release-like builds to protect release integrity
  • Catches silent breakages and segfaults caused by the depends toolchain before release

P2 because testing release-like cross-built macOS binaries built with depends on native hardware prevents supported-platform breakage from reaching releases. It directly prevents recurrences of regressions like #35771, where test_bitcoin-qt segfaulted on macOS when built from depends.

Membership: Modifies GitHub Actions CI workflow files and cache actions to cross-test macOS binaries.

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

Category: Test infrastructure (#2 of 45)

P3 · test coverage

  • P3 because it expands coverage by running unit tests on native macOS hardware
  • CI test orchestration provides lower leverage than core test framework improvements

P3 because it enables test suite execution for an untested platform binary configuration without modifying the test suite or framework code itself.

Membership: Labeled Tests; executes test_bitcoin and test_bitcoin-qt on cross-built arm64 binaries in CI.

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

Reviewability: Ready

  • Ready for review
  • Branch is rebased, CI is passing, and previous questions have been addressed

Branch is cleanly rebased, CI is passing, and previous reviewer feedback has been addressed.

Author status: Active; rebased the branch on 2026-09-11 following reviewer requests.

Resolved concerns:

  • maflcko asked whether CI artifacts should be used instead of caching; willcl-ark explained Warp cache performance benefits and maflcko expressed no strong opinion
  • maflcko noted the job needed record-frozen-commit dependency, which willcl-ark fixed
  • fanquake requested rebasing on top of #35838, which willcl-ark completed

Agreement: Strong

  • Strong concept support citing the need to test cross-built binaries natively (fanquake)
  • Nonblocking inquiry about caching strategy was resolved (maflcko)

Strong concept support from fanquake citing #35771; approach question from maflcko resolved.

fanquake provided a substantive Concept ACK highlighting the necessity of testing release-like cross-compiled binaries natively, and maflcko's query about artifact caching was resolved without opposition.

  • fanquake: 'Concept ACK given #35771. Similar to Windows, we should have a CI that is natively testing the release-like cross built bins.'
  • maflcko: 'No strong opinion. I just wonder if artifcats are also slow and if inconsistent handling is worth it.'

Objections:

ReviewerKindHarmStatusBlockingAuthor repliedQuote
maflckoapproachInconsistent handling compared to Windows cross tests which use artifacts instead of cacheresolvedyesyes2026-07-22: 'Seems a bit tedious to use the cache for this? Why not use a artifact, like the pre-existing windows tests'
Settled: 2026-07-30: 'No strong opinion. I just wonder if artifcats are also slow and if inconsistent handling is worth it.'

Support:

  • fanquake: Concept ACK given #35771. Similar to Windows, we should have a CI that is natively testing the release-like cross built bins.

Participants: maflcko (objection), fanquake (support), sedited (neutral)

State derived from the lists: substantive support, no open objection (fanquake)

Review verdicts (DrahtBot): 0

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

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 openrouter/google/gemini-3.8-flash, generated 2026-09-17T21:40, confidence high, input hash 15478c4a693445ca