From 27617e4cb00cb4905c001bd5ff36371c7b0ff31c Mon Sep 17 00:00:00 2001 From: claude-noether Date: Thu, 21 May 2026 21:24:03 +0200 Subject: [PATCH] =?UTF-8?q?daedalus-v4l2:=203bc0da1=20->=206e6dfa1=20?= =?UTF-8?q?=E2=80=94=20dlopen=20Kwiboo=20soname=2062=20(#16)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/build.yml | 21 +++++++++++++-------- arch/daedalus-v4l2/PKGBUILD | 21 +++++++++++---------- debian/daedalus-v4l2/build-deb.sh | 21 ++++++++++++--------- debian/daedalus-v4l2/debian/changelog | 19 +++++++++++++++++++ 4 files changed, 55 insertions(+), 27 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 0e2ac34ac..dc21be8ef 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1159,13 +1159,18 @@ jobs: retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } export DEBIAN_FRONTEND=noninteractive retry apt-get update -qq - # libav*-dev provide the headers daedalus daemon dlopens at - # runtime — Debian's stock packages match the trixie ABI the - # daemon will encounter on Pi 5 hosts (both ship libavcodec - # 61.x). The fourier ffmpeg fork isn't needed here; the - # daemon never link-binds against libav (Option γ — dlopen - # at runtime), so any header set with the right struct - # definitions works. + # FFmpeg headers + sonames the daemon dlopens. As of + # daedalus-v4l2 PR #16 (commit 514da29), the daemon targets + # the Kwiboo fork's libavcodec.so.62 / libavformat.so.62 / + # libavutil.so.60 at /opt/fourier — so the build needs + # /opt/fourier/include and /opt/fourier/lib/pkgconfig. + # ffmpeg-v4l2-request-fourier provides both (plus the + # runtime libs the .deb will dlopen on the target host; + # we install it as a build-dep here and the dpkg-shlibdeps + # step pulls it into the daemon .deb's Depends automatically). + # Debian-stock libav*-dev removed — would conflict on + # /usr/include/libavcodec/avcodec.h vs /opt/fourier's copy. + # # libvulkan-dev + glslang-tools: needed by the in-build # daedalus-fourier fetch (build-deb.sh fetches the sibling # library, cmake-builds it into a temp prefix, then the @@ -1176,7 +1181,7 @@ jobs: # reauktion/daedalus-v4l2 PR #13. retry apt-get install -y --no-install-recommends \ build-essential cmake ninja-build pkg-config git \ - libavcodec-dev libavformat-dev libavutil-dev libdrm-dev \ + ffmpeg-v4l2-request-fourier libdrm-dev \ libvulkan-dev glslang-tools \ linux-libc-dev \ curl ca-certificates openssh-client rsync dpkg-dev diff --git a/arch/daedalus-v4l2/PKGBUILD b/arch/daedalus-v4l2/PKGBUILD index 86f2027c0..92aeb3f83 100644 --- a/arch/daedalus-v4l2/PKGBUILD +++ b/arch/daedalus-v4l2/PKGBUILD @@ -16,18 +16,19 @@ pkgname=daedalus-v4l2 _upstreampkg=daedalus-v4l2 -# 3bc0da1 = picks up daedalus-v4l2 PR #15 — per-frame `decode_us=N` -# in the `decoder: OK` log line + a periodic `decoder stats` summary -# every 60 frames. Pure observability — baseline for the -# substitution work in daedalus-v4l2#11 step 2. Daemon still needs -# daedalus-fourier at build time (Arch packaging for that is a -# follow-up; Debian side fetches inline via build-deb.sh). -_commit=3bc0da168cc0aa2271bfb6bc2864b49c48291185 +# 6e6dfa1 = picks up daedalus-v4l2 PR #16 — daemon now dlopens +# the Kwiboo fourier fork's libavcodec.so.62 / libavformat.so.62 / +# libavutil.so.60 at /opt/fourier instead of Debian-stock soname +# 61/61/59. First step on the daedalus-fourier substitution arc +# (daedalus-v4l2#11). Daemon still needs daedalus-fourier at +# build time (Arch packaging for that is a follow-up; Debian side +# fetches inline via build-deb.sh). +_commit=6e6dfa144da7bc7fa8be50c8da91d7d1c6132a2c # 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each # Phase 8.x close. pkgver() recomputes at build time. -pkgver=0.1.0.r39.3bc0da1 -pkgrel=1 # reset for new upstream pin (3bc0da1 — decode_us + stats) +pkgver=0.1.0.r41.6e6dfa1 +pkgrel=1 # reset for new upstream pin (6e6dfa1 — soname 62 via /opt/fourier) pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)" arch=('aarch64') url="https://git.reauktion.de/reauktion/daedalus-v4l2" @@ -35,7 +36,7 @@ license=('BSD-2-Clause' 'GPL-2.0-or-later') # Daemon dlopens libavformat.so.61 / libavcodec.so.61 / libavutil.so.59 # at runtime (Option γ — see daemon/src/ffmpeg_loader.h). ffmpeg # provides those; we don't link them. -depends=('ffmpeg' 'libdrm') +depends=('ffmpeg-v4l2-request-fourier' 'libdrm') # Headers from libav*-dev needed at compile time for type-safe function # pointer signatures; pkg-config locates them. makedepends=('cmake' 'ninja' 'pkgconf' 'git' 'ffmpeg') diff --git a/debian/daedalus-v4l2/build-deb.sh b/debian/daedalus-v4l2/build-deb.sh index 21c54eec6..5c81b7a99 100755 --- a/debian/daedalus-v4l2/build-deb.sh +++ b/debian/daedalus-v4l2/build-deb.sh @@ -11,14 +11,17 @@ # Upstream repo: https://git.reauktion.de/reauktion/daedalus-v4l2 set -euo pipefail -# 3bc0da1 = picks up daedalus-v4l2 PR #15 — per-frame `decode_us=N` -# in the `decoder: OK` log line + a periodic `decoder stats` summary -# every 60 frames (codec, fps, avg decode_us, MBs/s, B/MB). Pure -# observability — no behaviour change. Baseline metrics for the -# substitution work in daedalus-v4l2#11 step 2. -UPSTREAM_COMMIT=3bc0da168cc0aa2271bfb6bc2864b49c48291185 -PKGVER=0.1.0+r39+g3bc0da1 -PKGREL=1 # reset for new upstream pin (3bc0da1 — decode_us + stats) +# 6e6dfa1 = picks up daedalus-v4l2 PR #16 — daemon now dlopens +# the Kwiboo fourier fork's libavcodec.so.62 / libavformat.so.62 / +# libavutil.so.60 at /opt/fourier instead of Debian-stock soname +# 61/61/59. First step on the daedalus-fourier substitution arc +# (daedalus-v4l2#11): routes the daemon through the libavcodec +# source tree we own in marfrit-packages. Headers + .pc files +# come from ffmpeg-v4l2-request-fourier (installed by the CI +# workflow before this script runs; see PKG_CONFIG_PATH below). +UPSTREAM_COMMIT=6e6dfa144da7bc7fa8be50c8da91d7d1c6132a2c +PKGVER=0.1.0+r41+g6e6dfa1 +PKGREL=1 # reset for new upstream pin (6e6dfa1 — soname 62 via /opt/fourier) # daedalus-fourier pin. d87239d = marfrit/daedalus-fourier PR #1 merge # (install rules + pkg-config, enables this consumer to find_package @@ -64,7 +67,7 @@ SRCDIR=daedalus-v4l2 # Build daemon (CMake) — point pkg-config at the daedalus-fourier # temp prefix so pkg_check_modules(DAEDALUS_FOURIER …) resolves to it. cd "$SRCDIR/daemon" -PKG_CONFIG_PATH="$FOURIER_PREFIX/lib/pkgconfig" \ +PKG_CONFIG_PATH="$FOURIER_PREFIX/lib/pkgconfig:/opt/fourier/lib/pkgconfig" \ cmake -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr diff --git a/debian/daedalus-v4l2/debian/changelog b/debian/daedalus-v4l2/debian/changelog index f40565a9e..eb27ae6d6 100644 --- a/debian/daedalus-v4l2/debian/changelog +++ b/debian/daedalus-v4l2/debian/changelog @@ -1,3 +1,22 @@ +daedalus-v4l2 (0.1.0+r41+g6e6dfa1-1) bookworm trixie; urgency=medium + + * Bump to 6e6dfa1 — daedalus-v4l2 PR #16. Daemon dlopens Kwiboo + fourier fork's libavcodec.so.62 / libavformat.so.62 / + libavutil.so.60 at /opt/fourier instead of Debian-stock + soname 61/61/59. First step on the daedalus-fourier + substitution arc (daedalus-v4l2#11): the next PR series + layers daedalus_recipe_dispatch_h264_* substitution patches + into ffmpeg-v4l2-request-fourier's H264DSPContext NEON init, + reaching the daemon's production decode path. + * Build: PKG_CONFIG_PATH now includes /opt/fourier/lib/pkgconfig + so daemon's pkg_check_modules picks up the Kwiboo .pc files. + * CI workflow build-deps: libavcodec-dev / libavformat-dev / + libavutil-dev (Debian stock 7.1.3) → ffmpeg-v4l2-request-fourier + (provides /opt/fourier/include + .pc files). + * Wire protocol unchanged. No daedalus-v4l2-dkms bump. + + -- Markus Fritsche Thu, 21 May 2026 21:30:00 +0000 + daedalus-v4l2 (0.1.0+r39+g3bc0da1-1) bookworm trixie; urgency=medium * Bump to 3bc0da1 — picks up daedalus-v4l2 PR #15. Per-frame