ci: convert daedalus-v4l2{,-dkms}-debian install steps to apt-get #50

Merged
marfrit merged 1 commits from claude-noether/marfrit-packages:noether/ci-fourier-debian-apt into main 2026-05-20 17:06:22 +00:00
Contributor

Unblock DAEMON-PPS — fix pacman-on-Debian breakage in PR #47 fallout

Bug

PR #47 moved the daedalus-v4l2-debian + daedalus-v4l2-dkms-debian jobs from runs-on: arch-aarch64 to runs-on: debian-aarch64 but left the install steps using pacman -Syu, which doesn't exist on the Debian runner. The break was latent for runs #133-134 because the rebuild guard skipped both jobs (their pkgvers didn't move between PRs #47 and #48).

PR #49 (DAEMON-PPS daedalus bump to 0.1.0+r20+g3dd0eb0) actually exercised the jobs in run #135 — daedalus-v4l2-debian failed instantly on pacman -Syu.

Fix

Replace the pacman invocations with apt-get equivalents:

  • daedalus-v4l2-debian: install build-essential cmake ninja-build pkg-config git libavcodec-dev libavformat-dev libavutil-dev libdrm-dev linux-libc-dev curl ca-certificates openssh-client rsync dpkg-dev via apt. Drop the [marfrit] ffmpeg-v4l2-request-fourier preinstall — Debian's stock libavcodec-dev / libavformat-dev / libavutil-dev provide matching headers (both trixie ffmpeg and the daedalus daemon's runtime dlopen target are libavcodec 61.x). The daemon never link-binds against libav (Option γ — dlopen at runtime), so any header set with the right struct definitions works.

  • daedalus-v4l2-dkms-debian: install dpkg-dev openssh-client rsync curl ca-certificates tar gzip via apt.

Verified locally

Reproduced the daedalus-v4l2-debian build on higgs (Debian trixie aarch64, equivalent env to bohr):

bash -c 'curl ... | tar xz; cd debian/daedalus-v4l2; ./build-deb.sh'
...
[10/10] Linking C executable daedalus_v4l2_daemon
cc -Wall -Wextra -O2 -I../include test_chardev_pingpong.c -o test_chardev_pingpong
cc -Wall -Wextra -O2 -I../include test_m2m_decode.c -o test_m2m_decode
cc -Wall -Wextra -O2 -I../include test_m2m_stream.c -o test_m2m_stream
dpkg-deb: building package 'daedalus-v4l2' in 'daedalus-v4l2_0.1.0+r20+g3dd0eb0-1_arm64.deb'

Out of scope (flagged for follow-up)

ffmpeg-v4l2-request-debian (line ~907) and mpv-fourier-debian (line ~1048) have the same pacman-on-Debian bug from PR #47. They're skipped right now because their pkgvers haven't moved since the runs-on switch. They'll need the same treatment the next time they bump. Not fixing them in this PR to keep the change focused on unblocking DAEMON-PPS — happy to do that as a follow-up.

Generated with Claude Code

