script/bootstrap installs the Dockerfile's Go from go.dev (closes #46)
check / check (push) Successful in 3m6s

The Gitea runner has Docker and git but no Go, and the apt path never
ran apt-get update, so on a fresh host every install failed.

Bootstrap now installs Go 1.26.8, the version in the Dockerfile's
golang image, from the release archive at go.dev, checked against a
sha256 in the script, into ~/.local/go whenever the go first on PATH
reports any other version. script/fmt, script/fmt-check,
script/precommit and the Makefile put ~/.local/go/bin first on their
PATH so they use it. The apt path runs apt-get update once, before its
first install.

Model: opus-5-5
This commit is contained in:
clawbot
2026-10-04 01:40:33 +00:00
parent 90596de901
commit 9d1b9a9f19
7 changed files with 110 additions and 8 deletions
+7 -3
View File
@@ -283,9 +283,13 @@ The repo adheres to the
standard: most Makefile targets are thin shims over an executable in
`script/` (`build` and `clean` are the exceptions).
- `script/bootstrap` installs everything needed to build and develop (git, make,
Go), idempotently, from nix, apt, brew or apk; it does not install the linter,
which only runs inside Docker.
- `script/bootstrap` installs everything needed to build and develop,
idempotently: git and make from nix, apt, brew or apk, and Go, at the version
the `Dockerfile`'s Go image carries, from the official release archive
(checked against a sha256 in the script) into `~/.local/go`. `script/fmt`,
`script/fmt-check`, `script/precommit` and the `Makefile` put
`~/.local/go/bin` first on their `PATH`, so they use that Go. It does not
install the linter, which only runs inside Docker.
- `script/setup` prepares a fresh clone: it runs `bootstrap`, then installs the
git pre-commit hook.
- `script/projectname` prints the project name; other scripts call it so they