diff --git a/debian/control b/debian/control index 8e2ca82ca..459224b03 100644 --- a/debian/control +++ b/debian/control @@ -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 diff --git a/debian/ngcp-rtpengine-kernel-dkms.dkms b/debian/ngcp-rtpengine-kernel-dkms.dkms new file mode 100644 index 000000000..2ed743bad --- /dev/null +++ b/debian/ngcp-rtpengine-kernel-dkms.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 diff --git a/debian/ngcp-rtpengine-kernel-dkms.install b/debian/ngcp-rtpengine-kernel-dkms.install new file mode 100644 index 000000000..9b8f9f109 --- /dev/null +++ b/debian/ngcp-rtpengine-kernel-dkms.install @@ -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} diff --git a/debian/ngcp-rtpengine-kernel-dkms.postinst b/debian/ngcp-rtpengine-kernel-dkms.postinst index b37a91d8b..1f930f791 100644 --- a/debian/ngcp-rtpengine-kernel-dkms.postinst +++ b/debian/ngcp-rtpengine-kernel-dkms.postinst @@ -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 - diff --git a/debian/ngcp-rtpengine-kernel-dkms.prerm b/debian/ngcp-rtpengine-kernel-dkms.prerm index be28c80db..84b2a49d3 100644 --- a/debian/ngcp-rtpengine-kernel-dkms.prerm +++ b/debian/ngcp-rtpengine-kernel-dkms.prerm @@ -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# diff --git a/debian/rules b/debian/rules index 8b1164190..f93ff5d15 100755 --- a/debian/rules +++ b/debian/rules @@ -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) diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 000000000..e7253d979 --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1 @@ +ngcp-rtpengine source: missing-build-dependency-for-dh_-command dh_dkms => dkms diff --git a/pkg/deb/backports/bullseye b/pkg/deb/backports/bullseye index 19df175cd..722e7d6bb 100755 --- a/pkg/deb/backports/bullseye +++ b/pkg/deb/backports/bullseye @@ -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 diff --git a/pkg/deb/backports/buster b/pkg/deb/backports/buster index e73ce6879..00c884cf4 100755 --- a/pkg/deb/backports/buster +++ b/pkg/deb/backports/buster @@ -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 diff --git a/pkg/deb/backports/focal b/pkg/deb/backports/focal index a07af40e4..20773ff27 100755 --- a/pkg/deb/backports/focal +++ b/pkg/deb/backports/focal @@ -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 diff --git a/pkg/deb/backports/jammy b/pkg/deb/backports/jammy index 61a361c99..e8bde3df5 100755 --- a/pkg/deb/backports/jammy +++ b/pkg/deb/backports/jammy @@ -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 diff --git a/pkg/deb/backports/stretch b/pkg/deb/backports/stretch index 36730a770..413015311 100755 --- a/pkg/deb/backports/stretch +++ b/pkg/deb/backports/stretch @@ -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 diff --git a/debian/dkms.conf.in b/pkg/deb/old-dkms/dkms.conf.in similarity index 91% rename from debian/dkms.conf.in rename to pkg/deb/old-dkms/dkms.conf.in index 425dff936..005b4445f 100644 --- a/debian/dkms.conf.in +++ b/pkg/deb/old-dkms/dkms.conf.in @@ -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" diff --git a/pkg/deb/old-dkms/rtpengine-kernel-dkms.postinst b/pkg/deb/old-dkms/rtpengine-kernel-dkms.postinst new file mode 100755 index 000000000..f53a07d56 --- /dev/null +++ b/pkg/deb/old-dkms/rtpengine-kernel-dkms.postinst @@ -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 + diff --git a/pkg/deb/old-dkms/rtpengine-kernel-dkms.prerm b/pkg/deb/old-dkms/rtpengine-kernel-dkms.prerm new file mode 100755 index 000000000..1b7153526 --- /dev/null +++ b/pkg/deb/old-dkms/rtpengine-kernel-dkms.prerm @@ -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