Bug#1025786: bullseye-pu: package dkms/2.8.4-4+deb11u1
Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian.org@packages.debian.org
Usertags: pu
Hi,
dkms-autopkgtest is currently a no-op in bullseye since it does not take
care of installing kernel headers.
Therefore I'd like to backport the dkms-autopkgtest script from sid to
bullseye.
Additional changes are fixes for Lintian errors and providing a virtual
dh-dkms package which will simplify using *-dkms packages from bookworm
in bullseye.
I've tested the changes running autopkgtests in bullseye for my nvidia
driver pu requests.
There should only be a low potential for regressions since not many
packages use "Testsuite: autopkgtest-pkg-dkms" in bullseye.
Andreas
diff --git a/debian/changelog b/debian/changelog
index dfa7594..7635368 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+dkms (2.8.4-4+deb11u1) bullseye; urgency=medium
+
+ * Backport dkms-autopkgtest changes from sid.
+ - If no linux-headers-* packages are installed, install all available ones
+ (matching the version of installed linux-doc) before building modules.
+ * Update Lintian overrides.
+ * Provide versioned virtual package dh-dkms.
+ * Add myself to Uploaders.
+ * Upload to bullseye.
+
+ -- Andreas Beckmann <anbe@debian.org> Fri, 09 Dec 2022 02:38:21 +0100
+
+dkms (2.8.4-4) unstable; urgency=medium
+
+ * debian/patches/149.patch:
+ - upstream proposed patch to fix wrong bash interpreter (Closes: #986674)
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org> Fri, 09 Apr 2021 14:28:48 +0200
+
dkms (2.8.4-3) unstable; urgency=medium
[ Gianfranco Costamagna ]
diff --git a/debian/control b/debian/control
index e2a8b91..01cf9f5 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,8 @@ Maintainer: Dynamic Kernel Modules Support Team <dkms@packages.debian.org>
Uploaders: David Paleino <dapal@debian.org>,
Petter Reinholdtsen <pere@debian.org>,
Aron Xu <aron@debian.org>,
- Mario Limonciello <Mario_Limonciello@dell.com>
+ Mario Limonciello <Mario_Limonciello@dell.com>,
+ Andreas Beckmann <anbe@debian.org>,
Build-Depends: debhelper-compat (= 13)
Standards-Version: 4.5.0
Homepage: https://github.com/dell-oss/dkms
@@ -15,7 +16,6 @@ Rules-Requires-Root: no
Package: dkms
Architecture: all
-Provides: dh-sequence-dkms
Multi-Arch: foreign
Pre-Depends: lsb-release
Depends: ${misc:Depends},
@@ -31,6 +31,9 @@ Recommends: fakeroot,
linux-headers-686-pae | linux-headers-amd64 | linux-headers-generic | linux-headers,
Suggests: menu, e2fsprogs
Breaks: ${dkms:Breaks}
+Provides:
+ dh-sequence-dkms,
+ dh-dkms (= ${binary:Version}),
Description: Dynamic Kernel Module Support Framework
DKMS is a framework designed to allow individual kernel modules to be upgraded
without changing the whole kernel. It is also very easy to rebuild modules as
diff --git a/debian/copyright b/debian/copyright
index 6845425..3b6223a 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -13,6 +13,7 @@ Copyright: © 2008-2009, David Paleino <d.paleino@gmail.com>
© 2008-2009, Mario Limonciello <Mario_Limonciello@dell.com>
© 2008-2009, Giuseppe Iuculano <giuseppe@iuculano.it>
© 2019-2020, Gianfranco Costamagna <locutusofborg@debian.org>
+ © 2020-2022, Andreas Beckmann <anbe@debian.org>
License: GPL-2+
Files: debian/HOWTO.Debian
diff --git a/debian/dkms.lintian-overrides b/debian/dkms.lintian-overrides
index 2b2bd84..c0ad75f 100644
--- a/debian/dkms.lintian-overrides
+++ b/debian/dkms.lintian-overrides
@@ -1 +1,5 @@
-dkms binary: python-script-but-no-python-dep usr/share/apport/package-hooks/dkms_packages.py #!/usr/bin/python3
+# dependency is provided by apport
+python3-script-but-no-python3-dep /usr/bin/python3 (does not satisfy python3:any | python3-minimal:any) [usr/share/apport/package-hooks/dkms_packages.py]
+
+# this location is used by multiple external scripts to find dkms bits
+executable-in-usr-lib
diff --git a/debian/patches/149.patch b/debian/patches/149.patch
new file mode 100644
index 0000000..16f5bd9
--- /dev/null
+++ b/debian/patches/149.patch
@@ -0,0 +1,28 @@
+## Description: add some description
+## Origin/Author: add some origin or author
+## Bug: bug URL
+From e6ee197dcedd7b77acc434c1def9fbbb1fd3f302 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Fri, 9 Apr 2021 14:28:34 +0200
+Subject: [PATCH] Update kernel_install.d_dkms to remove wrong bash path
+
+See:
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986674
+
+Lintian emits
+
+E: dkms: wrong-path-for-interpreter etc/dkms/kernel_install.d_dkms (#!/usr/bin/bash != /bin/bash)
+---
+ kernel_install.d_dkms | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel_install.d_dkms b/kernel_install.d_dkms
+index c1d6df1..f1b3b38 100755
+--- a/kernel_install.d_dkms
++++ b/kernel_install.d_dkms
+@@ -1,4 +1,4 @@
+-#!/usr/bin/bash
++#!/bin/bash
+
+ if [[ "$1" == "add" ]]; then
+ /etc/kernel/postinst.d/dkms $2
diff --git a/debian/patches/series b/debian/patches/series
index aa7de72..a15b701 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
do-not-load-modules.patch
export-CC.patch
+149.patch
diff --git a/debian/scripts/dkms-autopkgtest b/debian/scripts/dkms-autopkgtest
index 1ca054a..f40d640 100755
--- a/debian/scripts/dkms-autopkgtest
+++ b/debian/scripts/dkms-autopkgtest
@@ -5,31 +5,86 @@
set -eu
result=0
+summary=
+crlf="
+"
+
+header_packages=
+check_for_linux_headers() {
+ # Act only on the first run.
+ if [ -n "$header_packages" ]; then
+ return
+ fi
+
+ # Which Linux header packages are installed?
+ header_packages=$(dpkg-query -f '${Status} ${Package}\n' -W 'linux-headers-*' 2>/dev/null | 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
+
+ # Which Linux header packages could be installed?
+ # linux-doc is a dependency generated by autodep8 for autopkgtest-pkg-dkms
+ # install only linux-headers-* matching the source version of linux-doc
+ wanted_source_version=$(dpkg-query -f '${source:Version}' -W linux-doc 2>/dev/null || true)
+ candidates=$(apt-cache search --names-only '^linux-headers-' | awk '{print $1}' | grep -v -E -e '-common(-rt)?$')
+ echo "I: No Linux header packages are installed."
+ echo "I: Installing all available ones from src:linux $wanted_source_version:"
+ for p in $candidates ; do
+ if [ -z "$wanted_source_version" ]; then
+ echo "I: $p"
+ header_packages="$header_packages $p"
+ continue
+ fi
+ source_versions=$(apt-cache show $p | perl -ne 'if (/^$/) { print $s || $v, "\n"; $s=$v=""; } $s=$1 if /^Source: .* \((.*)\)$/; $v=$1 if /^Version: (.*)$/;')
+ for sv in $source_versions ; do
+ if [ "$sv" = "$wanted_source_version" ]; then
+ echo "I: install $p"
+ header_packages="$header_packages $p"
+ continue 2
+ fi
+ done
+ echo "I: skip $p"
+ done
+ RC=0
+ 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"
- echo "I: Removing binary package $pkg, to get clean state"
+ echo "I: Removing binary package $pkg, to get clean state."
export DEBIAN_FRONTEND=noninteractive
apt-get purge -yq $pkg </dev/null 2>&1 >/dev/null || true
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
+ echo "E: Package $pkg failed to install." >&2
+ 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
- echo "I: Package $pkg has no dkms.conf, skipping"
+ echo "I: Package $pkg has no dkms.conf, skipping."
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)
@@ -41,14 +96,32 @@ run_pkg() {
kver="${k%/build}"
kver="${kver#/lib/modules/}"
+ # If any linux-meta is in triggers, only test abistems that
+ # match triggers otherwise continue. This helps integration
+ # with adt-matrix which specifically requests test results
+ # against each individual linux-meta and tracks unique results
+ # per kernel abi.
+ abistem=$(echo $kver | sed 's/-[a-z]*$//')
+ case "${ADT_TEST_TRIGGERS-}" in
+ *linux-meta*)
+ case "$ADT_TEST_TRIGGERS" in
+ *"$abistem"*)
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ esac
+
echo "I: Trying to build $dkms_pkg/$dkms_ver for $kver"
res=0
dkms build -m "$dkms_pkg" -v "$dkms_ver" -k "$kver" || res=$?
if [ "$res" = 9 ]; then
- echo "I: $dkms_pkg/$dkms_ver is not supported on $kver (BUILD_EXCLUSIVE directive), skipping"
+ echo "I: $dkms_pkg/$dkms_ver is not supported on $kver (BUILD_EXCLUSIVE directive), skipping."
+ summary="${summary}I: SKIP $kver${crlf}"
continue
- fi
+ fi
if [ "$res" != 0 ]; then
echo "E: $dkms_pkg/$dkms_ver failed to build for $kver" >&2
@@ -56,31 +129,41 @@ run_pkg() {
echo "========== $makelog ==========" >&2
cat "$makelog" >&2 || true
echo "====================" >&2
+ summary="${summary}I: FAIL $kver${crlf}"
result=1
continue
fi
if ! dkms install -m "$dkms_pkg" -v "$dkms_ver" -k "$kver" ; then
echo "E: $dkms_pkg/$dkms_ver failed to install for $kver" >&2
+ summary="${summary}I: FAIL $kver${crlf}"
result=1
continue
fi
- echo "I: Testing if $dkms_pkg modules are correctly installed"
+ echo "I: Testing if $dkms_pkg modules are correctly installed."
dkmsstatus="$(dkms status $dkms_pkg -k $kver)"
echo "$dkmsstatus"
if [ -z "$dkmsstatus" ]; then
echo "E: dkms status output is empty!" >&2
+ summary="${summary}I: FAIL $kver${crlf}"
result=1
continue
fi
- if ! echo "$dkmsstatus" | grep -q "installed$"; then
+ # This should check for exact zfs module against exact kernel
+ # abi to allow testing multiple kernels simultaniously. Some
+ # dkms modules are pre-built inside the kernel (i.e. zfs on
+ # Ubuntu) thus we should accept such result.
+ if ! echo "$dkmsstatus" | sed 's/ (WARNING! Diff between built and installed module!)//g' | grep -q "installed$"; then
echo "E: not installed" >&2
+ summary="${summary}I: FAIL $kver${crlf}"
result=1
continue
fi
+ summary="${summary}I: PASS $kver${crlf}"
+
done
# collect build logs as artifacts
@@ -116,4 +199,11 @@ for pkg in $(grep-dctrl -FDepends -e '(^| )dkms' -o -FPackage -e '\-dkms' debian
run_pkg $pkg
done
+if [ -n "$summary" ]; then
+ echo "I: Summary:"
+ echo -n "$summary"
+fi
+
exit $result
+
+# vim: sw=4:ts=4:et
Reply to: