Skip to content

packaging(cockpit): fix clean-box assemble — bun build + writable work dirs#75

Merged
mdheller merged 1 commit into
mainfrom
feat/cockpit-build-robustness
Jul 20, 2026
Merged

packaging(cockpit): fix clean-box assemble — bun build + writable work dirs#75
mdheller merged 1 commit into
mainfrom
feat/cockpit-build-robustness

Conversation

@mdheller

Copy link
Copy Markdown
Contributor

Found by actually running brew install + bearbrowser-cockpit-assemble on a clean box (thanks to the real-machine test). Two bugs the local dev path had masked:

  1. npm ci on a pnpm project. build-cockpit.sh ran npm ci, but client-vue ships pnpm-lock.yaml (no package-lock.json) — so npm ci bails on a fresh clone. Now builds with bun (already required for the sidecar; installs from package.json regardless of the committed lockfile). The earlier local test passed only because a stray package-lock.json was lying around.
  2. Read-only Cellar. Both build scripts defaulted their clone dir to $REPO_ROOT/build — read-only libexec on a package install. Now default to TMPDIR.

Verified end-to-end on the real path — a full fresh-clone assemble (no local source overrides, exactly what the installed bearbrowser-cockpit-assemble runs): clone socioprophet → bun-build client-vue (43 files); clone noetica → bun-compile the 68M sidecar (self-smoke 200); stage. Plus a clean error if bun is missing.

After merge: brew reinstall --formula sourceos-linux/tap/bearbrowser re-fetches main with the fixed scripts, then bearbrowser-cockpit-assemble && bearbrowser-cockpit-up stands the whole thing up.

…k dirs

Two bugs the brew-install path exposed (the local dev test masked them):

1. build-cockpit.sh ran 'npm ci' — but client-vue is a pnpm project (pnpm-lock.yaml,
   no package-lock.json), so npm ci can't run on a fresh clone. Build with bun instead
   (already required for the sidecar; installs straight from package.json regardless of
   lockfile). Local test passed only because a stray package-lock.json existed.
2. Both build scripts defaulted their clone/WORK dir to $REPO_ROOT/build — which is a
   read-only Cellar libexec on a package install. Default to TMPDIR (writable).

Verified: full FRESH-CLONE assemble (no local src overrides — exactly what the brew CLI
does) now completes end-to-end: clone socioprophet → bun-build client-vue (43 files);
clone noetica → bun-compile the 68M sidecar (smoke 200); stage. build-cockpit also now
errors cleanly if bun is absent.
@mdheller
mdheller merged commit 0d3362a into main Jul 20, 2026
17 checks passed
@mdheller
mdheller deleted the feat/cockpit-build-robustness branch July 20, 2026 11:47
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