From 90ec669db77059199c1400338497e155d6ef29f7 Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Wed, 18 May 2022 09:27:07 +0530 Subject: [PATCH 1/4] dkms: update to 3.0.6 files/kernel.d/dkms.prerm has been updated to match the kernel_prerm.d_dkms file distributed with dkms 3.0.6 Also, note that these dkms.conf directives have been deprecated since dkms 2.8.8 - MODULES_CONF - MODULES_CONF_ALIAS_TYPE - MODULES_CONF_OBSOLETES - MODULES_CONF_OBSOLETE_ONLY - REMAKE_INITRD Also, note that the output of `dkms status` was changed in version 2.8.6 old - zfs, 2.1.4, 5.15.39_1, x86_64: installed new - zfs/2.1.4, 5.15.39_1, x86_64: installed --- srcpkgs/dkms/files/kernel.d/dkms.prerm | 22 ++++++++++------------ srcpkgs/dkms/template | 15 +++++++++------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/srcpkgs/dkms/files/kernel.d/dkms.prerm b/srcpkgs/dkms/files/kernel.d/dkms.prerm index 155e9734aee2..1c4e52a073aa 100644 --- a/srcpkgs/dkms/files/kernel.d/dkms.prerm +++ b/srcpkgs/dkms/files/kernel.d/dkms.prerm @@ -1,21 +1,19 @@ -#!/bin/bash +#!/bin/sh -# We're passed the version of the kernel being installed +# We're passed the version of the kernel being removed PKGNAME="$1" VERSION="$2" if [ -x /usr/bin/dkms ]; then -while read line; do - name=`echo "$line" | awk '{print $1}' | sed 's/,$//'` - vers=`echo "$line" | awk '{print $2}' | sed 's/,$//'` - arch=`echo "$line" | awk '{print $4}' | sed 's/:$//'` - echo "dkms: removing: $name $vers (${PKGNAME}-${VERSION}) ($arch)" >&2 - /usr/bin/dkms remove -q -m $name -v $vers -k ${VERSION} -a $arch -done < <(/usr/bin/dkms status -k ${VERSION} 2>/dev/null | grep ": installed") + /usr/bin/dkms status -k "$VERSION" 2>/dev/null | while IFS=" ,:/" read -r name vers _ arch status; do + [ "$status" = installed ] || continue + echo "dkms: removing: $name $vers ($PKGNAME-$VERSION) ($arch)" >&2 + /usr/bin/dkms remove -q -m "$name" -v "$vers" -k "$VERSION" -a "$arch" + done fi -rmdir \ - "/lib/modules/${VERSION}/updates/dkms" \ - "/lib/modules/${VERSION}/updates" 2>/dev/null +rmdir 2>/dev/null \ + "/lib/modules/$VERSION/updates/dkms" \ + "/lib/modules/$VERSION/updates" exit 0 diff --git a/srcpkgs/dkms/template b/srcpkgs/dkms/template index 32b0211981f8..ac1ccecffa53 100644 --- a/srcpkgs/dkms/template +++ b/srcpkgs/dkms/template @@ -1,15 +1,15 @@ # Template file for 'dkms' pkgname=dkms -version=2.8.4 -revision=2 +version=3.0.6 +revision=1 conf_files="/etc/dkms/framework.conf" depends="bash kmod gcc make coreutils" -short_desc="Dynamic Kernel Modules System" +short_desc="Dynamic Kernel Module Support" maintainer="Orphaned " license="GPL-2.0-or-later" homepage="https://github.com/dell/dkms" -distfiles="${homepage}/archive/v${version}.tar.gz" -checksum=540912bf0d845ac333f6971a3ccb80911c770a042af1b30ffbb9b420ac979af3 +distfiles="https://github.com/dell/dkms/archive/v${version}.tar.gz" +checksum=1e1ae273d2a72e3a89b829f3c72f482fb903f12cf766c054d11612e1d70795b4 case "$XBPS_TARGET_MACHINE" in # Too many competing kernels for arm* to depend on linux-headers @@ -21,11 +21,14 @@ if [ "$CROSS_BUILD" ]; then depends+=" openssl-devel gmp-devel libada-devel libmpc-devel flex" fi +do_build() { + make dkms dkms.8 +} + do_install() { # We are only interested in the bare minimum. vbin dkms vman dkms.8 - vinstall dkms_dbversion 644 var/lib/dkms vcompletion dkms.bash-completion bash dkms vinstall dkms_framework.conf 644 etc/dkms framework.conf # Kernel hooks. From 33eedd915a5373f6ca9d8460503bd78df2ff5adf Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Sun, 31 Jul 2022 23:49:34 +0530 Subject: [PATCH 2/4] xbps-triggers: dkms trigger updated and bugfixed The output format of `dkms status` has changed in v2.8.6 old - zfs, 2.1.4, 5.15.39_1, x86_64: installed new - zfs/2.1.4, 5.15.39_1, x86_64: installed So, I've re-worked the _modver and _kver detection logic. NOTE: The detection logic should ideally be identical to the detection logic in srcpkgs/dkms/files/kernel.d/dkms.prerm Also, there was a bug. If a package tried to install a dkms module that failed to build for *all* of the installed kernels, then the output of dkms status for that module would be - old - module-name, x.y.z: added new - module-name/x.y.z: added Which would cause the dkms trigger to set _kver to "added", and then the following call to `dkms remove` would set the flag `-k $_kver`, and dkms would get confused trying to find a kernel of version "added". This commit fixes that bug. --- srcpkgs/dkms/template | 2 +- srcpkgs/xbps-triggers/files/dkms | 25 +++++++++++++++---------- srcpkgs/xbps-triggers/template | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/srcpkgs/dkms/template b/srcpkgs/dkms/template index ac1ccecffa53..ee16e8c3aeb5 100644 --- a/srcpkgs/dkms/template +++ b/srcpkgs/dkms/template @@ -3,7 +3,7 @@ pkgname=dkms version=3.0.6 revision=1 conf_files="/etc/dkms/framework.conf" -depends="bash kmod gcc make coreutils" +depends="bash kmod gcc make coreutils xbps-triggers>=0.123_1" short_desc="Dynamic Kernel Module Support" maintainer="Orphaned " license="GPL-2.0-or-later" diff --git a/srcpkgs/xbps-triggers/files/dkms b/srcpkgs/xbps-triggers/files/dkms index fcd64efd0301..f80f23c1dd47 100755 --- a/srcpkgs/xbps-triggers/files/dkms +++ b/srcpkgs/xbps-triggers/files/dkms @@ -2,7 +2,7 @@ # # DKMS trigger. Used to add/build/install or remove the specified modules # from all kernels. -# +# # Modules can be specified like: # dkms_modules=" ..." # @@ -21,19 +21,24 @@ UPDATE="$5" export PATH="usr/bin:usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin" remove_modules() { - local _modver _kver - # Remove the specified modules from all kernels. set -- ${dkms_modules} while [ $# -gt 0 ]; do - $DKMS status -m "$1" | while read line; do - if $(echo "$line" | egrep -vq '(added|built|installed)'); then - shift 2; continue + $DKMS status -m "$1" | while read -r line; do + IFS=,:/ read -r modname modver kver arch status _ <<-EOF + $line + EOF + if [ "${line#*: }" = added ]; then + # The module wasn't built successfully for any kernel version + printf %s "Cleaning up DKMS module '$modname-$modver'... " + $DKMS remove -m "$modname" -v "$modver" >/dev/null 2>&1 + elif [ "$status" = installed ] || [ "$status" = built ]; then + printf %s "Removing DKMS module '$modname-$modver' for kernel-$kver... " + $DKMS remove -m "$modname" -v "$modver" -k "$kver" >/dev/null 2>&1 + else + # Invalid output + continue fi - _modver=$(echo "$line"|sed "s/$1,[[:blank:]]\([^,]*\)[,:].*/\1/;t;d") - _kver=$(echo "$line"|awk '{print $3}'|sed "s/\(.*\),$/\1/") - echo -n "Removing DKMS module '${1}-${_modver}' for kernel-${_kver}... " - $DKMS remove -m "$1" -v "${_modver}" -k "${_kver}" >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "done." else diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template index b1e4f34a4dde..f0249f6f9964 100644 --- a/srcpkgs/xbps-triggers/template +++ b/srcpkgs/xbps-triggers/template @@ -1,6 +1,6 @@ # Template file for 'xbps-triggers' pkgname=xbps-triggers -version=0.122 +version=0.123 revision=1 bootstrap=yes short_desc="XBPS triggers for Void Linux" From 6c79a7909e11158e4acbab41966edfb60871c1a5 Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Sun, 15 May 2022 12:17:19 +0530 Subject: [PATCH 3/4] broadcom-wl-dkms: remove deprecated dkms directive --- srcpkgs/broadcom-wl-dkms/files/dkms.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/srcpkgs/broadcom-wl-dkms/files/dkms.conf b/srcpkgs/broadcom-wl-dkms/files/dkms.conf index a6219f4c89b8..96acd0dc2092 100644 --- a/srcpkgs/broadcom-wl-dkms/files/dkms.conf +++ b/srcpkgs/broadcom-wl-dkms/files/dkms.conf @@ -3,4 +3,3 @@ PACKAGE_VERSION="@VERSION@" BUILT_MODULE_NAME[0]="wl" DEST_MODULE_LOCATION[0]="/kernel/drivers/net/wireless" AUTOINSTALL="yes" -REMAKE_INITRD="yes" From 13608e759b82397e59bcc3a80fcf5898475afbe2 Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Sun, 15 May 2022 12:18:55 +0530 Subject: [PATCH 4/4] rtl8822bu-dkms: remove deprecated dkms directive --- srcpkgs/rtl8822bu-dkms/files/dkms.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/srcpkgs/rtl8822bu-dkms/files/dkms.conf b/srcpkgs/rtl8822bu-dkms/files/dkms.conf index 3156be8132bc..243a32dbebca 100644 --- a/srcpkgs/rtl8822bu-dkms/files/dkms.conf +++ b/srcpkgs/rtl8822bu-dkms/files/dkms.conf @@ -8,4 +8,3 @@ KSRC=/lib/modules/${kernelver}/build" CLEAN="make clean" DEST_MODULE_LOCATION="/kernel/drivers/net/wireless" AUTOINSTALL="yes" -REMAKE_INITRD=no