[Pkg-dkms-commits] [SCM] Maintainance of the dkms package branch, master, updated. debian/2.0.21.1-1-12-gf4a197f

Giuseppe Iuculano giuseppe at iuculano.it
Mon May 18 20:11:39 UTC 2009


The following commit has been merged in the master branch:
commit f4a197fbf478099136a97482e430bf4abab75f21
Author: Giuseppe Iuculano <giuseppe at iuculano.it>
Date:   Mon May 18 22:10:30 2009 +0200

    debian/patches/16_dpkg-divert.patch: Use dpkg-divert to override an existing kernel module, thanks to Andrea Mennucci. (Closes: #529059)
    
    when dkms installs, it may override an existing kernel module
    by a new one. To this end, dkms moves away the old module using 'mv'
    
    But this breaks if the kernel is upated/reinstalled (as for example
    after the recent security updates).
    
    There is though a more effective way, and it is to use dpkg-divert

diff --git a/debian/patches/16_dpkg-divert.patch b/debian/patches/16_dpkg-divert.patch
new file mode 100644
index 0000000..d9de25b
--- /dev/null
+++ b/debian/patches/16_dpkg-divert.patch
@@ -0,0 +1,50 @@
+Use dpkg-divert to override an existing kernel module, thanks to Andrea Mennucci. (Closes: #529059)
+--- a/dkms
++++ b/dkms
+@@ -1258,13 +1258,20 @@ function install_module()
+ 	if [ "$module_count" -gt 1 ]; then
+ 	    echo $" - Multiple same named modules!"
+ 	    echo $"   - $module_count named ${dest_module_name[$count]}$module_suffix in $lib_tree/"
+-	    echo $"   - All instances of this module will now be stored for reference purposes ONLY"
+-	    echo $"   - Storing in $dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/"
++	    if ! which dpkg-divert >/dev/null 2>&1 ; then
++		    echo $"   - All instances of this module will now be stored for reference purposes ONLY"
++		    echo $"   - Storing in $dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/"
++	    fi
+ 	    for module_dup in `find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f`; do
+ 		dup_tree=`echo $module_dup | sed "s#^$lib_tree##" | sed "s#${dest_module_name[$count]}$module_suffix##"`
+-		echo $"     - Stored $module_dup"
+-		mkdir -p "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree"
+-		mv -f $module_dup "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree"
++		if which dpkg-divert >/dev/null 2>&1 ; then
++			dpkg-divert --add --rename --divert \
++			"$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree/$module_dup"  $module_dup
++	        else
++		       echo $"     - Stored $module_dup"
++		       mkdir -p "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree"
++		       mv -f $module_dup "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree"
++	        fi
+ 	    done
+ 	fi
+ 
+@@ -1605,10 +1612,16 @@ function do_uninstall()
+ 	    rm -f "$install_tree/$1${real_dest_module_location}/${dest_module_name[$count]}$module_suffix"
+ 	    echo $" - Original module"
+ 	    if [ -e "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" ]; then
+-		echo $"   - Archived original module found in the DKMS tree"
+-		echo $"   - Moving it to: $install_tree/$1${DEST_MODULE_LOCATION[$count]}/"
+-		mkdir -p "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/"
+-		mv -f "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/" 2>/dev/null
++		if ! which dpkg-divert >/dev/null 2>&1 ; then
++			echo $"   - Archived original module found in the DKMS tree"
++			echo $"   - Moving it to: $install_tree/$1${DEST_MODULE_LOCATION[$count]}/"
++			mkdir -p "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/"
++			mv -f "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" \
++		       	"$install_tree/$1${DEST_MODULE_LOCATION[$count]}/" 2>/dev/null
++		else
++			dpkg-divert --remove --rename --divert "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" \
++		        "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/"
++		fi
+ 	    else
+ 		echo $"   - No original module was found for this module on this kernel."
+ 		echo $"   - Use the dkms install command to reinstall any previous module version."
diff --git a/debian/patches/series b/debian/patches/series
index e4373fe..24bf59f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 08-use-update-initramfs.patch
 15_modprobe.patch
+16_dpkg-divert.patch

-- 
Maintainance of the dkms package



More information about the Pkg-dkms-commits mailing list