| Age | Commit message (Collapse) | Author | Files | Lines |
|
The test-build tool and image-builder chain grew from a .extras/ helper into a
standalone toolchain, now maintained in its own repo (../sbo-dockerbuild). Remove
them here (scripts, examples, design docs) and repoint CLAUDE.md: test-building
is now done with the installed `test-build` CLI, deps resolved from the SBo tree,
both trees verified per bump. Package-maintenance files stay: nvchecker.toml,
hooks/, assets/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
The main loop runs build_variant in an `if ! (...)` condition, which
suppresses set -e inside the subshell, so a failed docker build fell through
to push a nonexistent tag and log "Done" (seen live: a transient containerd
export lock reported success). Add explicit exit checks on docker build and
docker push in all three scripts; return non-zero so the variant is marked
failed.
Also prune the build cache before a --force full-image build: --force already
implies --no-cache, so the stale cache is dead weight that still loads the
snapshotter's lock bookkeeping and has raced the layer export. Best-effort,
never fails the build.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Tree syncs moved earlier (01:00, 02:00), so the image chain runs earlier too
and both variants are ready well before the ~09:00 work start: -current
03:00/03:20/04:30 (ready ~04:35), 15.0 05:00/05:20/06:30 (ready ~06:35).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
All three scripts self-gate (ChangeLog hash, base digest, full digest + .txz
hash), so --force was forcing needless full rebuilds. Drop it: unchanged
nights are now cheap no-ops. Add the 15.0 variant (09:00/09:20/11:00), which
on frozen stable rebuilds only when the 15.0 repo actually changes. -current
stays at 06:00/06:20/08:00.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
The nightly chain on docker.noland.dnx runs after the NAS repo syncs (04:00,
05:00): bootstrap 06:00, full-image 06:20 (~55 min), testbuild 08:00. Also add
the --version current --force flags the deployed crontab actually uses.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
The full-image build pulled the entire Slackware tree from slackware.nl over
WAN: slow (40+ min), flaky (truncated .asc downloads), and it wedged the
legacy builder. The identical tree is on LAN NFS, so serve it to the build
container instead.
- config: add HTTP_MIRROR_HOST/PORT (docker0 bridge gateway + ephemeral port).
- bootstrap.sh: bake the LAN HTTP mirror URL into the base image instead of
slackware.nl, so the full build inherits it.
- build-full-image.sh: start an ephemeral python3 http.server rooted at the
variant NFS tree on the bridge for the build duration, killed via the EXIT
trap; require_mount so an unmounted NAS fails loud; wait for the server
before building.
Also fix a silent-failure bug: without importing the Slackware GPG key against
the mirror first, slackpkg cannot verify CHECKSUMS.md5 and installs almost
nothing (94 packages instead of ~1788). Add "slackpkg update gpg" as the first
Dockerfile step; verified the package count jumps 94 -> 1788 with it.
Fetch is incremental (slackpkg downloads only installed packages), unlike the
buildkit --build-context path which eagerly copies the whole multi-GB tree.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
bootstrap fed slackpkg update gpg with "yes YES |". When slackpkg exits
first (key already valid), yes takes SIGPIPE and, under set -e/pipefail,
the pipeline reports non-zero even though the key import succeeded, firing
a bogus "slackpkg GPG update failed" warning on every run.
Read slackpkg own status via PIPESTATUS[1] instead of the pipeline status,
inside an if so set -e/pipefail does not abort on the SIGPIPE; capture
PIPESTATUS as the first command in each branch so no intervening command
resets it. Verified: warning gone on re-run, key still imports.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Upstream sbopkg ships as .tgz, not .txz. The require_pkgs guard, txz_hash
find, cp staging, and Dockerfile COPY all hard-coded *.txz, so a .tgz
package failed the presence check and was excluded from the rebuild hash.
Widen every glob to *.t?z (matches .txz/.tgz/.tbz/.tlz); stage the whole
pkgs dir into the image and installpkg the lot, dropping the in-image
extension coupling entirely.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|