diff -Nru dkms-2.8.7/debian/changelog dkms-2.8.7/debian/changelog --- dkms-2.8.7/debian/changelog 2022-04-01 13:25:30.000000000 +0000 +++ dkms-2.8.7/debian/changelog 2022-04-08 07:13:22.000000000 +0000 @@ -1,3 +1,12 @@ +dkms (2.8.7-2ubuntu2) jammy; urgency=medium + + [ Andreas Beckmann ] + * dkms-autopkgtest: If no linux-headers-* packages are installed, install + all available ones before building modules. (Closes: #945594) + * improve verbosity + + -- Gianfranco Costamagna Fri, 08 Apr 2022 09:13:22 +0200 + dkms (2.8.7-2ubuntu1) jammy; urgency=medium * d/p/prerm-hook-parsing: fix parsing of module name and version during diff -Nru dkms-2.8.7/debian/patches/messaging.patch dkms-2.8.7/debian/patches/messaging.patch --- dkms-2.8.7/debian/patches/messaging.patch 1970-01-01 00:00:00.000000000 +0000 +++ dkms-2.8.7/debian/patches/messaging.patch 2022-04-08 07:13:16.000000000 +0000 @@ -0,0 +1,11 @@ +--- a/dkms_autoinstaller ++++ b/dkms_autoinstaller +@@ -46,7 +46,7 @@ case "$1" in + kernel=`uname -r` + fi + if [ -f /etc/dkms/no-autoinstall ]; then +- log_daemon_msg "$prog: autoinstall for dkms modules has been disabled" ++ log_action_msg "$prog: autoinstall for dkms modules has been disabled" + else + log_daemon_msg "$prog: running auto installation service for kernel $kernel" + dkms autoinstall --kernelver $kernel diff -Nru dkms-2.8.7/debian/patches/series dkms-2.8.7/debian/patches/series --- dkms-2.8.7/debian/patches/series 2022-04-01 12:53:21.000000000 +0000 +++ dkms-2.8.7/debian/patches/series 2022-04-08 07:13:12.000000000 +0000 @@ -2,3 +2,4 @@ export-CC.patch 149.patch prerm-hook-parsing +messaging.patch diff -Nru dkms-2.8.7/debian/scripts/dkms-autopkgtest dkms-2.8.7/debian/scripts/dkms-autopkgtest --- dkms-2.8.7/debian/scripts/dkms-autopkgtest 2022-04-01 12:52:05.000000000 +0000 +++ dkms-2.8.7/debian/scripts/dkms-autopkgtest 2022-04-08 07:13:16.000000000 +0000 @@ -6,6 +6,36 @@ result=0 +header_packages= +check_for_linux_headers() { + # Act only on the first run. + if [ -n "$header_packages" ]; then + return + fi + + # What Linux header packages are installed? + header_packages=$(dpkg-query -f '${Status} ${Package}\n' -W 'linux-headers-*' | sed -r -n 's/^install ok installed //p') + if [ -n "$header_packages" ]; then + echo "I: Using the following Linux header packages that were already installed:" + for p in $header_packages ; do + echo "I: $p" + done + return + fi + + # What Linux header packages could be installed? + header_packages=$(apt-cache search --names-only '^linux-headers-' | awk '{print $1}' | grep -v -E -e '-common(-rt)?$') + echo "I: No Linux header packages are installed. Installing all available ones:" + for p in $header_packages ; do + echo "I: $p" + done + apt-get install --no-install-recommends -yq $header_packages &1 || RC=$? + if [ "$RC" -ne 0 ]; then + echo "E: Linux headers failed to install" >&2 + exit 1 + fi +} + run_pkg() { pkg="$1" @@ -16,13 +46,15 @@ echo "I: Installing binary package $pkg" export DEBIAN_FRONTEND=noninteractive RC=0 - apt-get install -yq $pkg &1 || RC=$? + apt-get install --no-install-recommends -yq $pkg &1 || RC=$? if [ "$RC" -ne 0 ]; then echo "E: Package $pkg failed to install" >&2 - exit 1 + result=1 + return fi # Try and remove dkms to spot packages which miss a dkms dependency + echo "I: Checking for missing dkms dependency by trying to deinstall dkms" dpkg --remove dkms || true if ! dkms_conf=$(dpkg -L $pkg | grep '/usr/src' | grep '/dkms.conf$'); then @@ -30,6 +62,8 @@ return fi + check_for_linux_headers + echo "I: Testing binary package $pkg" dkms_pkg=$(bash -c ". $dkms_conf > /dev/null; echo \$PACKAGE_NAME" 2>/dev/null)