build: move the upstream pkgs pin to libkrun 1.19.4 - #881
Merged
Conversation
Advance `[upstream] locked_commit` from 4538ab8b to c854d6b1, the pkgs commit that bumped `packages/libkrun/build.ncl` from 1.19.0 to 1.19.4. This is the oldest pkgs commit that resolves 1.19.4, chosen over pkgs `main` to keep the blast radius small. The macOS side already builds 1.19.4 from source (`vendor/libkrun/libkrun.lock` pins v1.19.4 / 728df8125077d0db44265f6e997c72b81b65c015), so the package-served Linux path was the last consumer still resolving 1.19.0. This closes that gap. Hygiene only. The v1.19.0...v1.19.4 delta touches zero files matching `vsock`, so this cannot and does not change vsock behaviour. The documented `>= 1.19.0` floor is left alone — it is justified by `krun_add_disk3` landing in 1.19.0 and by 1.18.1's multi-descriptor vsock TX-chain bug, and both remain true at 1.19.4. Only the stale statement of fact about what the package pins is updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe upstream ChangesRevision and compatibility updates
Estimated code review effort: 1 (Trivial) | ~2 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What moved
Two lines.
.minimal/minimal.toml[upstream] locked_commit4538ab8b→c854d6b1crates/minvmd/README.md:168libkrunpackage already pins 1.19.0" → 1.19.4Why
The macOS side of the project has been on libkrun 1.19.4 for a while:
vendor/libkrun/libkrun.lockon
mainalready readsand
728df8125077d0db44265f6e997c72b81b65c015is whatrefs/tags/v1.19.4resolves to incontainers/libkrun(verified viagh api repos/containers/libkrun/git/ref/tags/v1.19.4). It is alsothe rpath commit baked into the shipped
minvmd.The package-served Linux path (
[outputs.libkrun]→ the upstreamlibkrunpackage →scripts/fetch-libkrun.sh) was still resolving 1.19.0, because this repo's pkgs pin predated theupstream bump. So the two halves of the project disagreed on which libkrun they were on. This closes
that gap; it does not change the macOS path at all.
Verification that the new pin actually resolves 1.19.4
packages/libkrun/build.nclatc854d6b1e0fdc67efd84fc664251079c0719987d, read viagh api repos/gominimal/pkgs/contents/packages/libkrun/build.ncl?ref=c854d6b1…:c854d6b1is the pkgs commit that performed the bump(gominimal/pkgs#459) — i.e. the oldest pkgs commit
that resolves 1.19.4. It was chosen deliberately over pkgs
main, which is a further ~30 commitsahead, to keep the blast radius as small as it can be while still getting 1.19.4.
This does NOT change vsock behaviour
Stating this explicitly because it is the obvious thing to assume and it is wrong.
gh api repos/containers/libkrun/compare/v1.19.0...v1.19.4→ 24 commits, 50 files changed, andzero of those 50 filenames match
vsock(case-insensitive). The delta is virtio-fs(
fs/device.rs,fs/server.rs,fs/worker.rs, both passthrough backends), cpuid transformers,init_blob, the bundled edk2 firmware blob,Cargo.lock/Cargo.tomldep bumps, and upstream CI.Nothing in libkrun's vsock device is touched, so this upgrade cannot fix, regress, or otherwise move
any vsock behaviour. Anyone chasing a vsock symptom should not treat this PR as a variable.
The
include/libkrun.hdiff over the same range is purely additive: a newkrun_add_virtiofs4plus two
KRUN_SEMANTICS_*constants. No signature changes, no removals. Every symbolminvmdbinds(
krun_create_ctx,krun_free_ctx,krun_set_vm_config,krun_set_root,krun_set_kernel,krun_set_exec,krun_set_console_output,krun_add_disk2,krun_add_disk3,krun_add_vsock_port,krun_add_vsock_port2) is unchanged.What else the pin drags in
Moving the pin is not free — it pulls 22 pkgs commits (44 files). Reviewers are accepting all of
this, not just libkrun:
Version bumps (28 packages)
New packages (6):
buddy,libsigsegv,libtecla,maude,tamarin-prover(+ anfclabels-ghc910.patch) — the tamarin-prover addition fromgominimal/pkgs#449. Additive; nothing here depends on
them.
Non-version changes:
zshre-sourced from thegs://mirror (its upstream URL rots when arelease moves to
/pub/old/, gominimal/pkgs#450);dune/build.shgained an--auto-promotewarm-up pass to work around dune'sgenerate_opam_filescheck; upstream pkgs CI got a disk-space step.Assessment — read this bit. No toolchain package moves:
base,base-bootstrap,toolchain,gcc,glibc,rust,make,pkgconfare all untouched, so the compiler/libc floor undereverything is identical. The two entries worth a second look are:
findutils4.10.0 → 4.11.0 — in this repo's closure via[outputs.bash-img].libffi3.6.0 → 3.7.1 — a low-level shared library, minor-version bump, in the closure of thePython-side packages.
Everything else is either a leaf CLI, a demo-profile package, or a package this repo does not build.
If a reviewer wants to be conservative,
findutilsandlibffiare the two to think about; the restis noise.
Decision on the documented
>= 1.19.0floor: leave it where it isI deliberately did not raise the documented floor to
>= 1.19.4, and I want that on the recordrather than discovered later.
The
>= 1.19.0floor is not a restatement of what happens to be pinned — it is a claim backed by twospecific facts:
krun_add_disk3(the/dev/vdbattach) first appears in 1.19.0.Both are still exactly as true at 1.19.4 as they were at 1.19.0. Nothing we know of requires 1.19.4
specifically — as established above, the 1.19.0→1.19.4 delta doesn't even touch vsock. Bumping the
floor to match the pin would assert a requirement that no evidence supports, and would make the
scripts/build-libkrun-macos.shassertion (which checks for the presence ofkrun_add_disk3, not aversion number) inconsistent with its own error message.
So: pinned version 1.19.4, documented floor
>= 1.19.0. The only line changed is the one thatwas a statement of fact about what is pinned and had become false. These floor statements were
inspected and deliberately left alone:
crates/minvmd/README.md:229— floor + the 1.18.1 bug history.crates/minimald/src/server.rs:382— floor + the 1.18.1 bug history.crates/minvmd/tests/minimald_session_integration.rs:14,129,160— floor in a doc comment, a panicmessage, and an
#[ignore]reason.scripts/build-libkrun-macos.sh:84-87— assertsnm -gU | grep _krun_add_disk3and points theoperator at
vendor/libkrun/libkrun.lockon failure. It reads that lock (already v1.19.4) forversion=/commit=; the>= 1.19.0in its message is the API floor and remains correct.Notes for a CODEOWNER
.github/workflows/edit was needed and none was made (frozen, CODEOWNER-gated). I checkedwhether anything there went stale:
ci-macos.yml:179and:284, and thekrun_add_disk3assertions in
.github/actions/setup-libkrun-{linux,macos}/action.yml, all express the>= 1.19.0floor, which this PR intentionally preserves. Nothing under
.github/is stale as a result ofthis change — no follow-up needed.
crates/minvmd/src/vm.rsand
crates/minimald/src/server.rs. This PR does not touchvm.rsat all, and does not touchserver.rseither (its>= 1.19.0doc comment is a floor and was left alone), so the conflictsurface is smaller than expected — but flagging it since the branches overlap in the same crates.
crates/minvmd/README.md:24still advertisesbrew install slp/krun/libkrun, whilescripts/build-libkrun-macos.sh's own header states that thethird-party slp/krun tap is deliberately no longer in the supply chain. That line looks stale
independently of this PR. Not fixed here — it is a different logical change.
docs/specs/02-spec-minvmd-linux-kvm/anddocs/specs/08-spec-vm-ext4-volume/cite 1.19.0 as dated, verified-at-the-time findings("verified against libkrun 1.19.0 header", "2026-07-07, libkrun 1.19.0"). Left untouched by
design — editing them would falsify the record.
What I verified, and what I did not
Verified:
packages/libkrun/build.nclat the new pin readslet version = "1.19.4"(quoted above, fetchedvia
gh api, not assumed).refs/tags/v1.19.4incontainers/libkrun=728df8125077d0db44265f6e997c72b81b65c015, matchingvendor/libkrun/libkrun.lock.c854d6b1is 22 ahead / 0 behind4538ab8b— a clean fast-forward, no divergence.vsock-matching files inv1.19.0...v1.19.4;libkrun.hdiff is additive only.grepacross the tree)..minimal/minimal.tomlstill parses andcargo test -p mfileis green (44 passed).cargo fmt --all --check— clean.cargo test -p minvmd— 129 passed, 0 failed, 6 ignored (the ignored ones are theMINVMD_E2E=1-gated boot/session/volume E2Es).cargo clippy -p minvmd --all-targets -- -D warnings— clean.Not verified (and why):
minbuild, no VM boot, nominvmdrebuild/codesign — a live VM was mid-experiment on this machine and restarting it wouldhave destroyed a measurement in progress. CI is the first place this pin gets exercised end to end.
sha256in the newbuild.nclwas not independently recomputed against the upstream tarball;it is taken as correct from pkgs.
cargo test --workspacewas not run: macOS cannot buildminimald(procfs). Pre-existing platformlimitation, unrelated to this change. Test runs were scoped to
minvmdandmfileaccordingly.krun_add_disk3— butscripts/build-libkrun-macos.shand bothsetup-libkrun-*composite actions assert exactly that inCI, and the header diff shows no removal.
🤖 Generated with Claude Code
Summary by CodeRabbit
libkrunversion for Linux end-to-end workflows to 1.19.4.Note
Pin upstream packages to libkrun 1.19.4
Updates the
locked_commitpin in minimal.toml toc854d6b1e0fdc67efd84fc664251079c0719987dand updates the libkrun version reference in README.md from 1.19.0 to 1.19.4.Macroscope summarized 7527d17.