Skip to content

ci: pin CMake on macOS test-ios and test-ferric-apple-triplets - #377

Merged
kraenhansen merged 1 commit into
mainfrom
kh/pin-cmake-apple-jobs
Jul 18, 2026
Merged

ci: pin CMake on macOS test-ios and test-ferric-apple-triplets#377
kraenhansen merged 1 commit into
mainfrom
kh/pin-cmake-apple-jobs

Conversation

@kraenhansen

Copy link
Copy Markdown
Collaborator

Why

Follow-up to #374 / #375. The first push-to-main run in months surfaced that two more macOS jobs hit the same CMake 4.2.x FRAMEWORK-vs-HEADERS error, because they build the weak-node-api Apple framework but never pinned CMake:

  • Test ferric Apple tripletsCMake Error in CMakeLists.txt on every Apple triplet during prebuild:build:apple.
  • Test app (iOS) — fails downstream: Expected an XCFramework at .../weak-node-api/build/Release/weak-node-api.xcframework (never built because the CMake generate step failed).

Both run on pushes to main, so they keep main red even after #375.

What

  • Add the macOS jwlawson/actions-setup-cmake pin (CMAKE_VERSION = 4.1.2) to test-ios and test-ferric-apple-triplets, matching unit-tests, weak-node-api-tests, and test-macos.

This PR is labeled Apple 🍎 and Ferric 🦀 so both jobs run here and validate before merge.

Test plan

  • Test app (iOS) passes on this PR.
  • Test ferric Apple triplets passes on this PR.

Interim workaround; the proper CMakeLists fix (so no pins are needed anywhere) is tracked in #376.

🤖 Generated with Claude Code

These two jobs build the weak-node-api Apple framework via cmake-rn on
macos-latest but never pinned CMake, so they hit the same 4.2.x
FRAMEWORK-vs-HEADERS-file-set error that broke unit-tests (#374) and
weak-node-api-tests (#375):
CMake Error: The file set "HEADERS" is incompatible with the
"FRAMEWORK" target "weak-node-api".
test-ios fails downstream ("Expected an XCFramework at
weak-node-api/build/Release/weak-node-api.xcframework") because the
framework never builds. Both run on pushes to main, so they keep main
red. Pin CMake to the project's 4.1.2 on both, matching the other jobs.
Interim workaround; proper CMakeLists fix tracked in #376.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UCN2h9xbyn4yhxfVZyMzAm
@kraenhansenkraenhansen added Apple 🍎 Anything related to the Apple platform (iOS, macOS, Cocoapods, Xcode, XCFrameworks, etc.) Ferric 🦀 labels Jul 17, 2026
@kraenhansenkraenhansen self-assigned this Jul 17, 2026
@kraenhansen
kraenhansen merged commit e87569a into mainJul 18, 2026
15 checks passed
@kraenhansen
kraenhansen deleted the kh/pin-cmake-apple-jobs branch July 18, 2026 05:51
kraenhansen pushed a commit that referenced this pull request Jul 19, 2026
CMake 4.2 rejects a `HEADERS` file set on a `FRAMEWORK` target, which
broke every macOS job that builds the weak-node-api framework:
CMake Error in CMakeLists.txt:
The file set "HEADERS", of type "HEADERS", is incompatible with the
"FRAMEWORK" target "weak-node-api".
The workaround pinned CMake to 4.1.2 on five macOS jobs (#374, #375,
#377, and the pre-existing test-macos pin). This fixes the root cause
instead.
On Apple, the public headers are shipped via the framework's
PUBLIC_HEADER property; other platforms use a HEADERS file set for
install packaging. The build-interface include directories that the
file set previously supplied to in-tree consumers (e.g. the C++ tests)
are now provided explicitly via target_include_directories, so both
branches build unchanged.
With the root cause fixed, revert the macOS CMake version pin from all
five jobs. CMAKE_VERSION is retained since it still selects the Android
SDK cmake package for test-android.
Closes#376
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aq4PqMYq8cQTP9Lf43JiwH
kraenhansen added a commit that referenced this pull request Jul 19, 2026
* Split public header packaging between framework and file set
CMake 4.2 rejects a `HEADERS` file set on a `FRAMEWORK` target, which
broke every macOS job that builds the weak-node-api framework:
CMake Error in CMakeLists.txt:
The file set "HEADERS", of type "HEADERS", is incompatible with the
"FRAMEWORK" target "weak-node-api".
The workaround pinned CMake to 4.1.2 on five macOS jobs (#374, #375,
#377, and the pre-existing test-macos pin). This fixes the root cause
instead.
On Apple, the public headers are shipped via the framework's
PUBLIC_HEADER property; other platforms use a HEADERS file set for
install packaging. The build-interface include directories that the
file set previously supplied to in-tree consumers (e.g. the C++ tests)
are now provided explicitly via target_include_directories, so both
branches build unchanged.
With the root cause fixed, revert the macOS CMake version pin from all
five jobs. CMAKE_VERSION is retained since it still selects the Android
SDK cmake package for test-android.
Closes#376
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aq4PqMYq8cQTP9Lf43JiwH
* ci: trigger CI with Apple/macOS/Ferric/weak-node-api labels
Empty commit to re-run the label-gated macOS jobs now that the labels
are applied, so the reverted CMake pin is validated on the runner's
default CMake.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aq4PqMYq8cQTP9Lf43JiwH
---------
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Apple 🍎Anything related to the Apple platform (iOS, macOS, Cocoapods, Xcode, XCFrameworks, etc.)Ferric 🦀

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@kraenhansen