diff --git a/docs/skills/index.json b/docs/skills/index.json index 09d2539c2..51d9cda99 100644 --- a/docs/skills/index.json +++ b/docs/skills/index.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-09-20", + "generated_at": "2026-09-22", "schema_version": "1.0", "skills": [ { @@ -467,8 +467,8 @@ "akmods" ], "description": "NVIDIA GPU support architecture and update procedures. Use when editing nvidia files in system_files/nvidia/, bluefin scripts, or dakota elements.", - "version": "1.1", - "last_updated": "2026-08-08", + "version": "1.2", + "last_updated": "2026-09-15", "doc_type": "reference" }, { diff --git a/docs/skills/index.md b/docs/skills/index.md index ca53a82be..a56fb1044 100644 --- a/docs/skills/index.md +++ b/docs/skills/index.md @@ -3,7 +3,7 @@ This file is a human-readable mirror of `index.json`. Both are generated by `scripts/generate_skill_index.py` — do not hand-edit either file. -Generated: 2026-09-20 · schema 1.0 · 40 skills +Generated: 2026-09-22 · schema 1.0 · 40 skills | id | category | status | one-line purpose | |---|---|---|---| diff --git a/docs/skills/nvidia/SKILL.md b/docs/skills/nvidia/SKILL.md index 1b9aab11c..77301ff9a 100644 --- a/docs/skills/nvidia/SKILL.md +++ b/docs/skills/nvidia/SKILL.md @@ -1,7 +1,7 @@ --- name: nvidia -version: "1.1" -last_updated: "2026-08-08" +version: "1.2" +last_updated: "2026-09-15" id: nvidia one_line_purpose: Maintain NVIDIA GPU support architecture and update procedures. entry_point: docs/skills/nvidia/SKILL.md @@ -39,14 +39,31 @@ metadata: | Repo | Base OS | Driver source | NCT installed | CDI preset | |---|---|---|---|---| -| `projectbluefin/common` | shared overlay | — | — | ✅ `system_files/nvidia/…/80-nvidia-container-toolkit.preset` | -| `projectbluefin/bluefin` | Fedora | `ublue-os/akmods-nvidia-open` OCI | ✅ (build script) | inherits from common | -| `projectbluefin/bluefin-lts` | CentOS Stream 10 | `ublue-os/akmods-nvidia-open` OCI | ✅ (nvidia build overlay) | ✅ `system_files_overrides/gdx/…/80-nvidia-container-toolkit.preset` | +| `projectbluefin/common` | shared overlay | — | — | ❌ none — see "`system_files/nvidia/` ships to nobody" below | +| `projectbluefin/bluefin` | Fedora | `ublue-os/akmods-nvidia-open` OCI | ✅ (build script) | ❌ none in either repo | +| `projectbluefin/bluefin-lts` | CentOS Stream 10 | `ublue-os/akmods-nvidia-open` OCI | ✅ (nvidia build overlay) | ✅ `system_files_overrides/nvidia/…/80-nvidia-container-toolkit.preset` | | `projectbluefin/dakota` | GNOME OS (BST) | `.run` installer, open kmod | ✅ (built from source) | ✅ `elements/bluefin-nvidia/nvidia-container-toolkit-preset.bst` | **dakota is the reference implementation.** When in doubt about the correct approach for nvidia-related changes, read `elements/bluefin-nvidia/` in dakota first. +### `system_files/nvidia/` ships to nobody + +The ctx stage of this repo's `Containerfile` publishes `/system_files/nvidia`, but **no +consumer copies it**: in `projectbluefin/bluefin`, `projectbluefin/bluefin-lts` and +`projectbluefin/utah`, every `COPY --from=common /system_files/...` line in the +`Containerfile` names `/system_files/shared` or `/system_files/bluefin` — none names +`/system_files/nvidia`. Verify with +`grep -n 'COPY --from=common /system_files' Containerfile` in each repo rather than by line +number; those line numbers drift. +Nothing in the org enables `ublue-nvidia-flatpak-runtime-sync.service`, and this repo ships +no preset for it. Editing `system_files/nvidia/` therefore changes no image today. + +`80-nvidia-container-toolkit.preset` has **never existed** in this repo +(`git log --all -- system_files/nvidia/usr/lib/systemd/system-preset` is empty), so bluefin +does not inherit a CDI preset from here either. Tracked in common#1124 — do not treat +`system_files/nvidia/` as a live delivery path until that issue is resolved. + --- ## CDI is the architecture — not OCI hooks diff --git a/docs/skills/nvidia/references/architecture.md b/docs/skills/nvidia/references/architecture.md index a26bdae4e..b2fff5597 100644 --- a/docs/skills/nvidia/references/architecture.md +++ b/docs/skills/nvidia/references/architecture.md @@ -52,10 +52,21 @@ containers fail to access GPUs because bootc does not use cgroup device delegati so all system Flatpaks are current after rebooting into a new NVIDIA image (not just the GL extension). Needed for Flatpak apps to use the GPU. Triggered by `ublue-nvidia-flatpak-runtime-sync.service` (TimeoutStartSec=900). -- `system_files/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset` — - enables `nvidia-cdi-refresh.{path,service}` for CDI spec auto-generation. -Changes here flow into **all** nvidia-variant images at next build. Be surgical. +**Not currently delivered.** The ctx stage publishes `/system_files/nvidia`, but every +consumer copies `/system_files/shared` and `/system_files/bluefin` only — in bluefin, +bluefin-lts and utah, `grep -n 'COPY --from=common /system_files' Containerfile` returns +only `shared` and `bluefin` lines, never `nvidia` (cited by content because the line +numbers in those repos drift). No +preset here and no `systemctl enable` anywhere in the org references +`ublue-nvidia-flatpak-runtime-sync.service`, so neither the unit nor the helper is present in +a built image. `tests/test_nvidia_flatpak_sync.bats` asserts against the files on disk and +passes regardless. Changes here reach **no** image until common#1124 is resolved. + +There is no `system_files/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset` +in this repo and there never has been; CDI auto-generation is enabled per-consumer +(bluefin-lts `system_files_overrides/nvidia/…`, dakota `elements/bluefin-nvidia/…`) and the +Fedora bluefin variant has no such preset in either repo. ### `projectbluefin/bluefin` @@ -78,14 +89,17 @@ exclusion even after adding the official toolkit. ### `projectbluefin/bluefin-lts` (nvidia build overlay) -`gdx/` is the internal build override directory name for the nvidia stack in LTS — it is not a user-facing variant or image name. +`nvidia/` is the internal build override directory name for the nvidia stack in LTS — it is +the override directory name, not a user-facing image name. Arch-specific companions +(`x86_64-nvidia/`, `aarch64-nvidia/`) exist alongside it. -- `build_scripts/overrides/gdx/20-nvidia.sh` — nvidia install script -- `system_files_overrides/gdx/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset` +- `build_scripts/overrides/nvidia/20-nvidia.sh` — nvidia install script +- `system_files_overrides/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset` -The LTS build uses an override directory system. `build.sh` calls `run_buildscripts_for gdx` -(runs `build_scripts/overrides/gdx/*.sh`) and `copy_systemfiles_for gdx` (copies -`system_files_overrides/gdx/` to `/`). Nvidia changes for LTS go in those two locations. +The LTS build uses an override directory system. `build_scripts/build.sh` calls +`run_buildscripts_for nvidia` (runs `build_scripts/overrides/nvidia/*.sh`) and +`copy_systemfiles_for nvidia` (copies `system_files_overrides/nvidia/` to `/`), plus the +arch-specific variants. Nvidia changes for LTS go in those two locations. The LTS build installs the *full* `nvidia-container-toolkit` package (not `-base`) from the `fedora-nvidia` repo that the akmods bundle enables. This is pre-existing behavior; don't diff --git a/system_files/nvidia/README.md b/system_files/nvidia/README.md index 6b82deda1..0b6e68062 100644 --- a/system_files/nvidia/README.md +++ b/system_files/nvidia/README.md @@ -1,6 +1,16 @@ # system_files/nvidia/ — NVIDIA Overlay -This layer is applied on top of `shared/` and `bluefin/` only for the NVIDIA GPU image variant. +This layer is intended to be applied on top of `shared/` and `bluefin/` for the NVIDIA GPU +image variant. + +> **Status: not consumed.** The `Containerfile` ctx stage publishes `/system_files/nvidia`, +> but no downstream image copies it — in `projectbluefin/bluefin`, +> `projectbluefin/bluefin-lts` and `projectbluefin/utah`, every +> `COPY --from=common /system_files/...` line copies `/system_files/shared` or +> `/system_files/bluefin`, never `/system_files/nvidia` (check with +> `grep -n 'COPY --from=common /system_files' Containerfile`; line numbers drift), and +> nothing in the org enables `ublue-nvidia-flatpak-runtime-sync.service`. Files added here +> reach no image. See common#1124 before relying on this path. ## Current contents