Skip to content

feat!: configure through shipyard-cmake; one locator, not two - #15

Merged
schmonz merged 1 commit into
mainfrom
shipyard-cmake-flagday
Sep 16, 2026
Merged

schmonz merged 1 commit into
mainfrom
shipyard-cmake-flagday

Conversation

@schmonz

@schmonz schmonz commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Part of the 14-repo shipyard-cmake flag day.

Do not merge until shipyard has landed bc3082a. Until then shipyard-cmake exists 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.sh replaced wholesale by shipyard's canonical template (conventions check 17 compares it byte for byte). Verified byte-identical.
  • build/versions.sh carried a second locator the plan did not anticipate: _mav_shared_scripts(), with its own $MAVERICKS_SHARED_SCRIPTS override, its own ~/.cmake/packages read and its own sibling-checkout guess, re-resolving SHIPYARD_SCRIPTS after build/lib.sh had already sourced msc.sh. Deleted. Nothing is lost: the || true around it only looked tolerant, because lib.sh -> msc.sh already hard-failed a line earlier when shipyard was missing.
  • Five call sites now use shipyard-cmake: 4 in release.yml (both updater configures and both --builds) and the build it: cmake --build recipe in build/package-pkg.sh.
  • Three release.yml comments claimed find_package resolves shipyard from the user package registry and that install@v1 self-registers there. Both facts die on merge; the comments now name the pkg and shipyard-cmake's own prefix.

The one the gate cannot see

build/package-pkg.sh:30 prints 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 (from shipyard-cmake-collapsed): 8 failures -> ok, exit 0.
  • Whole-tree sweep with check 18's own regex over git ls-files: clean, no exceptions needed.
  • No registry reference survives anywhere in the tree.
  • Also green: check-shell-portability.sh, check-comments.sh, sh -n on every tracked *.sh, all three workflows parse as YAML.
  • . build/versions.sh proven on both paths: straight through with $SHIPYARD_SCRIPTS set (and still exporting GO_VERSION etc.), and failing loudly (not silently continuing) without it.
  • No workflow step was added; install@v1's default mode already puts shipyard-cmake on PATH.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GTxFde2TJMmp5p64DhvDSK

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
@schmonz schmonz closed this Sep 16, 2026
@schmonz schmonz reopened this Sep 16, 2026
@schmonz schmonz closed this Sep 16, 2026
@schmonz schmonz reopened this Sep 16, 2026
@schmonz schmonz closed this Sep 16, 2026
@schmonz schmonz reopened this Sep 16, 2026
@schmonz
schmonz merged commit 1bf9f6f into main Sep 16, 2026
25 of 29 checks passed
@schmonz
schmonz deleted the shipyard-cmake-flagday branch September 16, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant