Skip to content

fix(dev): Ubuntu 26.04 fallout — CUDA 13.2 + Python 3.14 + apt renames#1406

Merged
lusoris merged 2 commits into
masterfrom
fix/ubuntu-26-04-fallout
May 18, 2026
Merged

fix(dev): Ubuntu 26.04 fallout — CUDA 13.2 + Python 3.14 + apt renames#1406
lusoris merged 2 commits into
masterfrom
fix/ubuntu-26-04-fallout

Conversation

@lusoris
Copy link
Copy Markdown
Owner

@lusoris lusoris commented May 18, 2026

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`

    • driver debs, not the full toolkit. CUDA 13.2 aligns `crt/math_functions.h`
      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

docker build -f dev/Containerfile -t vmaf-dev-mcp:test-2604 .
docker run --rm vmaf-dev-mcp:test-2604 nvcc --version | head -3
docker run --rm vmaf-dev-mcp:test-2604 python3.14 --version
docker run --rm vmaf-dev-mcp:test-2604 which hipcc

Checklist (ADR-0108 six deliverables)

  • Research digest: no digest needed — targeted compatibility fix, no novel design choices
  • Decision matrix: in ADR-0603 `## Alternatives considered`
  • `AGENTS.md` invariant note: no rebase-sensitive invariants (see `docs/rebase-notes.md` entry)
  • Reproducer / smoke-test command: above
  • `changelog.d/fixed/ubuntu-26-04-fallout.md` fragment
  • `docs/rebase-notes.md` entry: "no rebase-sensitive invariants — all changes in build/CI layer"

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

lusoris and others added 2 commits May 19, 2026 00:45
…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>
@lusoris lusoris marked this pull request as ready for review May 18, 2026 23:06
@lusoris lusoris merged commit 843fe22 into master May 18, 2026
45 checks passed
@lusoris lusoris deleted the fix/ubuntu-26-04-fallout branch May 18, 2026 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant