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

Reply via email to