Repository navigation
Take a dropped repo dependency from the pacman cache in the sandbox (4.0.0-B7) - #19
Merged
Merged
Conversation
…4.0.0-B7) lib32-tdb left [multilib] for the AUR while the host still ran its last repo build. sysforge never built it, so nothing in PKGDEST reached the container; the resolver warned "the container will use the repo version", but no repo carries a foreign package, and lib32-libcanberra died in the chroot on `target not found: lib32-tdb`. - build_sandbox.cached_repo_artifact: the installed version's signed repo file from pacman's cache (reuses pacman.cached_repo_pkg_file). Callers pass only foreign names sysforge never built: the cache can hold the same-pkgver repo build of a source-built package (2026-09-11). - resolve_dep_artifacts: for a foreign dep, look in PKGDEST, then the local repo dir, then the cache; refuse with SandboxUnavailable naming the package and `sysforge build <name>` when none has it. A repo-carried pruned dep still warns and continues. - local_repo.sync publishes such a package from the cache too, and its missing-artifact warning no longer promises a repo version for one. Unit tests only: the precondition (installed from a repo that later dropped the package) cannot be reproduced against live mirrors, and the cache and local-DB lookups run for real in the tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…de (4.0.0-B7) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Problem
A sandboxed
lib32-libcanberrabuild failed in the container witherror: target not found: lib32-tdb.lib32-tdbhas left[multilib]for the AUR. The host still runs the last repo build (1.4.15-1, signed by an Arch packager), sopacman -Qmlists it as foreign, but sysforge never built it, so there was no artifact inPKGDEST.resolve_dep_artifactsput it in the host-only set correctly, found no artifact, and warned "the container will use the repo version instead". No repo carries a foreign package, so the build could only fail 25s later inside the chroot.local_repo.syncmade the same claim.Fix
build_sandbox.cached_repo_artifact: returns the installed version's file from pacman's cache, reusingpacman.cached_repo_pkg_file, which accepts only a file with a detached.sig(a repo download, never a local build). Callers pass it only foreign names sysforge never built: the cache can hold the repo's same-pkgver build of a package sysforge rebuilt from source (the 2026-09-11 mesa skew).resolve_dep_artifacts: for a foreign dep, looks inPKGDEST, then the local repo dir (which keeps a copy pruned fromPKGDEST), then the cache (only when sysforge never built it). If none has it, raisesSandboxUnavailablebefore the container starts, naming the package andsysforge build <name>. A pruned dep that a repo still carries warns and continues as before.local_repo.syncpublishes such a package from the cache too. Its missing-artifact warning no longer promises a repo version for a foreign package.11-makepkg-wrapper.md+DESIGN.md), the sandbox guide, the guardrail insysforge/CLAUDE.md, and a4.0.0-B7release-note entry.Tests
cached_repo_pkg_file, and was not run against the old code.lint,check-standards,check-design,check-shippedandcheck-surfaceare clean.cached_repo_artifact("lib32-tdb")returns/var/cache/pacman/pkg/lib32-tdb-1.4.15-1-x86_64.pkg.tar.zst;llvm-libsis classed as source-built and stays out of the cache path. I haven't re-run thelib32-libcanberrabuild itself yet.Tier: unit tests only. The precondition, a package installed from a repo that has since dropped it, can't be reproduced against the live mirrors. The pacman cache, the signed-file check and the local repo dir are read for real in the tests; only their inputs are stubbed.
Checklist
docs/release-notes/unreleased.md, led by its roadmap IDmake surfacecommitted, and its diff matches what I meant to change (no surface change;check-surfaceclean)tools/retired_names.toml(none removed)docs/guides/) still describes it correctly (sandbox.mdupdated)make pre-release(ormake ci-local) passes locally (not run; the full suite and the static guards pass)🤖 Generated with Claude Code