fix(dev): Ubuntu 26.04 fallout — CUDA 13.2 + Python 3.14 + apt renames#1406
Merged
Conversation
…ium (ADR-0603) Renovate PR #1402 bumped the dev container base image from ubuntu:24.04 to ubuntu:26.04 (Resolute Raccoon). Ubuntu 26.04 ships glibc 2.43, Python 3.14 as the default interpreter, and a reorganised Mesa gallium packaging — all of which break the container build. Fixes applied: 1. CUDA: pin cuda-toolkit-13-2 from the ubuntu2404 NVIDIA apt repo. - ubuntu2604 apt channel exists but carries only cuda-compat-13-2 + driver packages, not the full toolkit. ubuntu2404 packages cross-install cleanly. - CUDA 13.2 aligns crt/math_functions.h with glibc 2.43's rsqrt noexcept annotation, resolving the C2059/C2085 cascade from NVCC's host-compile pass. - Bump CI Jimver/cuda-toolkit-action from 13.0.0 to 13.2.0 on Linux and Windows legs for parity. 2. CUDA belt-and-suspenders: add -D__MATH_NO_INLINES to nvcc cuda_flags in libvmaf/src/meson.build. Suppresses glibc's inline math-function definitions (including the noexcept-annotated rsqrt overload) to prevent future CUDA patch regressions if noexcept alignment drifts again. 3. Python 3.14: replace python3.12/python3.12-venv/python3.12-dev with python3.14 equivalents in Containerfile Stage 1 (python3.12 is not in the Ubuntu 26.04 archive). Update Stage 4 to use python3.14 -m venv. Raise requires-python ceilings from <3.13 to <3.15 in vmaf-tune and ai pyproject.toml. 4. Mesa: rename mesa-va-drivers to mesa-libgallium. Ubuntu 26.04 reorganised the Mesa gallium driver packaging; the new package ships the same radeonsi_drv_video.so (AMD) and iris_drv_video.so (Intel) VA-API backends. Update post-install verification RUN to check mesa-libgallium. 5. ROCm: document the noble-only situation. AMD has not published a resolute (Ubuntu 26.04) ROCm channel; noble packages install correctly on resolute. Comment updated; no URL change needed. ADR-0603. Triggered by Renovate PR #1402. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…26.04 Ubuntu 26.04 (Resolute Raccoon) renamed the libxml2 shared library from libxml2.so.2 (packaged as libxml2 on Ubuntu 24.04) to libxml2.so.16 (packaged as libxml2-16). ROCm 7.2.3's bundled LLD (/opt/rocm-7.2.3/lib/llvm/bin/lld) was linked against the old soname and fails at .hsaco link time when compiling HIP kernels: lld: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory Fix: install libxml2-16 alongside the rocm-hip-runtime-dev packages and create a libxml2.so.2 -> libxml2.so.16.1.2 compat symlink in the same RUN layer. The libxml2 C API is backward-compatible; the soname bump was a Debian packaging decision, not an ABI break. Also updates ADR-0603, its README index row, and the changelog fragment to document this sixth fallout item. ADR-0603. Co-Authored-By: Claude Sonnet 4.6 <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.
Summary
Renovate PR #1402 bumped the dev container base image from `ubuntu:24.04` to
`ubuntu:26.04` (Resolute Raccoon). Ubuntu 26.04 ships glibc 2.43, Python 3.14
as the default interpreter, a reorganised Mesa gallium packaging, and a renamed
libxml2 soname — all of which break the container build. This PR fixes all
fallout in one pass.
Fixes applied (ADR-0603):
CUDA 13.2: pin `cuda-toolkit-13-2` from the `ubuntu2404` NVIDIA apt
repo. The `ubuntu2604` apt channel exists but only carries `cuda-compat-13-2`
with glibc 2.43's `rsqrt(double) noexcept(true)` annotation, resolving the
C2059/C2085 NVCC cascade. Belt-and-suspenders: add `-D__MATH_NO_INLINES` to
`nvcc` flags in `libvmaf/src/meson.build`.
Python 3.14: replace `python3.12` / `python3.12-venv` / `python3.12-dev`
with `python3.14` equivalents (3.12 not in Ubuntu 26.04 archive). Stage 4
uses `python3.14 -m venv`. Raise `requires-python` ceilings from `<3.13` to
`<3.15` in `tools/vmaf-tune/pyproject.toml` and `ai/pyproject.toml`.
`mesa-va-drivers` → `mesa-libgallium`: Ubuntu 26.04 reorganised Mesa
gallium driver packaging; the new package ships the same VA-API backends.
Post-install verification `RUN` updated to check `mesa-libgallium`.
`libxml2.so.2` compat symlink for ROCm LLD: Ubuntu 26.04 renamed
`libxml2` → `libxml2-16` and the soname from `.so.2` to `.so.16`. ROCm
7.2.3's bundled LLD fails at `.hsaco` link time with `cannot open shared
object file: libxml2.so.2`. Fix: install `libxml2-16` + create
`libxml2.so.2 → libxml2.so.16.1.2` compat symlink alongside the
`rocm-hip-runtime-dev` install step.
ROCm noble channel: documented that AMD has not published a `resolute`
channel yet; `noble` packages cross-install cleanly on Ubuntu 26.04.
CI CUDA pin: bump Jimver/cuda-toolkit-action from `13.0.0` to `13.2.0`
on all legs (Linux + Windows) in `libvmaf-build-matrix.yml`.
Reproducer / smoke-test command
Checklist (ADR-0108 six deliverables)
State.md
No bugs opened or closed — this is a build-system compatibility fix with no libvmaf correctness impact.
docs/
`docs/adr/0603-ubuntu-26-04-fallout-fixes.md` — ADR with full context, decision, alternatives, consequences.
`docs/adr/README.md` — index row added.
`docs/rebase-notes.md` — entry added.
No user-discoverable surfaces changed (CLI flags, public headers, MCP tools, feature extractors, models unchanged).
🤖 Generated with Claude Code