Skip to content

Pin the builders' packages; patches as SBOM pedigree; source URLs from the pins - #108

Merged
aledbf merged 2 commits into
mainfrom
sbom-gaps
Oct 13, 2026
Merged

aledbf merged 2 commits into
mainfrom
sbom-gaps

Conversation

@aledbf

@aledbf aledbf commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Closes the spin-machine gaps in the supply-chain track (S2).

  • apk lock. qemu/apk.list and e2fsprogs/apk.list say what each builder installs; qemu/apk.lock (150 packages) and e2fsprogs/apk.lock (75) pin every installed package, dependencies included. task apk:lock writes them from a fresh apk add on the pinned Alpine, read back by the new hack/apklock. The Dockerfiles install the list held to the lock. TestEachListIsLocked refuses a list name the lock does not pin (ninja is listed as samurai, the package that provides it).
  • Pedigree. sbom pins -patches puts QEMU's, qboot's and the kernel's patches (name + hash) in their components.
  • SOURCES URLs come from go tool versions url, so they are the URLs whose sha256 the build checked; the kernel's now names git.kernel.org (7.3-rc5 was never on cdn.kernel.org).
  • go-tools 99d7447.

Operational note: a cold build fails at apk add once Alpine drops a pinned version from its mirror. The fix is task apk:lock, and the lock diff is the review; a new lock is a new QEMU build, so hack/fingerprint-diff reports it in the release.

Verified locally: task lint, task test, task mutate (0 survived), task e2fsprogs:build + verify with the lock. Today's qemu lock is identical to the cached builder's database; the QEMU rebuild with the lock is running and I'll add its result here.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

aledbf and others added 2 commits October 13, 2026 13:46
…Ls from the pins

QEMU's and e2fsprogs' builders installed whatever Alpine's mirror served on the day
of the build: the static libraries linked into released binaries were the mirror's,
not a commit's. Each part now has an apk.list (what it asks for) and an apk.lock
(every package installed, dependencies included, at a version), written by
task apk:lock from a fresh install on the pinned Alpine and read back by
hack/apklock. A pin the mirror has dropped fails a cold build at apk add; the
fix is task apk:lock and the diff is the review.

The SBOM's sources component now carries QEMU's, qboot's and the kernel's patches
as pedigree, and SOURCES names the URL each tarball's sha256 was checked against
(go tool versions url), not one written in hack/release.

go-tools 99d7447 for versions url and sbom pins -patches.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@aledbf

aledbf commented Oct 13, 2026

Copy link
Copy Markdown
Contributor Author

Rebuilt locally with the locks: task e2fsprogs:build + task qemu:build (QEMU from source), both verify steps OK, and qemu-system-x86_64 and mkfs.ext4 are byte-identical to the builds before the locks (sha256 compared). The lock changes no artifact today.

@aledbf
aledbf merged commit 87adfb2 into main Oct 13, 2026
7 checks passed
@aledbf
aledbf deleted the sbom-gaps branch October 13, 2026 17:05
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