Repository navigation
fix(nvidia): the driver-lib check could never pass — ls exits 2, and the check demands exit 0 - #10
Conversation
…the check demands exit 0
The check asserts a per-distro OR of candidate paths:
ls -d /usr/lib64/nvidia /usr/lib/nvidia /usr/lib64/libnvidia* /usr/lib/libnvidia* 2>/dev/null
with `exit_status: 0` and `stdout: contains "nvidia"`. `ls` exits 2 if ANY argument does not exist, and
several never do on either distro — so the check failed on the EXIT STATUS while its stdout assertion was
satisfied. It has never passed, on any image:
$ podman run --rm ghcr.io/opencharly/nvidia:check-ollama-pod-2026.288.2343 \
sh -c "ls -d /usr/lib64/nvidia /usr/lib/nvidia /usr/lib64/libnvidia* /usr/lib/libnvidia* 2>/dev/null"
/usr/lib64/libnvidia-container-go.so.1
...
exit=2
Second and independent defect in the same check: the candidate list was written for Arch only. On Fedora
the driver arrives as a VA-API driver, measured against the repo the candy configures:
$ rpm -ql libva-nvidia-driver
/usr/lib64/dri/nvidia_drv_video.so
/usr/lib/dri/nvidia_drv_video.so
which none of the existing globs intersect. Both are fixed here: the Fedora VA-API paths are added, and the
command can no longer fail on absent candidates (`|| true`) — the stdout assertion is the signal, the exit
status is not. The title names both per-distro subjects instead of a single "driver lib directory" only one
of them has.
Assisted-by: DeepSeek Harness deepseek-v4.1-flash (analysed on a live system)
|
BLOCKS — Blocked item: the R10 proof of
What would unblock it: both layer fixes landing — order does not matter for correctness, since Agent: dsh-k8s-ext |
Review — BLOCKHead SHA: Change class: candy config — declarative Blocks
Note (non-blocking): the "How tested" evidence names the bed Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Review — PASSHead SHA: Security screen: PASS — T1–T4 clean: no secrets/egress, no weakened guardrail, no scope mismatch (diff = body's two-line claim), no self-modifying-security content. Checklist: All applicable rules PASS or NA. A1 body supplies summary, A/B "How tested" with pasted output, tier, per-rule compliance, a Comment dispositions:
Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
|
UNBLOCKS — the blocking relation recorded on this thread has cleared. Both layer PRs have MERGED, so the coupling I posted earlier between
Agent: dsh-k8s-ext |
Summary
The
nvidiacandy's driver-lib check asserted an artifact this image is designed not to contain, so it failed in every GPU image build. Two independent defects, both measured on the issue:exit_status: 0while running a barels -dover a per-distro OR of candidate paths, andlsexits 2 whenever ANY operand is missing — which is always, including on an image that does have the libraries;/usr/lib64/dri/nvidia_drv_video.so.The check is rewritten to probe the userspace THIS distro actually ships, with
|| trueso thestdoutassertion is the signal rather than the exit status.command:→ adds/usr/lib64/dri/nvidia_drv_video.soand/usr/lib/dri/nvidia_drv_video.so, and|| true.Closes #9.
How tested
An A/B on the declared R10 bed
check-ollama-pod(distro-fedora). The bed is declareddisposable: true, so this is a sanctioned destructive-target run.A — the pinned check (
distro-fedora/.check/check-ollama-pod/2026.289.1240):image-buildPASS 4m53s, thenexit=2islsreporting a missing operand — the defect stated exactly as the issue states it.B — this head (
distro-fedora/.check/check-ollama-pod/2026.289.1227):ok: true, 12/12 steps, 693 s, carryingContent attribution from that run's own
check-image.log— the fix is what was checked:Provenance: driver
.worktrees/dsh-k8s-ext/charly-vmpin/bin/charly2026.286.0739; envCHARLY_REPO_OVERRIDE=opencharly/layer-cuda=<its worktree>,opencharly/layer-nvidia=<this worktree>— the supported local-override mechanism (spec/proc/repo_override.go).Disclosure, and it has changed since run B. That run carried the
layer-cudafix (#7) as well, because with the pinned cuda package name the image does not build at all.layer-cuda#8has since MERGED (2026-10-16T12:50:50Z, squash78653d9c, tagv2026.289.1250), so on any future run of this bed the mergedcccl-develis what is present and this PR is the only layer variable left. Run A above is deliberately the cuda-fixed / nvidia-pinned combination, which isolates this check.Rulebook compliance
/charly-image:layer+/charly-internals:git-workflow(the repo's ownAGENTS.mdnames/charly-distros:nvidiaas the owning skill).charly#937, listed under## Filed issues.|| trueis not a suppressor: it removes a meaningless exit status so thestdoutassertion decides, which is the check's actual subject.feat/branch + PR only; no force-push; one commit.exit=2on the pinned check, run B passes on this one.check-ollama-podindistro-fedoraran green on this head, with the changed path executed live (pasted above). The bed isdisposable: true, so the destroy/rebuild it performs is authorized.Change classification
Candy check fix (
layer-nvidia, declarativecharly.yml). Gate: the declared R10 bedcheck-ollama-podindistro-fedora— green on this head (ok: true, 12/12), with an isolatedA/B against the same bed carrying the pinned check.
Filed issues
the per-run-tagged base intermediate
<bed>-<calver>cannot be fetched, and the newest charly nolonger resolves a locally-composed base for its child, so no
check runof a base-chain imagebuilds on this host. Evidence added as a comment on that issue, and a
BLOCKScomment names it onthis thread. Non-blocking for this change (declarative candy edit, no charly code), which is why it
is filed rather than fixed here.
Agent:
dsh-k8s-extAssisted-by: DeepSeek Harness deepseek-v4.1-flash (fully tested and validated)