Skip to content

docs(native): host Homebrew contract + provisioning script#100

Merged
ephpm-claude[bot] merged 1 commit into
mainfrom
docs-native-host-provisioning-v2
Jul 11, 2026
Merged

docs(native): host Homebrew contract + provisioning script#100
ephpm-claude[bot] merged 1 commit into
mainfrom
docs-native-host-provisioning-v2

Conversation

@ephpm-claude

@ephpm-claude ephpm-claude Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

What

Native jobs use the host's /opt/homebrew read-only (the sandbox denies writes), so the host is the source of truth for build tooling — deps must be installed and kept current, since jobs can't brew install/brew upgrade.

  • scripts/provision-native-macos.sh — installs the formula set native workflows need (llvm, llvm@17, autoconf, automake, libtool, pkgconf, bison, re2c, cmake, ninja) and, crucially, upgrades outdated ones. An outdated formula fails any job whose workflow runs brew install <it>, because that attempts a sandbox-blocked upgrade — exactly how a stale llvm broke a php-sdk macОS build this week. --check reports without changing anything.
  • Arch-doc Decision 1 rewrite — documents the shipped model (shared host prefix, read-only) instead of the abandoned per-job writable prefix, and explains why it changed: the per-job empty Cellar made spc doctor think deps were missing and try to install them into the write-denied prefix.

Context

Replaces the stale #94 (that branch predated the split PRs — its code and the arch docs are already on main via #91/#95/#97/#98/#99, leaving only the provisioning script net-new). This is that script, updated with everything we learned getting php-sdk green on native, plus the doc correction. Closing #94 in favor of this.

Verified

./scripts/provision-native-macos.sh --check on the live runner reports all 10 formulae present and up-to-date.

🤖 Generated with Claude Code

Native jobs use the host's /opt/homebrew read-only (sandbox denies
writes), so the host is the source of truth for build tooling: deps must
be installed AND kept current, since jobs can't brew install/upgrade.

- scripts/provision-native-macos.sh: installs the formula set native
  workflows need (llvm, llvm@17, autoconf, automake, libtool, pkgconf,
  bison, re2c, cmake, ninja) and, crucially, UPGRADES outdated ones — an
  outdated formula fails any job that runs `brew install <it>` because
  that attempts a sandbox-blocked upgrade (how a stale llvm broke a
  php-sdk build). --check reports without changing anything.
- Rewrite arch-doc Decision 1 to match the shipped model (shared host
  prefix, read-only) instead of the abandoned per-job writable prefix,
  and explain why: the per-job empty Cellar made spc doctor think deps
  were missing and try to install them into the write-denied prefix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ChVRC9ZrvQarrctDwSy1S5
@ephpm-claude ephpm-claude Bot merged commit 8085af7 into main Jul 11, 2026
7 of 8 checks passed
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