## Unblock DAEMON-PPS — fix pacman-on-Debian breakage in PR #47 fallout ### Bug PR #47 moved the daedalus-v4l2-debian + daedalus-v4l2-dkms-debian jobs from runs-on: arch-aarch64 to runs-on: debian-aarch64 but left the install steps using `pacman -Syu`, which doesn't exist on the Debian runner. The break was latent for runs #133-134 because the rebuild guard skipped both jobs (their pkgvers didn't move between PRs #47 and #48). PR #49 (DAEMON-PPS daedalus bump to 0.1.0+r20+g3dd0eb0) actually exercised the jobs in run #135 — daedalus-v4l2-debian failed instantly on `pacman -Syu`. ### Fix Replace the pacman invocations with apt-get equivalents: - daedalus-v4l2-debian: install build-essential cmake ninja-build pkg-config git libavcodec-dev libavformat-dev libavutil-dev libdrm-dev linux-libc-dev curl ca-certificates openssh-client rsync dpkg-dev via apt. Drop the [marfrit] ffmpeg-v4l2-request-fourier preinstall — Debian's stock libavcodec-dev / libavformat-dev / libavutil-dev provide matching headers (both trixie ffmpeg and the daedalus daemon's runtime dlopen target are libavcodec 61.x). The daemon never link-binds against libav (Option γ — dlopen at runtime), so any header set with the right struct definitions works. - daedalus-v4l2-dkms-debian: install dpkg-dev openssh-client rsync curl ca-certificates tar gzip via apt. ### Verified locally Reproduced the daedalus-v4l2-debian build on higgs (Debian trixie aarch64, equivalent env to bohr): ``` bash -c 'curl ... | tar xz; cd debian/daedalus-v4l2; ./build-deb.sh' ... [10/10] Linking C executable daedalus_v4l2_daemon cc -Wall -Wextra -O2 -I../include test_chardev_pingpong.c -o test_chardev_pingpong cc -Wall -Wextra -O2 -I../include test_m2m_decode.c -o test_m2m_decode cc -Wall -Wextra -O2 -I../include test_m2m_stream.c -o test_m2m_stream dpkg-deb: building package 'daedalus-v4l2' in 'daedalus-v4l2_0.1.0+r20+g3dd0eb0-1_arm64.deb' ``` ### Out of scope (flagged for follow-up) ffmpeg-v4l2-request-debian (line ~907) and mpv-fourier-debian (line ~1048) have the same pacman-on-Debian bug from PR #47. They're skipped right now because their pkgvers haven't moved since the runs-on switch. They'll need the same treatment the next time they bump. Not fixing them in this PR to keep the change focused on unblocking DAEMON-PPS — happy to do that as a follow-up. Generated with Claude Code
claude-noether added 1 commit 2026-05-20 17:04:06 +00:00
PR #47 moved the daedalus-v4l2-debian + daedalus-v4l2-dkms-debian
jobs from runs-on: arch-aarch64 to runs-on: debian-aarch64, but
left the install-deps steps using `pacman -Syu` — which doesn't
exist on the Debian runner.  Both jobs were latent-broken; the
break only surfaces once a daedalus pkgver actually changes (the
rebuild guard skipped them in runs #133-134 since nothing about
daedalus moved between PR #47 and PR #48).

PR #49 bumped both daedalus packages to 0.1.0+r20+g3dd0eb0 (the
DAEMON-PPS H.264 SPS/PPS NAL synth landing) — so run #135's
daedalus-debian + daedalus-dkms-debian jobs actually executed and
hit the broken pacman step.  Result: instant failure on `pacman -Syu`.

Fix: replace the pacman invocations with apt-get equivalents.
For daedalus-v4l2-debian, drop the [marfrit] ffmpeg-v4l2-request-
fourier preinstall — Debian's stock libavcodec-dev / libavformat-
dev / libavutil-dev provide matching headers (both trixie ffmpeg
and the daedalus daemon's runtime dlopen target are libavcodec
61.x), and the daemon never link-binds against libav (Option γ —
dlopen at runtime), so any header set with the right struct
definitions works.

Verified end-to-end on higgs (Debian trixie aarch64, equivalent
to bohr): clone the source tarball, run build-deb.sh, produces
daedalus-v4l2_0.1.0+r20+g3dd0eb0-1_arm64.deb cleanly (10/10
ninja steps, daedalus_v4l2_daemon binary linked).

NOTE: ffmpeg-v4l2-request-debian (line ~907) and mpv-fourier-
debian (line ~1048) have the same pacman-on-Debian bug from
PR #47 but are still skipped because their pkgvers haven't moved.
Not fixing those in this PR to keep the change focused on
unblocking DAEMON-PPS verification — they'll need the same
treatment the next time they bump.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
marfrit merged commit 64269d69ee into main 2026-05-20 17:06:22 +00:00
marfrit deleted branch noether/ci-fourier-debian-apt 2026-05-20 17:06:22 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/marfrit-packages#50