Followup-For: Bug #945594 Control: tag -1 patch Hi,
I'm attaching two patches to improve the autopkgtest script: * install all available linux-headers-* packages before attempting to buid modules (unless some are already installed) * fix some messages missing trailing newlines please note that log_action_msg seems to be debian specific thing Andreas
>From 69ee02334d9ce0fae95589438d222a034362efbb Mon Sep 17 00:00:00 2001 From: Andreas Beckmann <a...@debian.org> Date: Fri, 25 Feb 2022 21:01:42 +0100 Subject: [PATCH 1/2] dkms-autopkgtest: install all linux-headers-* unless some are installed --- debian/changelog | 7 +++++++ debian/scripts/dkms-autopkgtest | 37 +++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6de4e9b..58bbd17 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +dkms (2.8.7-3) UNRELEASED; urgency=medium + + * dkms-autopkgtest: If no linux-headers-* packages are installed, install + all available ones before building modules. (Closes: #945594) + + -- Andreas Beckmann <a...@debian.org> Fri, 25 Feb 2022 20:54:13 +0100 + dkms (2.8.7-2) unstable; urgency=medium * Drop old conffile moved upstream (Closes: #990138) diff --git a/debian/scripts/dkms-autopkgtest b/debian/scripts/dkms-autopkgtest index 0083f54..2ea73d0 100755 --- a/debian/scripts/dkms-autopkgtest +++ b/debian/scripts/dkms-autopkgtest @@ -6,6 +6,36 @@ set -eu 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 </dev/null 2>&1 || RC=$? + if [ "$RC" -ne 0 ]; then + echo "E: Linux headers failed to install" >&2 + exit 1 + fi +} + run_pkg() { pkg="$1" @@ -16,10 +46,11 @@ run_pkg() { echo "I: Installing binary package $pkg" export DEBIAN_FRONTEND=noninteractive RC=0 - apt-get install -yq $pkg </dev/null 2>&1 || RC=$? + apt-get install --no-install-recommends -yq $pkg </dev/null 2>&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 @@ -30,6 +61,8 @@ run_pkg() { 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) -- 2.20.1
>From c226cba04cfb45953281e6a08cc7eba04c64d2aa Mon Sep 17 00:00:00 2001 From: Andreas Beckmann <a...@debian.org> Date: Fri, 25 Feb 2022 23:17:03 +0100 Subject: [PATCH 2/2] improve verbosity log_action_msg is a debianism --- debian/patches/messaging.patch | 11 +++++++++++ debian/patches/series | 1 + debian/scripts/dkms-autopkgtest | 1 + 3 files changed, 13 insertions(+) create mode 100644 debian/patches/messaging.patch diff --git a/debian/patches/messaging.patch b/debian/patches/messaging.patch new file mode 100644 index 0000000..bdff95d --- /dev/null +++ b/debian/patches/messaging.patch @@ -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 --git a/debian/patches/series b/debian/patches/series index a15b701..be5f395 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ do-not-load-modules.patch export-CC.patch 149.patch +messaging.patch diff --git a/debian/scripts/dkms-autopkgtest b/debian/scripts/dkms-autopkgtest index 2ea73d0..4787313 100755 --- a/debian/scripts/dkms-autopkgtest +++ b/debian/scripts/dkms-autopkgtest @@ -54,6 +54,7 @@ run_pkg() { 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 -- 2.20.1