GO_SRC_SHA256 was wrong since it was first pinned in Task 1 — this
path had never actually been exercised in any prior CI run or local
test because every earlier failure happened before reaching the Go
install step, or (once it did run) nothing had checked the pinned
value against go.dev's own published checksum yet. Task 88's log
caught it: the real go1.26.5 linux-amd64 tarball hashes to
5c2c3b16caefa1d968a94c1daca04a7ca301a496d9b086e17ad77bb81393f053
(cross-checked against https://go.dev/dl/?mode=json directly), not
the previously pinned value. Also independently re-verified
LIBSECCOMP_SRC_SHA256 against the real v2.6.1 tarball while looking at
this — that one was already correct.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Task 84's log got further than any run so far — 4 of 8 packages
(aardvark-dns, passt, fuse-overlayfs, unraid-podman) built successfully
— and surfaced four distinct, genuine build-time issues for the rest:
1. podman: go.mod parsing failed with "invalid go version '1.25.6':
must match format 1.23". Root cause: slackpkg's batch-mode
`install gcc` (verified directly) pulls in every gcc-<lang> sibling
package Slackware's gcc SlackBuild produces — including gcc-go, an
ancient bundled go1.16.5. Our Go bootstrap only installed the pinned
$GO_VERSION when `command -v go` found nothing, so gcc-go's go1.16.5
silently won. Fixed by always installing/overwriting the pinned Go
and prepending it to PATH, regardless of what else provides `go`.
2. crun: "no suitable Python interpreter found" — added python3.
3. netavark: build.rs (via prost-build) needs a `protoc` binary;
Slackware packages no protobuf/protoc at all. Added the official
prebuilt release binary, pinned + checksummed (no `unzip` on this
image either, so extracted with `python3 -m zipfile` instead of
adding yet another package).
4. conmon: `make install`'s docs target needs go-md2man, not packaged
by Slackware and no prebuilt release exists upstream. `go install`
it, pinned to a tagged release, now that our own Go is reliably on
PATH.
All four verified directly against vbatts/slackware:15.0 on the actual
runner host before this commit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- versions.env pins podman, conmon, crun, netavark, aardvark-dns, passt,
and fuse-overlayfs to verified upstream source checksums; SlackBuild
recipes, scripts/build-packages.sh, checksums.sh, release.sh, and
update-versions.sh implement the reproducible pipeline; GitHub Actions
workflows build in a Slackware container and publish releases without
committing any binaries.
- plugin/podman.plg installs/updates/removes all eight packages (the
seven components plus the plugin's own unraid-podman scaffolding
package) via upgradepkg, using the official Unraid array-event hook
mechanism (event/disks_mounted, event/stopping) instead of editing
/boot/config/go. rc.podman and the sbin/ helper scripts implement
storage creation, config seeding/sync, preflight checks, autostart
with per-container Safe-Mode, and package verify/update/rollback.
- webui/plugins/podman implements the Dashboard, Containers, Pods,
Images, Volumes, Networks, Logs, Terminal, Compose, and Settings
panels against the approved mockup (webui/mockups/prototype.html),
talking to podman system service exclusively via PodmanClient.php
(libpod REST API over the Unix socket), with two documented
exceptions: Terminal's one-shot exec model and Compose's use of the
podman compose CLI, since libpod has no REST equivalent for either.
- docs/ARCHITECTURE.md and docs/ROADMAP.md record the design decisions
and honest current status (syntax-checked, unit- and
integration-tested against fake sockets/servers; not yet run against
a real Unraid/Podman/Slackware system).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>