Skip to content

Commit ab04bb9

Browse files
fix(nvidia): enforce single-repo invariant against negativo17 skew (#313)
The first scheduled weekly NVIDIA build (run 29184241364) failed because fedora-multimedia (negativo17) published nvidia-driver 610.43.03 while NVIDIA's CUDA repo was still at 610.43.02: dnf --best mixed the two sources and the transaction was unsolvable. ADR 0009's 'kmod + userland from the single NVIDIA repo' invariant was documented but not enforced. Exclude *nvidia* from fedora-multimedia for the install transaction so the whole driver family always resolves from the CUDA repo, whichever repo is ahead on a given day.
1 parent 7034198 commit ab04bb9

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

build_files/custom-kernel/install.sh

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,13 +331,19 @@ if [[ "${ENABLE_NVIDIA:-0}" == "1" ]]; then
331331
|| { err "no NVIDIA CUDA repo for fedora${_verid}/${_arch} (or fetch failed)"; exit 1; }
332332

333333
# kmod source + matching userland from the SINGLE NVIDIA repo, one
334-
# transaction → no kmod/userland version skew. The RPM %post runs a dkms
335-
# autoinstall against the HOST kernel that fails harmlessly (no host
336-
# kernel-devel in the build); coreos relies on the same, and we rebuild
337-
# explicitly with -k below. (If a future package makes that %post fatal to
338-
# the dnf transaction, add --setopt=tsflags=noscripts here AND an explicit
339-
# `dkms add -m nvidia -v "$DRIVER_VERSION"` before the build.)
334+
# transaction → no kmod/userland version skew. The excludepkgs setopt
335+
# ENFORCES that: the base image's fedora-multimedia (negativo17) also
336+
# ships nvidia-driver, and whenever it publishes ahead of NVIDIA's CUDA
337+
# repo (610.43.03 vs .02, run 29184241364, 2026-07-12) dnf --best mixes
338+
# the two sources and the transaction is unsolvable. The RPM %post runs
339+
# a dkms autoinstall against the HOST kernel that fails harmlessly (no
340+
# host kernel-devel in the build); coreos relies on the same, and we
341+
# rebuild explicitly with -k below. (If a future package makes that
342+
# %post fatal to the dnf transaction, add --setopt=tsflags=noscripts
343+
# here AND an explicit `dkms add -m nvidia -v "$DRIVER_VERSION"` before
344+
# the build.)
340345
dnf -y install --no-docs --best --setopt=install_weak_deps=False \
346+
--setopt='fedora-multimedia.excludepkgs=*nvidia*' \
341347
kmod-nvidia-open-dkms nvidia-driver nvidia-driver-libs nvidia-driver-cuda nvidia-persistenced nvidia-modprobe \
342348
|| { err "nvidia upstream kmod + userland install failed"; exit 1; }
343349

docs/spec/adr/0009-nvidia-variant.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,15 @@ the `modinfo -F signer` CN-match warning) are **superseded** by v1: userland
158158
left entirely to the existing loop (no CN gate). Status stays **experimental**
159159
— rollout steps 2 (build green in CI) and 3 (real-hardware runtime validation)
160160
are unchanged and still gate `:stable-nvidia`.
161+
162+
## Update 2026-07-12 — single-repo invariant enforced against negativo17
163+
164+
First scheduled weekly run (29184241364) failed: the base image's
165+
fedora-multimedia repo (negativo17) also ships `nvidia-driver`, and it had
166+
published 610.43.03 while NVIDIA's CUDA repo was still at .02. With `--best`,
167+
dnf tried to take the userland from negativo17 and the kmod from CUDA and the
168+
transaction became unsolvable. The "single NVIDIA repo, one transaction"
169+
invariant above was stated but not enforced; it now is, via
170+
`--setopt='fedora-multimedia.excludepkgs=*nvidia*'` on the install, so the
171+
whole nvidia family always resolves from the CUDA repo regardless of which
172+
repo happens to be ahead on a given day.

0 commit comments

Comments
 (0)