Skip to content

ci: widen test-distribution macos-test Intel coverage; bump fastmcpp#6148

Merged
Fedr merged 1 commit into
masterfrom
test-distribution-intel-expansion
May 22, 2026
Merged

ci: widen test-distribution macos-test Intel coverage; bump fastmcpp#6148
Fedr merged 1 commit into
masterfrom
test-distribution-intel-expansion

Conversation

@Fedr
Copy link
Copy Markdown
Contributor

@Fedr Fedr commented May 22, 2026

Summary

Carves out the Intel-only subset of #6138 so it can land independently:

  • test-distribution / macos-test gains two x64 rows alongside the existing macos-15-intel:

    • macos-26-intel (GitHub-hosted, newer macOS)
    • macos-x64-build (self-hosted Mac Pro 2013 on Monterey 12)

    The arm64 row stays at the single macos-latest runner — exactly as in master. No arm64 build host or test runner is touched.

  • thirdparty/fastmcpp bumped to c5271bc (clang.hpp + CMakeLists: apply libc++ workaround under AppleClang too fastmcpp#2, already merged into main). That PR widens fastmcpp's _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION 0 workaround so it also fires under AppleClang, both in clang.hpp's #if and at the CMAKE_CXX_COMPILER_ID gate in CMakeLists.txt.

    Without this bump, libMRMcp.dylib (built with AppleClang for the x64 .pkg) references __from_native_exception_pointer — a libc++ helper absent from /usr/lib/libc++.1.dylib on macOS 12. MeshViewer then aborts at load time on Mac Pro 2013 / Monterey:

    dyld: Symbol not found: __ZNSt13exception_ptr31__from_native_exception_pointerEPv
      Referenced from: .../libMRMcp.dylib
      Expected in:     /usr/lib/libc++.1.dylib
    

    The submodule bump is what makes the new macos-x64-build matrix row actually pass.

Why not also include the arm64 changes from #6138

The arm64 side of #6138 expanded the matrix to macos-14 / macos-15 / macos-26 / macos-arm-build-12, and to make macos-14 pass it also had to rebuild Homebrew's cpr formula from source on the arm64 build host (the prebuilt arm64_sequoia cpr bottle ships with LC_BUILD_VERSION minos=15 and references the same __from_native_exception_pointer symbol).

That arm64 rebuild trick only works because our self-hosted arm64 build hosts happen to carry an older Xcode whose libc++ properly suppresses the symbol at the MACOSX_DEPLOYMENT_TARGET=12.7 we pass; on a GitHub-hosted macos-15 arm64 runner (latest Xcode) the same rebuild would reintroduce the symbol. The arm64 path is therefore an undocumented invariant on the build hosts' Xcode version, and worth landing separately once we have a host-independent fix (likely building cpr in MeshLib's own source tree rather than via brew).

This PR sidesteps that whole question — it keeps the arm64 test on macos-latest (a current macOS, where the brew cpr bottle's libc++ symbol does resolve), so no rebuild is needed.

CI scope

Only macOS distribution testing is affected. Non-mac jobs are disabled via labels. full-ci is set so upload_artifacts is true and test-distribution actually runs from build-test-distribute.yml.

Test plan

Verified in run 26288059992:

  • All test-distribution / macos-test rows pass:
    • (x64, macos-15-intel)
    • (x64, macos-26-intel) (new)
    • (x64, macos-x64-build) (new — canary for the fastmcpp fix on Monterey)
    • (arm64, macos-latest) (unchanged from master)
  • No arm64 build or test configuration has changed vs master.
  • All 3 macos-build-test variants succeed; upload-distributions succeeds.

Related

Two coordinated changes, both Intel-side; arm64 build and test
configuration stays exactly as in master.

1. macos-test matrix gains two x64 rows alongside the existing
   macos-15-intel:
     - macos-26-intel  (GitHub-hosted, newer)
     - macos-x64-build (self-hosted, MACPRO2013 / Monterey 12)
   The arm64 row stays at the single `macos-latest` runner.

2. thirdparty/fastmcpp bumped to c5271bc (MeshInspector/fastmcpp#2),
   which widens fastmcpp's libc++
   `_LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION 0` workaround to
   also fire under AppleClang. Without this, libMRMcp.dylib (built
   with AppleClang for the x64 .pkg) references
   `__from_native_exception_pointer`, which is absent from
   /usr/lib/libc++.1.dylib on Monterey 12 and aborts MeshViewer on
   macos-x64-build at load time.

Sibling arm64-side changes from #6138 (additional arm64 test runners
and the arm64-scoped cpr from-source rebuild) are intentionally not
included here -- arm64 self-hosted build hosts run an older Xcode and
the matter is intertwined with brew bottle SDK churn that's worth
landing separately.
@Fedr Fedr merged commit fc5ce2c into master May 22, 2026
31 checks passed
@Fedr Fedr deleted the test-distribution-intel-expansion branch May 22, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant