MT#56627 debian: switch to usage with dh-sequence-dkms

Since Debian/bookworm dh-dkms (debhelper addon for the Dynamic Kernel
Module System (DKMS)) is available with its virtual dh-sequence-dkms
package. This allows us to get rid of manual packaging work in
maintainer scripts and debian/rules.

Adjust backport scripts accordingly as dh-sequence-dkms and its dh-dkms
are available only as of Debian bookworm + Ubuntu kinetic and newer.

Ship debian/source/lintian-overrides to ignore lintian's:

  E: ngcp-rtpengine source: missing-build-dependency-for-dh_-command dh_dkms => dkms

This dh-sequence-dkms vs dkms issue is only supported as of lintian
versions >=2.105.0, while current Debian/stable AKA bullseye provides
lintian v2.104.0, see https://bugs.debian.org/982834.

Closes: https://bugs.debian.org/1030227
Thanks: Andreas Beckmann <anbe@debian.org> for the bug report + initial patch

Change-Id: Ife1e976c88fbbe796bbd40225f682f0e5360a6d7
pull/1614/head
Michael Prokop 2 years ago
parent d71d46362e
commit 427615d45b

3
debian/control vendored

@ -7,6 +7,7 @@ Standards-Version: 4.5.1
Build-Depends:
debhelper-compat (= 13),
default-libmysqlclient-dev,
dh-sequence-dkms,
gperf,
libavcodec-dev (>= 6:10),
libavfilter-dev (>= 6:10),
@ -46,6 +47,7 @@ Build-Depends:
python3,
python3-websockets,
zlib1g-dev,
Testsuite: autopkgtest-pkg-dkms
Package: ngcp-rtpengine-daemon
Architecture: any
@ -111,7 +113,6 @@ Section: kernel
Suggests:
ngcp-system-tools,
Depends:
dkms (>= 1.95),
lsb-release,
${misc:Depends},
Description: IPtables kernel module for the NGCP media proxy - DKMS

@ -0,0 +1,7 @@
PACKAGE_NAME="ngcp-rtpengine"
PACKAGE_VERSION="#MODULE_VERSION#"
MAKE[0]="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build RTPENGINE_VERSION=\"${PACKAGE_VERSION}\""
CLEAN="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"
AUTOINSTALL=yes
BUILT_MODULE_NAME[0]="xt_RTPENGINE"
DEST_MODULE_LOCATION[0]=/extra

