aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
5 hoursUpdate stale design-tradeoff: cache shipped, not TODOHEADmasterDanilo M.1-6/+6
The shared-deps tradeoff bullet still described the package cache as a future TODO not yet implemented. The cache has shipped; point the bullet at it instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5 hoursUpdate verified-status: build flow + cache verified on hardwareDanilo M.1-4/+14
feh + imlib2 ran the full overlay/chroot/build/installpkg/cache path on the build system. Only an actual base patch (mirror was up-to-date) and the real-version eviction path remain unseen on hardware. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd CACHED row to README status-values tableDanilo M.1-0/+1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursDocument package cache (CLAUDE.md, README)Danilo M.2-10/+30
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursWipe package cache when base is patchedDanilo M.1-0/+5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursReport CACHED status and cached count in summaryDanilo M.1-4/+6
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursbuild_one: dedupe basename, note non-atomic cache installDanilo M.1-2/+5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursWire cache into build_one: install cached deps, store buildsDanilo M.1-6/+41
build_one gains a third arg is_target (default 0). Dependencies with a version-matching cached package are installed from cache (status CACHED) and skip the build entirely. The target always builds. After any successful build, the produced package is copied into PKG_CACHE via cache_store before overlay teardown, making it available for future runs or sibling targets. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursForce controlled OUTPUT in build, do not inherit /repoDanilo M.1-3/+9
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAnnotate build order with cache outcome (run + dry-run)Danilo M.1-3/+34
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd version_of .info reader + testDanilo M.2-0/+16
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd cache_path + cache_store + testsDanilo M.2-0/+40
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd cache_decision + testsDanilo M.2-0/+55
Implements cache_decision <cat> <prog> <version> which inspects $PKG_CACHE/<cat>/<prog>/ and returns "cached", "bump:OLD:NEW", or "new". Empty PKG_CACHE disables the cache. Tests in test-logic.sh cover all four outcomes and are driven pure (no VM needed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd PKG_CACHE config var (empty = disabled)Danilo M.2-0/+12
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd package-cache implementation planDanilo M.1-0/+996
11 tasks: PKG_CACHE config, pure cache_decision/path/store/version_of with self-check coverage, forced controlled OUTPUT (no /repo inheritance), build_one wiring (target builds fresh, deps install from cache), CACHED status + count, base-patch wipe, docs, VM verification. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 hoursAdd package-cache design specDanilo M.1-0/+222
Persistent on-disk cache of built dependency packages, keyed prog+version, SBo-tree layout, reused across runs while version is unchanged. Target always builds fresh; cache wiped on base patch. Pure cache_decision/store/path functions for self-check coverage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
7 hoursExternalize config; mirror mountpoint+auto-mount, MIRROR_TREE, --terseDanilo M.4-57/+163
Config now lives outside the script in $SBO_BATCH_CONFIG (default ~/.config/sbo-batch-tester/config), sourced at load. Script ships empty defaults plus config.example as the template; require_config (in validate_env and init_base) hard-fails a real run when the config is missing or has not set SLACKWARE_BASE / LOCAL_MIRROR_15 / SBO_TREE_ROOTS. LOCAL_MIRROR_15 is now the NFS mountpoint, not the tree root. The Slackware tree is derived as MIRROR_TREE=$LOCAL_MIRROR_15/slackware64-$VERSION (holds ChangeLog.txt, slackware64/, patches/); all mirror content reads use it. The mountpoint is checked with mountpoint -q and auto-mounted (mount $LOCAL_MIRROR_15) when the noauto fstab entry is not mounted, left mounted after the run. installpkg/upgradepkg run with --terse for cleaner output. Docs updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
11 hoursAdd --init-base mode for first-time base populateDanilo M.3-14/+67
New --init-base flag installs the full slackware64-15.0 package set into SLACKWARE_BASE from the mirror, then exits. Runs its own pre-flight checks (root, NFS reachable, base not under the mirror) since the base does not exist yet, refuses to clobber a populated base, and seeds the last-base-update marker so the first build skips a needless re-patch. Replaces the manual installpkg --root loop that validate_env used to print as a hint. Docs (README, CLAUDE.md, HANDOFF) updated to match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 daysCredit bassmadrigal's overlay-chroot.sh in script and READMEDanilo M.2-7/+10
Document that the overlayfs setup, system bind mounts, base patching, and teardown ordering are inspired by overlay-chroot.sh by Slackware user bassmadrigal (Jeremy Hansen). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 daysInitial commit: sbo-batch-testDanilo M.6-0/+1615
Batch-test SlackBuilds against a clean Slackware 15.0 overlay chroot. Non-interactive, local-tree-only dependency resolution with topological sort, per-target disposable overlay, persistent per-package logs, and a color summary. Includes README.md, CLAUDE.md working notes, the reference overlay-chroot.sh, the original spec, and test-logic.sh (resolver + BLOCKED-BY-DEP self-check, 12 checks passing). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>