noether/daedalus-v4l2-packages #30

Merged
marfrit merged 2 commits from claude-noether/marfrit-packages:noether/daedalus-v4l2-packages into main 2026-05-18 18:42:30 +00:00
3 changed files with 110 additions and 3 deletions
Showing only changes of commit 4776dc01d2 - Show all commits
+4 -1
View File
@@ -28,10 +28,13 @@ url="https://git.reauktion.de/reauktion/daedalus-v4l2"
license=('GPL-2.0-or-later') license=('GPL-2.0-or-later')
depends=('dkms') depends=('dkms')
makedepends=('git') makedepends=('git')
install="${pkgname}.install"
source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}" source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}"
"dkms.conf") "dkms.conf"
"${pkgname}.install")
sha256sums=('SKIP' sha256sums=('SKIP'
'SKIP'
'SKIP') 'SKIP')
pkgver() { pkgver() {
@@ -0,0 +1,61 @@
# post-install / post-upgrade hook for daedalus-v4l2-dkms.
#
# pacman + the dkms-helpers alpm hook will already attempt
# `dkms install` on its own. This script's job is to emit a
# loud, actionable warning when the module didn't actually
# build for the running kernel — most commonly because the
# kernel headers package isn't installed yet.
#
# Without this you get a silent failure: the package looks
# installed but `modprobe daedalus_v4l2` returns ENOENT.
_check_dkms_built() {
local name=daedalus_v4l2
local ver=$1
local kernelver=$(uname -r)
if ! command -v dkms >/dev/null 2>&1; then
return 1 # the hard-dep should have caught this
fi
local status
status=$(dkms status -m "$name" -v "$ver" -k "$kernelver" 2>/dev/null || true)
if printf '%s\n' "$status" | grep -q -E 'installed|loaded'; then
return 0 # all good
fi
cat >&2 <<EOF
==> daedalus-v4l2-dkms: DKMS build did NOT land for kernel $kernelver.
==> dkms status -m $name -v $ver -k $kernelver:
==> $(printf '%s' "$status" | head -1)
==>
==> Most likely cause: kernel headers package is missing.
==> Arch / ALARM: pacman -S linux-rpi-headers (or linux-rpi5-headers)
==> Raspberry Pi OS: apt install linux-headers-rpi-2712
==>
==> After installing headers, finish the install with:
==> sudo dkms autoinstall $name/$ver
==> sudo modprobe daedalus_v4l2
==>
==> Until then daedalus_v4l2 will NOT be loadable and the
==> userspace daedalus-v4l2 daemon will have nothing to talk to.
EOF
return 1
}
post_install() {
_check_dkms_built "$1" || true
}
post_upgrade() {
# New version pinned by the bump may have built fine, but if
# a kernel-headers package was uninstalled / pruned since the
# last upgrade we'd silently regress. Re-check.
_check_dkms_built "$1" || true
}
pre_remove() {
# The dkms alpm hook handles dkms remove on its own; nothing
# we need to add here.
:
}
+45 -2
View File
@@ -78,10 +78,53 @@ set -e
NAME=${MODULE_NAME} NAME=${MODULE_NAME}
VERSION=${PKGVER} VERSION=${PKGVER}
KERNELVER=\$(uname -r)
# Yellow + bold ANSI for the warning so it stands out in apt's
# stream of "Setting up" lines. Disable colour on non-TTY.
if [ -t 1 ]; then
Y=\$(printf '\\033[1;33m'); R=\$(printf '\\033[0m')
else
Y=''; R=''
fi
warn() {
printf '%s==> daedalus-v4l2-dkms: %s%s\\n' "\$Y" "\$1" "\$R" >&2
}
if [ "\$1" = "configure" ]; then
if ! command -v dkms >/dev/null 2>&1; then
warn "dkms not installed; module \$NAME/\$VERSION not registered."
warn "Install 'dkms' then run: dkms add \$NAME/\$VERSION && dkms autoinstall"
exit 0
fi
if [ "\$1" = "configure" ] && command -v dkms >/dev/null 2>&1; then
dkms add "\$NAME/\$VERSION" 2>/dev/null || true dkms add "\$NAME/\$VERSION" 2>/dev/null || true
dkms autoinstall "\$NAME/\$VERSION" || true
# Don't let autoinstall failure mask the actual problem behind '|| true'.
# Run it, capture the result, then verify post-condition.
autoinstall_rc=0
dkms autoinstall "\$NAME/\$VERSION" || autoinstall_rc=\$?
# Verify the module actually built + installed for the running kernel.
status=\$(dkms status -m "\$NAME" -v "\$VERSION" -k "\$KERNELVER" 2>/dev/null || true)
if ! printf '%s\\n' "\$status" | grep -q -E 'installed|loaded'; then
warn ""
warn "DKMS build did NOT land for kernel \$KERNELVER."
warn " dkms status -m \$NAME -v \$VERSION -k \$KERNELVER:"
warn " \$(printf '%s' "\$status" | head -1)"
warn ""
warn "Most likely cause: kernel headers package is missing."
warn " Raspberry Pi OS / Pi 5: apt install linux-headers-rpi-2712"
warn " Debian generic: apt install linux-headers-\$KERNELVER"
warn ""
warn "After installing headers, finish the install with:"
warn " sudo dkms autoinstall \$NAME/\$VERSION"
warn " sudo modprobe daedalus_v4l2"
warn ""
warn "Until then daedalus_v4l2 will NOT be loadable and the"
warn "userspace daedalus-v4l2 daemon will have nothing to talk to."
fi
fi fi
#DEBHELPER# #DEBHELPER#