feat!: configure through shipyard-cmake; one locator, not two - #15
Merged
Merged
Conversation
The shipyard pkg no longer writes the CMake user package registry, and
MavericksShipyardConfig.cmake now refuses any cmake but shipyard-cmake.
build/msc.sh is replaced wholesale by shipyard's canonical template (conventions
check 17 compares it byte for byte): $SHIPYARD_SCRIPTS in CI, else ask
shipyard-cmake where find_package(MavericksShipyard) lands.
build/versions.sh carried a SECOND locator -- _mav_shared_scripts(), with its own
$MAVERICKS_SHARED_SCRIPTS override, its own registry read and its own sibling-
checkout guess -- which re-resolved SHIPYARD_SCRIPTS after build/lib.sh had
already sourced msc.sh. It is deleted; there is one locator now. Nothing is lost:
the `|| true` around it only ever looked tolerant, because lib.sh -> msc.sh had
already hard-failed a line earlier if shipyard was missing.
Five call sites move to shipyard-cmake: four in release.yml (both updater
configures and both --build calls) and the `build it: cmake --build` recipe
build/package-pkg.sh prints when the updater is absent. That last one is the sort
a gate cannot see -- it sits behind a bare "(" that conventions check 18
deliberately skips -- and it names a build of a target whose CMakeLists.txt does
find_package(MavericksShipyard REQUIRED).
Three comments in release.yml said find_package resolves shipyard from the user
package registry, and that install@v1 self-registers there. Both were about to
become false; they now name the pkg and shipyard-cmake's own prefix.
BREAKING CHANGE: builds now require the shipyard pkg (it provides
/usr/local/bin/shipyard-cmake). Do not merge until shipyard has landed bc3082a.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTxFde2TJMmp5p64DhvDSK
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.
Part of the 14-repo shipyard-cmake flag day.
Do not merge until shipyard has landed bc3082a. Until then
shipyard-cmakeexists on no runner, so this PR's own CI is expected to fail at the first configure. That red is the merge-order hold, not a defect.What changed
build/msc.shreplaced wholesale by shipyard's canonical template (conventions check 17 compares it byte for byte). Verifiedbyte-identical.build/versions.shcarried a second locator the plan did not anticipate:_mav_shared_scripts(), with its own$MAVERICKS_SHARED_SCRIPTSoverride, its own~/.cmake/packagesread and its own sibling-checkout guess, re-resolvingSHIPYARD_SCRIPTSafterbuild/lib.shhad already sourcedmsc.sh. Deleted. Nothing is lost: the|| truearound it only looked tolerant, becauselib.sh->msc.shalready hard-failed a line earlier when shipyard was missing.shipyard-cmake: 4 inrelease.yml(both updater configures and both--builds) and thebuild it: cmake --buildrecipe inbuild/package-pkg.sh.release.ymlcomments claimedfind_packageresolves shipyard from the user package registry and thatinstall@v1self-registers there. Both facts die on merge; the comments now name the pkg andshipyard-cmake's own prefix.The one the gate cannot see
build/package-pkg.sh:30prints its recipe from inside(build it: ...). Check 18 deliberately treats a bare(as not command position, so it was invisible to the gate. Found by sweeping every tracked file, not just the gate's subset.Verification
check-family-conventions.sh(fromshipyard-cmake-collapsed): 8 failures -> ok, exit 0.git ls-files: clean, no exceptions needed.check-shell-portability.sh,check-comments.sh,sh -non every tracked*.sh, all three workflows parse as YAML.. build/versions.shproven on both paths: straight through with$SHIPYARD_SCRIPTSset (and still exportingGO_VERSIONetc.), and failing loudly (not silently continuing) without it.install@v1's default mode already putsshipyard-cmakeonPATH.🤖 Generated with Claude Code
https://claude.ai/code/session_01GTxFde2TJMmp5p64DhvDSK