ci: pin CMake on macOS weak-node-api tests#375
Merged
Conversation
The weak-node-api-tests job invokes cmake directly on macos-latest with no version pin, so it picks up the runner's default CMake 4.2.x instead of the project's pinned 4.1.2 — the same drift that broke the unit-tests job (#374). This job runs on pushes to main, so leaving it unpinned would turn main red. Install the pinned version via jwlawson/actions-setup-cmake, gated to macOS runners, matching the unit-tests and test-macos jobs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UCN2h9xbyn4yhxfVZyMzAm
3 tasks
Collaborator
Author
|
Temporary workaround. Proper fix (remove the HEADERS file set on the FRAMEWORK target so we don't need a CMake pin) tracked in #376. |
2 tasks
kraenhansen
added a commit
that referenced
this pull request
Jul 18, 2026
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. Claude-Session: https://claude.ai/code/session_01UCN2h9xbyn4yhxfVZyMzAm Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 tasks
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
3 tasks
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Follow-up to #374. The
weak-node-api-testsjob runscmakedirectly onmacos-latestwith no version pin, so it picks up the runner's default CMake 4.2.x instead of the project's pinned4.1.2— the same drift that broke theunit-testsjob. This job runs on pushes tomain, so leaving it unpinned keepsmainat risk of going red.What
jwlawson/actions-setup-cmakestep toweak-node-api-tests, matching theunit-testsandtest-macosjobs.This PR is labeled
weak-node-apiso the otherwise main-only job runs here and validates the fix before merge.Test plan
🤖 Generated with Claude Code