Package: dkms
Version: 2.2.0.3-1
Severity: normal

Hello,


When building a DKMS module that don't supplies MODULE_VERSION strings
that tries to replace the in-kernel module that supplies this
MODULE_VERSION string DKMS fails to recognize that both modules are
different because it is not cleaning the variable res.


Just see this dirty test:

# Define get_module_verinfo (just c&p from /usr/bin/dmks)
$ get_module_verinfo(){
    local vals=
    while read -a vals; do
        case ${vals[0]} in
            version:) res[0]=${vals[1]}; res[2]=${vals[2]};;
            srcversion:) res[1]=${vals[1]};;
        esac
    done < <(modinfo $1)
}



$ unset res



$ get_module_verinfo coretemp
$ echo $res
         <- nothing, good since coretemp don't has MODULE_VERSION


get_module_verinfo e1000e
$ echo $res
1.5.1-k             <- GOOD, this is the MODULE_VERSION of e1000e


$ get_module_verinfo coretemp
$ echo $res
1.5.1-k             <- FAIL!!



This causes that DKMS don't installs the new module that is clearly
different than the in-kernel one (the first has no MODULE_VERSION and
the second one has)

The attached patch fixes this issue
--- a/usr/sbin/dkms	2012-08-08 20:55:42.752487579 +0200
+++ b/usr/sbin/dkms 2012-08-08 20:56:13.451549256 +0200
@@ -646,6 +646,7 @@
 
 # Little helper function for parsing the output of modinfo.
 get_module_verinfo(){
+    unset res
     local vals=
     while read -a vals; do
 	case ${vals[0]} in

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to