@ -0,0 +1,3 @@
kernel-module/*.c usr/src/${env:DEB_SOURCE}-${env:DEB_VERSION_UPSTREAM}
kernel-module/*.h usr/src/${env:DEB_SOURCE}-${env:DEB_VERSION_UPSTREAM}
kernel-module/Makefile usr/src/${env:DEB_SOURCE}-${env:DEB_VERSION_UPSTREAM}

@ -2,37 +2,18 @@
set -e
package=ngcp-rtpengine-kernel-dkms
name=ngcp-rtpengine
version=$(dpkg-query -W -f="\${Version}" "$package" \
|rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n")
if [ -x "$(which ngcp-virt-identify)" ]; then
if ngcp-virt-identify --type container; then
VIRT="yes"
fi
fi
#DEBHELPER#
if [ "$VIRT" = "yes" ]; then
echo "Container environment detected. Skip dkms"
else
isadded=$(dkms status -m "$name" -v "$version")
if [ -z "${isadded}" ] ; then
dkms add -m "$name" -v "$version"
fi
if [ "$1" = 'configure' ] ; then
KERNELS=$(ls /lib/modules/ 2>/dev/null || true)
for kernel in $KERNELS; do
if [ ! -r "/lib/modules/$kernel/build" ]; then
# cannot build modules for this kernel
continue
fi
( dkms build -m "$name" -v "$version" -k "$kernel" && dkms install -m "$name" -v "$version" -k "$kernel" ) || true
done
# try to start the daemon
if [ -x /etc/init.d/ngcp-rtpengine-daemon ] ; then
invoke-rc.d ngcp-rtpengine-daemon restart || true
@ -40,7 +21,4 @@ else
fi
fi
#DEBHELPER#
exit 0

@ -2,29 +2,10 @@
set -e
package=ngcp-rtpengine-kernel-dkms
name=ngcp-rtpengine
modname=xt_RTPENGINE
version=$(dpkg-query -W -f="\${Version}" "$package" \
|rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n")
if [ -x "$(which ngcp-virt-identify)" ]; then
if ngcp-virt-identify --type container; then
VIRT="yes"
fi
fi
# make sure it's not running
if [ -x /etc/init.d/ngcp-rtpengine-daemon ] ; then
invoke-rc.d ngcp-rtpengine-daemon stop || true
rmmod "$modname" 2>/dev/null || true
fi
if [ "$VIRT" = "yes" ]; then
echo "Container environment detected. Skip dkms"
else
dkms remove -m "$name" -v "$version" --all || true
rmmod "xt_RTPENGINE" 2>/dev/null || true
fi
#DEBHELPER#

22
debian/rules vendored

@ -6,14 +6,8 @@
include /usr/share/dpkg/pkg-info.mk
## kernel package specific stuff
# Name of the dkms package
pdkms:=ngcp-rtpengine-kernel-dkms
# short upstream name, used for module source directory
sname:=ngcp-rtpengine
# Source version
sversion:=$(DEB_VERSION_UPSTREAM)
## end of kernel package specific stuff
export DEB_VERSION_UPSTREAM
export DEB_SOURCE
export XTABLES_DIR := $(shell pkg-config xtables --variable=xtlibdir || echo /lib/xtables)
@ -34,18 +28,12 @@ execute_before_dh_auto_configure:
(cd debian && sh generate-systemd-templates.sh)
execute_before_dh_auto_install-indep:
# Create the directories to install the source into
dh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)
# Copy only the driver source to the proper locations
cd kernel-module && cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)
# Prepare dkms.conf from the dkms.conf.in template
sed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf
# markdown README
markdown README.md | gzip -9 > debian/README.html.gz
gzip -9 < README.md > debian/README.md.gz
execute_after_dh_installsystemd:
dh_installsystemd -pngcp-rtpengine-recording-daemon --name=ngcp-rtpengine-recording-nfs-mount
override_dh_dkms:
dh_dkms -p$(DEB_SOURCE)-kernel-dkms -V $(DEB_VERSION_UPSTREAM)

@ -0,0 +1 @@
ngcp-rtpengine source: missing-build-dependency-for-dh_-command dh_dkms => dkms

@ -11,6 +11,38 @@ fi
rm -rf ${DIST}
cp -r debian ${DIST}
# dkms stuff (see MT#56627)
cp old-dkms/rtpengine-kernel-dkms.postinst "${DIST}"/
cp old-dkms/rtpengine-kernel-dkms.prerm "${DIST}"/
cp old-dkms/dkms.conf.in "${DIST}"/
rm -f "${DIST}"/rtpengine-kernel-dkms.install "${DIST}"/rtpengine-kernel-dkms.dkms
sed -i '/ngcp-rtpengine source:/d' "${DIST}"/source/lintian-overrides
sed -i '1n;/^Package: rtpengine-kernel-dkms/,/^Depends:/{ s/Depends:/Depends:\n dkms (>= 1.95),/;}' "${DIST}"/control
sed -i '/^ dh-sequence-dkms,/d' "${DIST}"/control
sed -i '/^Testsuite: autopkgtest-pkg-dkms/d' "${DIST}"/control
sed -i '/^override_dh_dkms/d' "${DIST}"/rules
sed -i '/dh_dkms /d' "${DIST}"/rules
sed -i '/^export DEB_VERSION_UPSTREAM/d' "${DIST}"/rules
sed -i '/^export DEB_SOURCE/d' "${DIST}"/rules
sed -i 's;^include /usr/share/dpkg/pkg-info.mk;include /usr/share/dpkg/pkg-info.mk\
## kernel package specific stuff\
# Name of the dkms package\
pdkms:=rtpengine-kernel-dkms\
# short upstream name, used for module source directory\
sname:=rtpengine\
# Source version\
sversion:=$(DEB_VERSION_UPSTREAM)\
## end of kernel package specific stuff\
;' "${DIST}"/rules
sed -i 's;^execute_before_dh_auto_install-indep:;execute_before_dh_auto_install-indep:\
\t# Create the directories to install the source into\
\tdh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)\
\t# Copy only the driver source to the proper locations\
\tcd kernel-module \&\& cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)\
\t# Prepare dkms.conf from the dkms.conf.in template\
\tsed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf\
;' "${DIST}"/rules
if command -v wrap-and-sort &>/dev/null ; then
wrap-and-sort -sat -d ${DIST}
else

@ -28,6 +28,38 @@ override_dh_dwz:
# Disable, as dwz cannot cope with some of the plugins generated.
EOF
# dkms stuff (see MT#56627)
cp old-dkms/rtpengine-kernel-dkms.postinst "${DIST}"/
cp old-dkms/rtpengine-kernel-dkms.prerm "${DIST}"/
cp old-dkms/dkms.conf.in "${DIST}"/
rm -f "${DIST}"/rtpengine-kernel-dkms.install "${DIST}"/rtpengine-kernel-dkms.dkms
sed -i '/ngcp-rtpengine source:/d' "${DIST}"/source/lintian-overrides
sed -i '1n;/^Package: rtpengine-kernel-dkms/,/^Depends:/{ s/Depends:/Depends:\n dkms (>= 1.95),/;}' "${DIST}"/control
sed -i '/^ dh-sequence-dkms,/d' "${DIST}"/control
sed -i '/^Testsuite: autopkgtest-pkg-dkms/d' "${DIST}"/control
sed -i '/^override_dh_dkms/d' "${DIST}"/rules
sed -i '/dh_dkms /d' "${DIST}"/rules
sed -i '/^export DEB_VERSION_UPSTREAM/d' "${DIST}"/rules
sed -i '/^export DEB_SOURCE/d' "${DIST}"/rules
sed -i 's;^include /usr/share/dpkg/pkg-info.mk;include /usr/share/dpkg/pkg-info.mk\
## kernel package specific stuff\
# Name of the dkms package\
pdkms:=rtpengine-kernel-dkms\
# short upstream name, used for module source directory\
sname:=rtpengine\
# Source version\
sversion:=$(DEB_VERSION_UPSTREAM)\
## end of kernel package specific stuff\
;' "${DIST}"/rules
sed -i 's;^override_dh_auto_install-indep:;override_dh_auto_install-indep:\
\t# Create the directories to install the source into\
\tdh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)\
\t# Copy only the driver source to the proper locations\
\tcd kernel-module \&\& cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)\
\t# Prepare dkms.conf from the dkms.conf.in template\
\tsed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf\
;' "${DIST}"/rules
# Fix module installation location
rm ${DIST}/rtpengine-iptables.dirs
rm ${DIST}/rtpengine-iptables.install

@ -27,6 +27,38 @@ override_dh_dwz:
# Disable, as dwz cannot cope with some of the plugins generated.
EOF
# dkms stuff (see MT#56627)
cp old-dkms/rtpengine-kernel-dkms.postinst "${DIST}"/
cp old-dkms/rtpengine-kernel-dkms.prerm "${DIST}"/
cp old-dkms/dkms.conf.in "${DIST}"/
rm -f "${DIST}"/rtpengine-kernel-dkms.install "${DIST}"/rtpengine-kernel-dkms.dkms
sed -i '/ngcp-rtpengine source:/d' "${DIST}"/source/lintian-overrides
sed -i '1n;/^Package: rtpengine-kernel-dkms/,/^Depends:/{ s/Depends:/Depends:\n dkms (>= 1.95),/;}' "${DIST}"/control
sed -i '/^ dh-sequence-dkms,/d' "${DIST}"/control
sed -i '/^Testsuite: autopkgtest-pkg-dkms/d' "${DIST}"/control
sed -i '/^override_dh_dkms/d' "${DIST}"/rules
sed -i '/dh_dkms /d' "${DIST}"/rules
sed -i '/^export DEB_VERSION_UPSTREAM/d' "${DIST}"/rules
sed -i '/^export DEB_SOURCE/d' "${DIST}"/rules
sed -i 's;^include /usr/share/dpkg/pkg-info.mk;include /usr/share/dpkg/pkg-info.mk\
## kernel package specific stuff\
# Name of the dkms package\
pdkms:=rtpengine-kernel-dkms\
# short upstream name, used for module source directory\
sname:=rtpengine\
# Source version\
sversion:=$(DEB_VERSION_UPSTREAM)\
## end of kernel package specific stuff\
;' "${DIST}"/rules
sed -i 's;^override_dh_auto_install-indep:;override_dh_auto_install-indep:\
\t# Create the directories to install the source into\
\tdh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)\
\t# Copy only the driver source to the proper locations\
\tcd kernel-module \&\& cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)\
\t# Prepare dkms.conf from the dkms.conf.in template\
\tsed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf\
;' "${DIST}"/rules
# Fix module installation location
rm ${DIST}/rtpengine-iptables.dirs
rm ${DIST}/rtpengine-iptables.install

@ -11,6 +11,38 @@ fi
rm -rf ${DIST}
cp -r debian ${DIST}
# dkms stuff (see MT#56627)
cp old-dkms/rtpengine-kernel-dkms.postinst "${DIST}"/
cp old-dkms/rtpengine-kernel-dkms.prerm "${DIST}"/
cp old-dkms/dkms.conf.in "${DIST}"/
rm -f "${DIST}"/rtpengine-kernel-dkms.install "${DIST}"/rtpengine-kernel-dkms.dkms
sed -i '/ngcp-rtpengine source:/d' "${DIST}"/source/lintian-overrides
sed -i '1n;/^Package: rtpengine-kernel-dkms/,/^Depends:/{ s/Depends:/Depends:\n dkms (>= 1.95),/;}' "${DIST}"/control
sed -i '/^ dh-sequence-dkms,/d' "${DIST}"/control
sed -i '/^Testsuite: autopkgtest-pkg-dkms/d' "${DIST}"/control
sed -i '/^override_dh_dkms/d' "${DIST}"/rules
sed -i '/dh_dkms /d' "${DIST}"/rules
sed -i '/^export DEB_VERSION_UPSTREAM/d' "${DIST}"/rules
sed -i '/^export DEB_SOURCE/d' "${DIST}"/rules
sed -i 's;^include /usr/share/dpkg/pkg-info.mk;include /usr/share/dpkg/pkg-info.mk\
## kernel package specific stuff\
# Name of the dkms package\
pdkms:=rtpengine-kernel-dkms\
# short upstream name, used for module source directory\
sname:=rtpengine\
# Source version\
sversion:=$(DEB_VERSION_UPSTREAM)\
## end of kernel package specific stuff\
;' "${DIST}"/rules
sed -i 's;^execute_before_dh_auto_install-indep:;execute_before_dh_auto_install-indep:\
\t# Create the directories to install the source into\
\tdh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)\
\t# Copy only the driver source to the proper locations\
\tcd kernel-module \&\& cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)\
\t# Prepare dkms.conf from the dkms.conf.in template\
\tsed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf\
;' "${DIST}"/rules
if command -v wrap-and-sort &>/dev/null ; then
wrap-and-sort -sat -d ${DIST}
else

@ -11,6 +11,38 @@ fi
rm -rf ${DIST}
cp -r debian ${DIST}
# dkms stuff (see MT#56627)
cp old-dkms/rtpengine-kernel-dkms.postinst "${DIST}"/
cp old-dkms/rtpengine-kernel-dkms.prerm "${DIST}"/
cp old-dkms/dkms.conf.in "${DIST}"/
rm -f "${DIST}"/rtpengine-kernel-dkms.install "${DIST}"/rtpengine-kernel-dkms.dkms
sed -i '/ngcp-rtpengine source:/d' "${DIST}"/source/lintian-overrides
sed -i '1n;/^Package: rtpengine-kernel-dkms/,/^Depends:/{ s/Depends:/Depends:\n dkms (>= 1.95),/;}' "${DIST}"/control
sed -i '/^ dh-sequence-dkms,/d' "${DIST}"/control
sed -i '/^Testsuite: autopkgtest-pkg-dkms/d' "${DIST}"/control
sed -i '/^override_dh_dkms/d' "${DIST}"/rules
sed -i '/dh_dkms /d' "${DIST}"/rules
sed -i '/^export DEB_VERSION_UPSTREAM/d' "${DIST}"/rules
sed -i '/^export DEB_SOURCE/d' "${DIST}"/rules
sed -i 's;^include /usr/share/dpkg/pkg-info.mk;include /usr/share/dpkg/pkg-info.mk\
## kernel package specific stuff\
# Name of the dkms package\
pdkms:=rtpengine-kernel-dkms\
# short upstream name, used for module source directory\
sname:=rtpengine\
# Source version\
sversion:=$(DEB_VERSION_UPSTREAM)\
## end of kernel package specific stuff\
;' "${DIST}"/rules
sed -i 's;^execute_before_dh_auto_install-indep:;execute_before_dh_auto_install-indep:\
\t# Create the directories to install the source into\
\tdh_installdirs -p$(pdkms) usr/src/$(sname)-$(sversion)\
\t# Copy only the driver source to the proper locations\
\tcd kernel-module \&\& cp Makefile *.c *.h ../debian/$(pdkms)/usr/src/$(sname)-$(sversion)\
\t# Prepare dkms.conf from the dkms.conf.in template\
\tsed "s/__VERSION__/$(sversion)/g" debian/dkms.conf.in > debian/$(pdkms)/usr/src/$(sname)-$(sversion)/dkms.conf\
;' "${DIST}"/rules
# No libbcg729-dev package
sed -i -e '/libbcg729-dev/d' ${DIST}/control

@ -1,4 +1,4 @@
PACKAGE_NAME="ngcp-rtpengine"
PACKAGE_NAME="rtpengine"
PACKAGE_VERSION="__VERSION__"
MAKE[0]="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build RTPENGINE_VERSION=\"__VERSION__\""
CLEAN="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"

@ -0,0 +1,46 @@
#!/bin/sh
set -e
package=rtpengine-kernel-dkms
name=rtpengine
version=$(dpkg-query -W -f="\${Version}" "$package" \
|rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n")
if [ -x "$(which ngcp-virt-identify)" ]; then
if ngcp-virt-identify --type container; then
VIRT="yes"
fi
fi
if [ "$VIRT" = "yes" ]; then
echo "Container environment detected. Skip dkms"
else
isadded=$(dkms status -m "$name" -v "$version")
if [ -z "${isadded}" ] ; then
dkms add -m "$name" -v "$version"
fi
if [ "$1" = 'configure' ] ; then
KERNELS=$(ls /lib/modules/ 2>/dev/null || true)
for kernel in $KERNELS; do
if [ ! -r "/lib/modules/$kernel/build" ]; then
# cannot build modules for this kernel
continue
fi
( dkms build -m "$name" -v "$version" -k "$kernel" && dkms install -m "$name" -v "$version" -k "$kernel" ) || true
done
# try to start the daemon
if [ -x /etc/init.d/rtpengine-daemon ] ; then
invoke-rc.d rtpengine-daemon restart || true
fi
fi
fi
#DEBHELPER#
exit 0

@ -0,0 +1,32 @@
#!/bin/sh
set -e
package=rtpengine-kernel-dkms
name=rtpengine
modname=xt_RTPENGINE
version=$(dpkg-query -W -f="\${Version}" "$package" \
|rev|cut -d- -f2-|rev|cut -d':' -f2|tr -d "\n")
if [ -x "$(which ngcp-virt-identify)" ]; then
if ngcp-virt-identify --type container; then
VIRT="yes"
fi
fi
# make sure it's not running
if [ -x /etc/init.d/rtpengine-daemon ] ; then
invoke-rc.d rtpengine-daemon stop || true
rmmod "$modname" 2>/dev/null || true
fi
if [ "$VIRT" = "yes" ]; then
echo "Container environment detected. Skip dkms"
else
dkms remove -m "$name" -v "$version" --all || true
fi
#DEBHELPER#
exit 0
Loading…
Cancel
Save