arch/daedalus-v4l2-dkms: new package — kernel module via DKMS
PKGBUILD pinning the same daedalus-v4l2 @ f04d700 as the userspace sibling. Installs kernel/ source to /usr/src/daedalus_v4l2-<ver>/ with a generated dkms.conf; AUTOINSTALL=yes builds the module against the running kernel. The kernel/ Makefile uses -I$(src)/../include for the shared protocol header. In the userspace tree that's daedalus-v4l2/include/; for DKMS we flatten by copying the header into kernel/include/ and patching the Makefile in package() to point there. Sibling Debian package: debian/daedalus-v4l2-dkms/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Maintainer: Markus Fritsche <fritsche.markus@gmail.com>
|
||||
#
|
||||
# daedalus-v4l2-dkms — DKMS package for the daedalus_v4l2 out-of-tree
|
||||
# kernel module (V4L2 stateless decoder shim for Pi 5 / CM5).
|
||||
#
|
||||
# Pair to daedalus-v4l2 (userspace daemon). When loaded, the module
|
||||
# registers /dev/videoNN (V4L2 m2m) + /dev/mediaNN (media controller) +
|
||||
# /dev/daedalus-v4l2 (chardev to the userspace daemon). Userspace
|
||||
# clients drive the V4L2 m2m + request API path; the daemon does the
|
||||
# actual FFmpeg-backed decode on /dev/daedalus-v4l2.
|
||||
#
|
||||
# Project: https://git.reauktion.de/reauktion/daedalus-v4l2
|
||||
# Sibling userspace package: daedalus-v4l2
|
||||
# Sibling consumer: libva-v4l2-request-fourier
|
||||
|
||||
pkgname=daedalus-v4l2-dkms
|
||||
_module=daedalus_v4l2
|
||||
|
||||
# Same pin as arch/daedalus-v4l2 — keep kernel module + daemon
|
||||
# bit-versioned together so the chardev wire protocol stays in sync.
|
||||
_commit=f04d7000f858fe51d867aba14a529d3aef4fbd54
|
||||
|
||||
pkgver=0.1.0.r15.f04d700
|
||||
pkgrel=1
|
||||
pkgdesc="V4L2 stateless decoder shim kernel module (DKMS) — Pi 5 / CM5"
|
||||
arch=('any')
|
||||
url="https://git.reauktion.de/reauktion/daedalus-v4l2"
|
||||
license=('GPL-2.0-or-later')
|
||||
depends=('dkms')
|
||||
makedepends=('git')
|
||||
|
||||
source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}"
|
||||
"dkms.conf")
|
||||
sha256sums=('SKIP'
|
||||
'SKIP')
|
||||
|
||||
pkgver() {
|
||||
cd "${srcdir}/daedalus-v4l2"
|
||||
printf '0.1.0.r%s.%s' \
|
||||
"$(git rev-list --count HEAD)" \
|
||||
"$(git rev-parse --short=7 HEAD)"
|
||||
}
|
||||
|
||||
package() {
|
||||
local _src="${pkgdir}/usr/src/${_module}-${pkgver}"
|
||||
|
||||
install -dm755 "${_src}"
|
||||
|
||||
# Install the kernel/ subdir and embed the shared proto header in
|
||||
# the same tree. The in-tree Makefile uses
|
||||
# `ccflags-y += -I$(src)/../include` (assuming the parent
|
||||
# daedalus-v4l2 layout); for DKMS we flatten by copying the header
|
||||
# into kernel/include/ and patching the Makefile to point there.
|
||||
cp -r "${srcdir}/daedalus-v4l2/kernel/." "${_src}/"
|
||||
install -Dm644 "${srcdir}/daedalus-v4l2/include/daedalus_v4l2_proto.h" \
|
||||
"${_src}/include/daedalus_v4l2_proto.h"
|
||||
sed -i 's|-I\$(src)/\.\./include|-I$(src)/include|' "${_src}/Makefile"
|
||||
|
||||
# dkms.conf at the root of the source tree (DKMS convention).
|
||||
# Substitute #MODULE_VERSION# placeholder with the actual pkgver
|
||||
# so dkms install/uninstall match what's on disk.
|
||||
install -Dm644 "${srcdir}/dkms.conf" "${_src}/dkms.conf"
|
||||
sed -i "s/#MODULE_VERSION#/${pkgver}/" "${_src}/dkms.conf"
|
||||
|
||||
# License
|
||||
install -Dm644 "${srcdir}/daedalus-v4l2/kernel/daedalus_v4l2_main.c" \
|
||||
"${pkgdir}/usr/share/licenses/${pkgname}/SPDX-HEADER"
|
||||
}
|
||||
Reference in New Issue
Block a user