bohr runner: sid sources leak transitively into trixie-target builds — root cause of #78 #81
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PR #78 (
ffmpeg-v4l2-request-fourier: drop--enable-libxml2) was a symptom-mitigation, not a root-cause fix. The actual root cause: bohr (debian-aarch64 runner) has sid sources configured and a transitive dependency from a-t sidapt-get install pulledlibxml2-devfrom 2.12 (trixie, SONAME 2) up to 2.15.2 (sid, SONAME 16) silently. Subsequent ffmpeg builds on bohr then linkedlibavformat.so.62againstlibxml2.so.16, which trixie consumers (higgs, hertz) cannot load — daedalus-v4l2 daemondlopenfails, Firefox VAAPI playback breaks.Filing this so the diagnosis is on the record and the fix history doesn't get lost in conversation.
Forensic timeline
2026-05-18 22:32-22:37 (bohr apt history):
The
-t sidwas needed to bootstrap rustc/cargo/cbindgen for Firefox 150 builds (which require rust ≥ 1.90). Transitive: sidrustc-> sidlibllvm21-> sidlibxml2-16-> sidlibxml2-devupgrade. Trixie pin file/etc/apt/preferences.d/no-sid-binaries.pref(Priority: 100) was bypassed by the explicit-t sidtarget-release flag.2026-05-2x: ffmpeg-v4l2-request-fourier build pkgrel=5 ran with the bumped
libxml2-devon bohr../configure --enable-libxml2linked against the sid header, embeddingNEEDED libxml2.so.16in the producedlibavformat.so.62. The runtime libxml2 on bohr was still 2.12 (SONAME 2), so the binary couldn't even load on its build host — butdpkg-buildpackagedoesn't run binary-runtime tests, so the broken .deb shipped.2026-05-21: higgs upgraded to the broken pkgrel=5; daedalus-v4l2 daemon
dlopen libavformat.so.62failed withlibxml2.so.16: cannot open shared object file; Firefox VAAPI silently fell back to software; user reverted higgs to cached pkgrel=4. PR #78 landed pkgrel=6 dropping--enable-libxml2to side-step.2026-05-22: root cause investigated. bohr's
apt-cache policy libxml2-devshowed*** 2.15.2 100(installed sid) vs2.12.7 500(candidate trixie) — confirmed installed version was sid.Mitigation applied (2026-05-22)
Per-package pin file added on bohr at
/etc/apt/preferences.d/libxml2-trixie-pin.pref:Plus explicit downgrade:
Side effect: the sid
rustc/cargo/libllvm21/libstd-rust-*were removed (they hadlibxml2-16as a hard dep). Firefox-fourier CI builds bootstrap rustc viacurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh+cargo install --locked cbindgenanyway (per the EC2 build script pattern in use since 2026-05-20), so this is not a regression.Status after mitigation
libxml2-dev: 2.12.7-deb13u2 (trixie, SONAME 2), pinned at priority 1001libxml2: 2.12.7-deb13u2 (trixie)libxml2-16: removedlibxml2*can installBelt-and-suspenders status
PR #78's
--enable-libxml2removal is now redundant for libxml2 specifically — bohr can no longer produce a sid-linked binary. But the patch is harmless to keep (FFmpeg's libxml2-backed DASH demuxer is genuinely unused on our fleet per the PR body), so leave it. Revert only if a future consumer actually needs DASH demux through libavformat.Open: this is one of many
Other sid packages currently installed on bohr (via the same
-t sidmechanism — see apt history line):libnss3/libnss3-dev3.123.1 (sid)libnspr4/libnspr4-dev4.38.2 (sid)ffmpeg-v4l2-request-fourier=2:8.1+rfourier+gb57fbbe-4(our own package — separate concern)Each of these is a potential future #78. If any consumer-targeted package's
./configuredecides to link against one of those headers, we hit the same wall.Robust long-term options (not done in this issue):
bohr-purewith no sid sources, route firefox-fourier-only builds to bohr and everything else to bohr-pure. Cleanest but ~bohr-clone effort.Closing this issue once a decision on (1)-(3) is made, or leaving it open as the umbrella for #78-class regressions.
Related