arch/daedalus-v4l2: new package — userspace daemon + tools
PKGBUILD pinning daedalus-v4l2 @ f04d700 (Phase 8.13 close).
Installs:
- /usr/bin/daedalus_v4l2_daemon — the FFmpeg-backed decode daemon
- /usr/libexec/daedalus-v4l2/{test_chardev_pingpong,test_m2m_decode,
test_m2m_stream} — verification harnesses
- /usr/include/daedalus_v4l2_proto.h — shared kernel↔daemon wire
protocol (for third-party chardev clients)
- /usr/share/doc/daedalus-v4l2/ — README + Phase 8.x closure docs
Runtime deps: ffmpeg (libavformat/libavcodec/libavutil dlopen'd
at runtime per Option γ — daemon binary is link-clean from
FFmpeg), libdrm.
optdepends:
- daedalus-v4l2-dkms: companion kernel module
- libva-v4l2-request-fourier: VAAPI consumer routing through us
Sibling Debian package: debian/daedalus-v4l2/
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# Maintainer: Markus Fritsche <fritsche.markus@gmail.com>
|
||||
#
|
||||
# daedalus-v4l2 — userspace daemon + V4L2 m2m test tools.
|
||||
#
|
||||
# Pair to daedalus-v4l2-dkms (kernel module). Together they expose
|
||||
# /dev/videoNN + /dev/mediaNN as a V4L2 stateless decoder shim on Pi 5 /
|
||||
# CM5, decoding VP9 / AV1 / H.264 via dlopen'd FFmpeg in a single-
|
||||
# threaded daemon and shipping decoded NV12 / P010 back through dmabuf.
|
||||
# Consumed end-to-end by libva-v4l2-request-fourier (>= 1.0.0.r376) so
|
||||
# `ffmpeg -hwaccel vaapi` against vp9_small.ivf produces byte-exact NV12.
|
||||
#
|
||||
# Project: https://git.reauktion.de/reauktion/daedalus-v4l2
|
||||
# Sibling kernel package: daedalus-v4l2-dkms
|
||||
# Sibling consumer: libva-v4l2-request-fourier
|
||||
|
||||
pkgname=daedalus-v4l2
|
||||
_upstreampkg=daedalus-v4l2
|
||||
|
||||
# Pin the daedalus-v4l2 tip. f04d700 = "Phase 8.13: byte-exact end-to-
|
||||
# end via libva (consumer target hit)" — first commit where the full
|
||||
# ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands a
|
||||
# pixel-correct decoded frame back in ffmpeg. Promote to a later pin
|
||||
# only after a future phase closes cleanly.
|
||||
_commit=f04d7000f858fe51d867aba14a529d3aef4fbd54
|
||||
|
||||
# 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.r15.f04d700
|
||||
pkgrel=1
|
||||
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"
|
||||
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')
|
||||
# Headers from libav*-dev needed at compile time for type-safe function
|
||||
# pointer signatures; pkg-config locates them.
|
||||
makedepends=('cmake' 'ninja' 'pkgconf' 'git' 'ffmpeg')
|
||||
optdepends=('daedalus-v4l2-dkms: kernel module providing /dev/video0 + /dev/daedalus-v4l2'
|
||||
'libva-v4l2-request-fourier: VA-API consumer routing through this daemon')
|
||||
|
||||
source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
pkgver() {
|
||||
cd "${srcdir}/${_upstreampkg}"
|
||||
printf '0.1.0.r%s.%s' \
|
||||
"$(git rev-list --count HEAD)" \
|
||||
"$(git rev-parse --short=7 HEAD)"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${_upstreampkg}/daemon"
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
cmake --build build
|
||||
|
||||
cd "${srcdir}/${_upstreampkg}/tools"
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}/${_upstreampkg}"
|
||||
|
||||
# Daemon binary
|
||||
install -Dm755 daemon/build/daedalus_v4l2_daemon \
|
||||
"${pkgdir}/usr/bin/daedalus_v4l2_daemon"
|
||||
|
||||
# Test tools (under /usr/libexec to keep them out of the default PATH
|
||||
# — they're for verification, not daily use).
|
||||
install -Dm755 tools/test_chardev_pingpong \
|
||||
"${pkgdir}/usr/libexec/daedalus-v4l2/test_chardev_pingpong"
|
||||
install -Dm755 tools/test_m2m_decode \
|
||||
"${pkgdir}/usr/libexec/daedalus-v4l2/test_m2m_decode"
|
||||
install -Dm755 tools/test_m2m_stream \
|
||||
"${pkgdir}/usr/libexec/daedalus-v4l2/test_m2m_stream"
|
||||
|
||||
# Shared wire-protocol header (kernel ↔ daemon); useful for
|
||||
# third-party clients of the chardev.
|
||||
install -Dm644 include/daedalus_v4l2_proto.h \
|
||||
"${pkgdir}/usr/include/daedalus_v4l2_proto.h"
|
||||
|
||||
# Documentation
|
||||
install -Dm644 README.md \
|
||||
"${pkgdir}/usr/share/doc/${pkgname}/README.md"
|
||||
for d in docs/*.md; do
|
||||
install -Dm644 "$d" "${pkgdir}/usr/share/doc/${pkgname}/$(basename "$d")"
|
||||
done
|
||||
|
||||
# Licenses: BSD-2-Clause for daemon/tools, GPL for the kernel proto
|
||||
# header; the SPDX headers in src/ are the canonical declaration but
|
||||
# ship a short note here for package-manager-driven license queries.
|
||||
install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
|
||||
cat > "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" <<'EOF'
|
||||
daedalus-v4l2 userspace components are BSD-2-Clause licensed.
|
||||
The shared kernel↔daemon wire protocol header
|
||||
(/usr/include/daedalus_v4l2_proto.h) is GPL-2.0-or-later WITH
|
||||
Linux-syscall-note for kernel-side compatibility. See SPDX
|
||||
headers on individual source files for the canonical
|
||||
per-file declaration.
|
||||
EOF
|
||||
}
|
||||
Reference in New Issue
Block a user