[dkms] Format dkms main command.

Simone Caronni slaanesh at fedoraproject.org
Wed Sep 24 09:09:19 UTC 2014


commit eaa20dab0e0a3fe6751d5032ce916223733eea8c
Author: Simone Caronni <negativo17 at gmail.com>
Date:   Wed Sep 24 11:09:19 2014 +0200

    Format dkms main command.

 dkms-format.patch | 4382 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 4382 insertions(+), 0 deletions(-)
---
diff --git a/dkms-format.patch b/dkms-format.patch
new file mode 100644
index 0000000..d33e05b
--- /dev/null
+++ b/dkms-format.patch
@@ -0,0 +1,4382 @@
+diff --git a/dkms b/dkms
+index 09f74bc..0a81c82 100644
+--- a/dkms
++++ b/dkms
+@@ -24,16 +24,16 @@
+ # All of the variables we will accept from dkms.conf.
+ # Does not include directives
+ readonly dkms_conf_variables="CLEAN REMAKE_INITRD remake_initrd PACKAGE_NAME
+-       PACKAGE_VERSION POST_ADD POST_BUILD POST_INSTALL POST_REMOVE PRE_BUILD
+-       PRE_INSTALL BUILD_DEPENDS BUILD_EXCLUSIVE_KERNEL BUILD_EXCLUSIVE_ARCH
+-       build_exclude OBSOLETE_BY MAKE MAKE_MATCH MODULES_CONF
+-       modules_conf_array PATCH PATCH_MATCH patch_array BUILT_MODULE_NAME
+-       built_module_name BUILT_MODULE_LOCATION built_module_location
+-       DEST_MODULE_NAME dest_module_name MODULES_CONF_OBSOLETES
+-       DEST_MODULE_LOCATION dest_module_location
+-       modules_conf_obsoletes MODULES_CONF_ALIAS_TYPE
+-       modules_conf_alias_type STRIP strip MODULES_CONF_OBSOLETE_ONLY
+-       modules_conf_obsolete_only AUTOINSTALL"
++   PACKAGE_VERSION POST_ADD POST_BUILD POST_INSTALL POST_REMOVE PRE_BUILD
++   PRE_INSTALL BUILD_DEPENDS BUILD_EXCLUSIVE_KERNEL BUILD_EXCLUSIVE_ARCH
++   build_exclude OBSOLETE_BY MAKE MAKE_MATCH MODULES_CONF
++   modules_conf_array PATCH PATCH_MATCH patch_array BUILT_MODULE_NAME
++   built_module_name BUILT_MODULE_LOCATION built_module_location
++   DEST_MODULE_NAME dest_module_name MODULES_CONF_OBSOLETES
++   DEST_MODULE_LOCATION dest_module_location
++   modules_conf_obsoletes MODULES_CONF_ALIAS_TYPE
++   modules_conf_alias_type STRIP strip MODULES_CONF_OBSOLETE_ONLY
++   modules_conf_obsolete_only AUTOINSTALL"
+ 
+ # Some important regular expressions.  Requires bash 3 or above.
+ # Any poor souls still running bash 2 or older really need an upgrade.
+@@ -41,7 +41,7 @@ readonly y_re='^(Y|y)'
+ readonly mv_re='^([^/]*)/(.*)$'
+ readonly rh_kernels='(debug|summit|smp|enterprise|bigmem|hugemem|BOOT|vmnix)'
+ 
+-#Areas that will vary between Linux and other OS's
++# Areas that will vary between Linux and other OS's
+ _get_kernel_dir() {
+     KVER=$1
+     case ${current_os} in
+@@ -70,18 +70,18 @@ invoke_command()
+     local exitval=0
+     [[ $verbose ]] && echo -e "$1" || echo -en "$2..."
+     if [[ $3 = background && ! $verbose ]]; then
+-	local pid progresspid
+-	(eval "$1" >/dev/null 2>&1) & pid=$!
+-	while [ -d /proc/$pid ]; do
+-		sleep 3
+-		echo -en "."
+-	done & progresspid=$!
+-	wait $pid 2>/dev/null
+-	exitval=$?
+-	kill $progresspid 2>/dev/null
+-	wait $progresspid 2>/dev/null
++        local pid progresspid
++        (eval "$1" >/dev/null 2>&1) & pid=$!
++        while [ -d /proc/$pid ]; do
++            sleep 3
++            echo -en "."
++        done & progresspid=$!
++        wait $pid 2>/dev/null
++        exitval=$?
++        kill $progresspid 2>/dev/null
++        wait $progresspid 2>/dev/null
+     else
+-	eval "$1"; exitval=$?
++        eval "$1"; exitval=$?
+     fi
+     (($exitval > 0)) && echo -en "(bad exit status: $exitval)"
+     echo -en "\n"
+@@ -141,11 +141,11 @@ VER()
+     # The result should compare correctly as a string.
+ 
+     echo $1 | sed -e 's:\([^0-9]\)\([0-9]\):\1 \2:g' \
+-		  -e 's:\([0-9]\)\([^0-9]\):\1 \2:g' \
+-		  -e 's:\(.*\): \1 :' \
+-		  -e 's: \([0-9]\) : 00\1 :g' \
+-		  -e 's: \([0-9][0-9]\) : 0\1 :g' \
+-		  -e 's: ::g'
++        -e 's:\([0-9]\)\([^0-9]\):\1 \2:g' \
++        -e 's:\(.*\): \1 :' \
++        -e 's: \([0-9]\) : 00\1 :g' \
++        -e 's: \([0-9][0-9]\) : 0\1 :g' \
++        -e 's: ::g'
+ }
+ 
+ # Figure out the correct module suffix for the kernel we are currently
+@@ -166,14 +166,14 @@ set_kernel_source_dir()
+ 
+ # A little test function for DKMS commands that only work on one kernel.
+ have_one_kernel() {
+-       if (( ${#kernelver[@]} != 1 )); then
+-	  die 4 $"The action $1 does not support multiple kernel version" \
+-	  $"parameters on the command line."
+-       fi
+-       if [[ $all ]]; then
+-           die 5 $"The action $1 does not support the --all" \
+-	   $"parameter."
+-       fi
++    if (( ${#kernelver[@]} != 1 )); then
++        die 4 $"The action $1 does not support multiple kernel version" \
++        $"parameters on the command line."
++    fi
++    if [[ $all ]]; then
++        die 5 $"The action $1 does not support the --all" \
++        $"parameter."
++    fi
+ }
+ 
+ # Set up the kernelver and arch arrays.  You must have a 1:1 correspondence --
+@@ -185,53 +185,50 @@ setup_kernels_arches()
+ {
+     # If all is set, use dkms status to fill the arrays
+     if [[ $all && $1 != status ]]; then
+-	local i=0
+-	while read line; do
+-	    line=${line#*/}; line=${line#*/};
+-	    # (I would leave out the delimiters in the status output
+-	    #  in the first place.)
+-	    kernelver[$i]=${line%/*}
+-	    arch[$i]=${line#*/}
+-	    i=$(($i + 1))
+-	done < <(module_status_built "$module" "$module_version")
++        local i=0
++        while read line; do
++            line=${line#*/}; line=${line#*/};
++            # (I would leave out the delimiters in the status output
++            #  in the first place.)
++            kernelver[$i]=${line%/*}
++            arch[$i]=${line#*/}
++            i=$(($i + 1))
++        done < <(module_status_built "$module" "$module_version")
+     fi
+ 
+     # Set default kernel version and arch, if none set (but only --all isn't set)
+     if [[ $1 != status ]]; then
+-	if [[ ! $kernelver && ! $all ]]; then
+-	    kernelver[0]=$(uname -r)
+-	    kernels_arches_default="yes"
+-	fi
+-	if [[ ! $arch ]]; then
+-	    kernelver_rpm=$(rpm -qf "/lib/modules/$kernelver" 2>/dev/null | \
+-		grep -v "not owned by any package" | grep kernel | head -n 1)
+-	    if ! arch[0]=$(rpm -q --queryformat "%{ARCH}" "$kernelver_rpm" 2>/dev/null); then
+-		arch[0]=$(uname -m)
+-		if [[ $arch = x86_64 ]] && \
+-		    grep -q Intel /proc/cpuinfo && \
+-		    ls $install_tree/$kernelver/build/configs \
+-		    2>/dev/null | grep -q "ia32e"; then
+-		    arch[0]="ia32e"
+-		fi
+-	    fi
+-	fi
++        if [[ ! $kernelver && ! $all ]]; then
++            kernelver[0]=$(uname -r)
++            kernels_arches_default="yes"
++        fi
++        if [[ ! $arch ]]; then
++            kernelver_rpm=$(rpm -qf "/lib/modules/$kernelver" 2>/dev/null | \
++            grep -v "not owned by any package" | grep kernel | head -n 1)
++            if ! arch[0]=$(rpm -q --queryformat "%{ARCH}" "$kernelver_rpm" 2>/dev/null); then
++                arch[0]=$(uname -m)
++                if [[ $arch = x86_64 ]] && grep -q Intel /proc/cpuinfo && ls $install_tree/$kernelver/build/configs 2>/dev/null | grep -q "ia32e"; then
++                    arch[0]="ia32e"
++                fi
++            fi
++        fi
+     fi
+ 
+     # If only one arch is specified, make it so for all the kernels
+     if ((${#arch[@]} == 1 && ${#kernelver[@]} > 1)); then
+-	while ((${#arch[@]} < ${#kernelver[@]})); do
+-	    arch[${#arch[@]}]=$arch
+-	done
++        while ((${#arch[@]} < ${#kernelver[@]})); do
++            arch[${#arch[@]}]=$arch
++        done
+     fi
+ 
+     # Set global multi_arch
+     multi_arch=""
+     local i=0
+     for ((i=0; $i < ${#arch[@]}; i++)); do
+-	[[ $arch != ${arch[$i]} ]] && {
+-	    multi_arch="true"
+-	    break
+-	}
++        [[ $arch != ${arch[$i]} ]] && {
++            multi_arch="true"
++            break
++        }
+     done
+ }
+ 
+@@ -245,9 +242,9 @@ do_depmod()
+         return
+     fi
+     if [[ -f /boot/System.map-$1 ]]; then
+-	depmod -a "$1" -F "/boot/System.map-$1"
++        depmod -a "$1" -F "/boot/System.map-$1"
+     else
+-	depmod -a "$1"
++        depmod -a "$1"
+     fi
+ }
+ 
+@@ -261,24 +258,24 @@ make_initrd()
+     [[ $no_initrd ]] && return
+     local mkinitrd kernel_file initrd_dir="/boot"
+     for mkinitrd in dracut update-initramfs mkinitrd ''; do
+-	[[ $mkinitrd ]] && which "$mkinitrd" >/dev/null 2>&1 && break
++        [[ $mkinitrd ]] && which "$mkinitrd" >/dev/null 2>&1 && break
+     done
+ 
+-    # no mkinitrd? Just return.
++    # No mkinitrd? Just return.
+     [[ $mkinitrd ]] || return 0
+ 
+-    # back up our current initrd
++    # Back up our current initrd
+     echo $""
+     [[ $2 = ia64 && -d /boot/efi/efi/redhat ]] && initrd_dir="/boot/efi/efi/redhat"
+-    # find out what the proper filename will be
++    # Find out what the proper filename will be
+     for initrd in "initrd-$1.img" "initramfs-$1.img" "initrd.img-$1" "initrd-$1" ''; do
+-	[[ $initrd && -f $initrd_dir/$initrd ]] && break
++        [[ $initrd && -f $initrd_dir/$initrd ]] && break
+     done
+     if ! [[ $initrd ]]; then
+-	# Return if we cannot find an initrd.
+-	warn $"Unable to find an initial ram disk that I know how to handle." \
+-	    $"Will not try to make an initrd."
+-	return 0
++        # Return if we cannot find an initrd.
++        warn $"Unable to find an initial ram disk that I know how to handle." \
++            $"Will not try to make an initrd."
++        return 0
+     fi
+     echo $"Backing up $initrd to $initrd_dir/$initrd.old-dkms"
+     cp -f "$initrd_dir/$initrd" "$initrd_dir/$initrd.old-dkms"
+@@ -286,27 +283,27 @@ make_initrd()
+     echo $"(If next boot fails, revert to $initrd.old-dkms image)"
+ 
+     if [[ $mkinitrd = dracut ]]; then
+-	invoke_command "$mkinitrd -f $initrd_dir/$initrd $1" "$mkinitrd" background
++        invoke_command "$mkinitrd -f $initrd_dir/$initrd $1" "$mkinitrd" background
+     elif [[ $mkinitrd = update-initramfs ]]; then
+-	invoke_command "$mkinitrd -u" "$mkinitrd" background
++        invoke_command "$mkinitrd -u" "$mkinitrd" background
+     elif $mkinitrd --version >/dev/null 2>&1; then
+-	invoke_command "$mkinitrd -f $initrd_dir/$initrd $1" "$mkinitrd" background
++        invoke_command "$mkinitrd -f $initrd_dir/$initrd $1" "$mkinitrd" background
+     elif [[ -e /etc/SuSE-release || -d /etc/SuSEconfig ]]; then
+-	for kernel_file in vmlinuz vmlinux ''; do
+-	    [[ $kernel_file && -f $initrd_dir/$kernel_file ]] && break
+-	done
+-	if [[ ! $kernel_file ]]; then
+-	    error $"Unable to find valid kernel file under " \
+-		$"$initrd_dir for kernel version $1" 
+-	    return 1;
+-	fi
+-	invoke_command "$mkinitrd -k $kernel_file-$1 -i $initrd" "$mkinitrd" background
++        for kernel_file in vmlinuz vmlinux ''; do
++            [[ $kernel_file && -f $initrd_dir/$kernel_file ]] && break
++        done
++        if [[ ! $kernel_file ]]; then
++            error $"Unable to find valid kernel file under " \
++            $"$initrd_dir for kernel version $1" 
++            return 1;
++        fi
++        invoke_command "$mkinitrd -k $kernel_file-$1 -i $initrd" "$mkinitrd" background
+     elif [[ -e /etc/debian_version ]]; then
+-	invoke_command "$mkinitrd -o $initrd_dir/$initrd $1" "$mkinitrd" background
++        invoke_command "$mkinitrd -o $initrd_dir/$initrd $1" "$mkinitrd" background
+     else
+-	echo $""
+-	echo $"Calling $mkinitrd (bad exit status 9 may occur)"
+-	invoke_command "$mkinitrd" "$mkinitrd" background
++        echo $""
++        echo $"Calling $mkinitrd (bad exit status 9 may occur)"
++        invoke_command "$mkinitrd" "$mkinitrd" background
+     fi
+     return
+ }
+@@ -318,26 +315,41 @@ distro_version_rpm()
+     local r wp ver dist
+ 
+     for r in redhat-release sles-release suse-release ovs-release; do
+-	wp=$(rpm -q --whatprovides "$r") || continue
+-	ver=$(rpm -q --qf "%{version}\n" ${wp})
+-	case $r in
+-	    sles*) echo sles${ver};;
+-	    suse*) echo suse${ver};;
+-	    ovs*)  echo ovm${ver};;
+-	    redhat*)
+-		case $wp in
+-		    redhat*|sl*)
+-			ver=$(echo $ver | \
+-			sed -e 's/^\([[:digit:]]*\).*/\1/g')
+-			echo el${ver};;
+-		    centos*|enterprise*) echo el${ver};;
+-		    fedora*) echo fc${ver};;
+-		    *) echo unknown ;;
+-		esac
+-	       ;;
+-	    *) echo unknown;;
+-	esac
+-	return
++        wp=$(rpm -q --whatprovides "$r") || continue
++        ver=$(rpm -q --qf "%{version}\n" ${wp})
++        case $r in
++            sles*)
++                echo sles${ver}
++                ;;
++            suse*)
++                echo suse${ver}
++                ;;
++            ovs*)
++                echo ovm${ver}
++                ;;
++            redhat*)
++                case $wp in
++                    redhat*|sl*)
++                        ver=$(echo $ver | \
++                        sed -e 's/^\([[:digit:]]*\).*/\1/g')
++                        echo el${ver}
++                        ;;
++                    centos*|enterprise*)
++                        echo el${ver}
++                        ;;
++                    fedora*)
++                        echo fc${ver}
++                        ;;
++                    *)
++                        echo unknown
++                        ;;
++                esac
++                ;;
++            *)
++                echo unknown
++                ;;
++        esac
++        return
+     done
+     echo unknown
+ }
+@@ -349,36 +361,38 @@ distro_version()
+     # What distribution are we running?
+     local LSB_DESCRIPTION DISTRIB_ID DISTRIB_RELEASE ver
+ 
+-    # try the LSB-provided strings first
++    # Try the LSB-provided strings first
+     if [ -r /etc/lsb-release ]; then
+-	. /etc/lsb-release
++        . /etc/lsb-release
+     elif type lsb_release >/dev/null 2>&1; then
+-	DISTRIB_ID=$(lsb_release -i -s)
+-	DISTRIB_RELEASE=$(lsb_release -r -s)
++        DISTRIB_ID=$(lsb_release -i -s)
++        DISTRIB_RELEASE=$(lsb_release -r -s)
+     fi
+ 
+     case ${DISTRIB_ID} in
+-	Fedora)     echo fc${DISTRIB_RELEASE} ;;
+-	RedHatEnterprise*|CentOS|ScientificSL)  # OEL also reports as such
+-	# format is 4.7, 5.3
+-	    ver=$(echo "${DISTRIB_RELEASE}" | \
+-		sed -e 's/^\([[:digit:]]*\).*/\1/g')
+-	    echo el${ver}
+-	    ;;
+-	SUSE*)
+-	    if [[ $(lsb_release -d -s) =~ Enterprise ]]; then
+-		echo sles${DISTRIB_RELEASE}
+-	    else
+-		echo suse${DISTRIB_RELEASE}
+-	    fi
+-	    ;;
+-	*)
+-	    if [[ ${DISTRIB_ID} && ${DISTRIB_RELEASE} ]]; then
+-		echo "${DISTRIB_ID}${DISTRIB_RELEASE}"
+-	    else
+-		distro_version_rpm
+-	    fi
+-	    ;;
++        Fedora)
++            echo fc${DISTRIB_RELEASE}
++            ;;
++        RedHatEnterprise*|CentOS|ScientificSL)
++            # OEL also reports as such; format is 4.7, 5.3
++            ver=$(echo "${DISTRIB_RELEASE}" | \
++            sed -e 's/^\([[:digit:]]*\).*/\1/g')
++            echo el${ver}
++            ;;
++        SUSE*)
++            if [[ $(lsb_release -d -s) =~ Enterprise ]]; then
++                echo sles${DISTRIB_RELEASE}
++            else
++                echo suse${DISTRIB_RELEASE}
++            fi
++            ;;
++        *)
++            if [[ ${DISTRIB_ID} && ${DISTRIB_RELEASE} ]]; then
++                echo "${DISTRIB_ID}${DISTRIB_RELEASE}"
++            else
++                distro_version_rpm
++            fi
++            ;;
+     esac
+ }
+ 
+@@ -388,24 +402,44 @@ override_dest_module_location()
+     [[ ${addon_modules_dir} ]] && echo "/${addon_modules_dir}" && return
+ 
+     if [ "$current_os" = "GNU/kFreeBSD" ] ; then
+-	# Does not support subdirs, regardless of distribution
+-	echo "" && return
++        # Does not support subdirs, regardless of distribution
++        echo "" && return
+     fi
+ 
+     case "$running_distribution" in
+-	fc[12345]) ;;
+-	el[1234]) ;;
+-	sles[123456789]) ;;
+-	suse[123456789]) ;;
+-	suse10\.[01]) ;;
+-	fc*) echo "/extra" && return ;;
+-	el*) echo "/extra" && return ;;
+-	ovm*) echo "/extra" && return ;;
+-	sles*) echo "/updates" && return ;;
+-	suse*) echo "/updates" && return ;;
+-	Ubuntu*) echo "/updates/dkms" && return ;;
+-	Debian*) echo "/updates/dkms" && return ;;
+-	*) ;;
++    fc[12345])
++        ;;
++    el[1234])
++        ;;
++    sles[123456789])
++        ;;
++    suse[123456789])
++        ;;
++    suse10\.[01])
++        ;;
++    fc*)
++        echo "/extra" && return
++        ;;
++    el*)
++        echo "/extra" && return
++        ;;
++    ovm*)
++        echo "/extra" && return
++        ;;
++    sles*)
++        echo "/updates" && return
++        ;;
++    suse*)
++        echo "/updates" && return
++        ;;
++    Ubuntu*)
++        echo "/updates/dkms" && return
++        ;;
++    Debian*)
++        echo "/updates/dkms" && return
++        ;;
++    *)
++        ;;
+     esac
+     echo "$orig_location"
+ }
+@@ -423,21 +457,21 @@ safe_source() {
+     declare -a -r export_envs=("$@")
+     local tmpfile=$(mktemp_or_die)
+     ( exec >"$tmpfile"
+-	. "$to_source_file" >/dev/null
+-	# This is really ugly, but a neat hack
+-	# Remember, in bash 2.0 and greater all variables are really arrays.
+-	for _export_env in "${export_envs[@]}"; do
+-	    for _i in $(eval echo \${!$_export_env[@]}); do
+-		eval echo '$_export_env[$_i]=\"${'$_export_env'[$_i]}\"'
+-	    done
+-	done
+-
+-	# handle DKMS_DIRECTIVE stuff specially.
+-	for directive in $(set | grep ^DKMS_DIRECTIVE | cut -d = -f 2-3); do
+-	    directive_name=${directive%%=*}
+-	    directive_value=${directive#*=}
+-	    echo "$directive_name=\"$directive_value\""
+-	done
++    . "$to_source_file" >/dev/null
++    # This is really ugly, but a neat hack
++    # Remember, in bash 2.0 and greater all variables are really arrays.
++    for _export_env in "${export_envs[@]}"; do
++        for _i in $(eval echo \${!$_export_env[@]}); do
++            eval echo '$_export_env[$_i]=\"${'$_export_env'[$_i]}\"'
++        done
++    done
++
++    # handle DKMS_DIRECTIVE stuff specially.
++    for directive in $(set | grep ^DKMS_DIRECTIVE | cut -d = -f 2-3); do
++        directive_name=${directive%%=*}
++        directive_value=${directive#*=}
++        echo "$directive_name=\"$directive_value\""
++    done
+     )
+     . "$tmpfile"
+     rm "$tmpfile"
+@@ -466,15 +500,15 @@ read_conf()
+     [[ $3 ]] && read_conf_file="$3"
+ 
+     [[ -r $read_conf_file ]] || die 4 $"Could not locate dkms.conf file." \
+-	$"File: $conf does not exist."
++    $"File: $conf does not exist."
+ 
+     [[ $last_mvka = $module/$module_version/$1/$2 && \
+-	$last_mvka_conf = $(readlink -f $read_conf_file) ]] && return
++    $last_mvka_conf = $(readlink -f $read_conf_file) ]] && return
+ 
+ 
+     # Clear variables and arrays
+     for var in $dkms_conf_variables; do
+-	unset $var
++        unset $var
+     done
+ 
+     # Source in the dkms.conf.
+@@ -488,10 +522,10 @@ read_conf()
+ 
+     # Source in the directive_array
+     for directive in "${directive_array[@]}"; do
+-	directive_name=${directive%%=*}
+-	directive_value=${directive#*=}
+-	export $directive_name="$directive_value"
+-	echo $"DIRECTIVE: $directive_name=\"$directive_value\""
++        directive_name=${directive%%=*}
++        directive_value=${directive#*=}
++        export $directive_name="$directive_value"
++        echo $"DIRECTIVE: $directive_name=\"$directive_value\""
+     done
+ 
+     # Set variables
+@@ -509,149 +543,152 @@ read_conf()
+     # Set module naming/location arrays
+     local index array_size=0 s
+     for s in ${#BUILT_MODULE_NAME[@]} \
+-	${#BUILT_MODULE_LOCATION[@]} \
+-	${#DEST_MODULE_NAME[@]} \
+-	${#DEST_MODULE_LOCATION[@]}; do
+-	((s > array_size)) && array_size=$s
++        ${#BUILT_MODULE_LOCATION[@]} \
++        ${#DEST_MODULE_NAME[@]} \
++        ${#DEST_MODULE_LOCATION[@]}; do
++        ((s > array_size)) && array_size=$s
+     done
+     for ((index=0; index < array_size; index++)); do
+-	# Set values
+-	built_module_name[$index]=${BUILT_MODULE_NAME[$index]}
+-	built_module_location[$index]=${BUILT_MODULE_LOCATION[$index]}
+-	dest_module_name[$index]=${DEST_MODULE_NAME[$index]}
+-	dest_module_location[$index]=${DEST_MODULE_LOCATION[$index]}
+-	modules_conf_obsoletes[$index]=${MODULES_CONF_OBSOLETES[$index]}
+-	modules_conf_alias_type[$index]=${MODULES_CONF_ALIAS_TYPE[$index]}
+-	case ${MODULES_CONF_OBSOLETE_ONLY[$index]} in
+-	    [yY]*) modules_conf_obsolete_only[$index]="yes";;
+-	esac
+-	case ${STRIP[$index]} in
+-	    [nN]*) strip[$index]="no";;
+-	    [yY]*) strip[$index]="yes";;
+-	    '')    strip[$index]=${strip[0]:-yes};;
+-	esac
+-
+-	# If unset, set by defaults
+-	[[ ! ${built_module_name[$index]} ]] && \
+-	    ((${#DEST_MODULE_LOCATION[@]} == 1)) && \
+-	    built_module_name[$index]=$module
+-	[[ ! ${dest_module_name[$index]} ]] && \
+-	    dest_module_name[$index]=${built_module_name[$index]}
+-	[[ ${built_module_location[$index]} && \
+-	    ${built_module_location[$index]:(-1)} != / ]] && \
+-	    built_module_location[$index]="${built_module_location[$index]}/"
+-
+-	# FAIL if no built_module_name
+-	if [[ ! ${built_module_name[$index]} ]]; then
+-	    echo $"dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #$index." >&2
+-	    return_value=1
+-	fi
+-
+-	# FAIL if built_module_name ends in .o or .ko
+-	case ${built_module_name[$index]} in
+-	*.o|*.ko)
+-	    echo $"dkms.conf: Error! 'BUILT_MODULE_NAME' directive ends in '.o' or '.ko' in record #$index." >&2
+-	    return_value=1
+-	    ;;
+-	esac
+-
+-	# FAIL if dest_module_name ends in .o or .ko
+-	case ${dest_module_name[$index]} in
+-	*.o|*.ko)
+-	    echo $"dkms.conf: Error! 'DEST_MODULE_NAME' directive ends in '.o' or '.ko' in record #$index." >&2
+-	    return_value=1
+-	    ;;
+-	esac
+-
+-	# Override location for specific kernels
+-	dest_module_location[$index]="$(override_dest_module_location ${dest_module_location[$index]})"
+-
+-	# Fail if no DEST_MODULE_LOCATION
+-	if [[ ! ${DEST_MODULE_LOCATION[$index]} ]]; then
+-	    echo $"dkms.conf: Error! No 'DEST_MODULE_LOCATION' directive specified for record #$index.">&2
+-	    return_value=1
+-	fi
+-	    # Fail if bad DEST_MODULE_LOCATION
+-	case ${DEST_MODULE_LOCATION[$index]} in
+-	    /kernel*) ;;
+-	    /updates*) ;;
+-	    /extra*) ;;
+-	    *)
+-		echo $"dkms.conf: Error! Directive 'DEST_MODULE_LOCATION' does not begin with">&2
+-		echo $"'/kernel', '/updates', or '/extra' in record #$index.">&2
+-		return_value=1
+-		;;
+-	esac
++        # Set values
++        built_module_name[$index]=${BUILT_MODULE_NAME[$index]}
++        built_module_location[$index]=${BUILT_MODULE_LOCATION[$index]}
++        dest_module_name[$index]=${DEST_MODULE_NAME[$index]}
++        dest_module_location[$index]=${DEST_MODULE_LOCATION[$index]}
++        modules_conf_obsoletes[$index]=${MODULES_CONF_OBSOLETES[$index]}
++        modules_conf_alias_type[$index]=${MODULES_CONF_ALIAS_TYPE[$index]}
++        case ${MODULES_CONF_OBSOLETE_ONLY[$index]} in
++            [yY]*)
++                modules_conf_obsolete_only[$index]="yes"
++                ;;
++        esac
++        case ${STRIP[$index]} in
++            [nN]*)
++                strip[$index]="no"
++                ;;
++            [yY]*)
++                strip[$index]="yes"
++                ;;
++            '')
++                strip[$index]=${strip[0]:-yes}
++                ;;
++        esac
++
++        # If unset, set by defaults
++        [[ ! ${built_module_name[$index]} ]] && \
++            ((${#DEST_MODULE_LOCATION[@]} == 1)) && \
++            built_module_name[$index]=$module
++        [[ ! ${dest_module_name[$index]} ]] && \
++            dest_module_name[$index]=${built_module_name[$index]}
++        [[ ${built_module_location[$index]} && \
++            ${built_module_location[$index]:(-1)} != / ]] && \
++            built_module_location[$index]="${built_module_location[$index]}/"
++
++        # FAIL if no built_module_name
++        if [[ ! ${built_module_name[$index]} ]]; then
++            echo $"dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #$index." >&2
++            return_value=1
++        fi
++
++        # FAIL if built_module_name ends in .o or .ko
++        case ${built_module_name[$index]} in
++            *.o|*.ko)
++                echo $"dkms.conf: Error! 'BUILT_MODULE_NAME' directive ends in '.o' or '.ko' in record #$index." >&2
++                return_value=1
++                ;;
++        esac
++
++        # FAIL if dest_module_name ends in .o or .ko
++        case ${dest_module_name[$index]} in
++            *.o|*.ko)
++                echo $"dkms.conf: Error! 'DEST_MODULE_NAME' directive ends in '.o' or '.ko' in record #$index." >&2
++                return_value=1
++                ;;
++        esac
++
++        # Override location for specific kernels
++        dest_module_location[$index]="$(override_dest_module_location ${dest_module_location[$index]})"
++
++        # Fail if no DEST_MODULE_LOCATION
++        if [[ ! ${DEST_MODULE_LOCATION[$index]} ]]; then
++            echo $"dkms.conf: Error! No 'DEST_MODULE_LOCATION' directive specified for record #$index.">&2
++            return_value=1
++        fi
++            # Fail if bad DEST_MODULE_LOCATION
++        case ${DEST_MODULE_LOCATION[$index]} in
++            /kernel*)
++                ;;
++            /updates*)
++                ;;
++            /extra*)
++                ;;
++            *)
++            echo $"dkms.conf: Error! Directive 'DEST_MODULE_LOCATION' does not begin with">&2
++            echo $"'/kernel', '/updates', or '/extra' in record #$index.">&2
++            return_value=1
++            ;;
++        esac
+     done
+ 
+     # Get the correct make command
+     [[ ${MAKE_MATCH[0]} ]] || make_command="${MAKE[0]}"
+     for ((index=0; index < ${#MAKE[@]}; index++)); do
+-	[[ ${MAKE[$index]} && ${MAKE_MATCH[$index]} && \
+-	    $1 =~ ${MAKE_MATCH[$index]} ]] && \
+-	    make_command="${MAKE[$index]}"
++    [[ ${MAKE[$index]} && ${MAKE_MATCH[$index]} && \
++        $1 =~ ${MAKE_MATCH[$index]} ]] && \
++        make_command="${MAKE[$index]}"
+     done
+ 
+     # Use the generic make and make clean commands if not specified
+     if [[ $(VER $1) < $(VER 2.6.6) ]]; then
+-	[[ ! $make_command ]] && \
+-	    make_command="make -C $kernel_source_dir SUBDIRS=$dkms_tree/$module/$module_version/build modules"
+-	[[ ! $clean ]] && \
+-	    clean="make -C $kernel_source_dir SUBDIRS=$dkms_tree/$module/$module_version/build clean"
++        [[ ! $make_command ]] && make_command="make -C $kernel_source_dir SUBDIRS=$dkms_tree/$module/$module_version/build modules"
++        [[ ! $clean ]] && clean="make -C $kernel_source_dir SUBDIRS=$dkms_tree/$module/$module_version/build clean"
+     else
+-	[[ ! $make_command ]] && \
+-	    make_command="make -C $kernel_source_dir M=$dkms_tree/$module/$module_version/build"
+-	 [[ ! $clean ]] && \
+-	     clean="make -C $kernel_source_dir M=$dkms_tree/$module/$module_version/build clean"
++        [[ ! $make_command ]] && make_command="make -C $kernel_source_dir M=$dkms_tree/$module/$module_version/build"
++        [[ ! $clean ]] && clean="make -C $kernel_source_dir M=$dkms_tree/$module/$module_version/build clean"
+     fi
+ 
+     # Set modules_conf_array
+     for ((index=0; index < ${#MODULES_CONF[@]}; index++)); do
+-	[[ ${MODULES_CONF[$index]} ]] && modules_conf_array[$index]="${MODULES_CONF[$index]}"
++        [[ ${MODULES_CONF[$index]} ]] && modules_conf_array[$index]="${MODULES_CONF[$index]}"
+     done
+ 
+     # Set patch_array (including kernel specific patches)
+     count=0
+     for ((index=0; index < ${#PATCH[@]}; index++)); do
+-	if [[ ${PATCH[$index]} && (! ${PATCH_MATCH[$index]} || \
+-		$1 =~ ${PATCH_MATCH[$index]}) ]]; then
+-	    patch_array[$count]="${PATCH[$index]}"
+-	    count=$(($count+1))
+-	fi
++    if [[ ${PATCH[$index]} && (! ${PATCH_MATCH[$index]} || $1 =~ ${PATCH_MATCH[$index]}) ]]; then
++        patch_array[$count]="${PATCH[$index]}"
++        count=$(($count+1))
++    fi
+     done
+ 
+     # Set remake_initrd
+     [[ $REMAKE_INITRD =~ $y_re ]] && remake_initrd="yes"
+ 
+     # Set build_exclude
+-    [[ $BUILD_EXCLUSIVE_KERNEL && ! $1 =~ $BUILD_EXCLUSIVE_KERNEL ]] && \
+-       build_exclude="yes"
+-    [[ $BUILD_EXCLUSIVE_ARCH && ! $2 =~ $BUILD_EXCLUSIVE_ARCH ]] && \
+-	build_exclude="yes"
++    [[ $BUILD_EXCLUSIVE_KERNEL && ! $1 =~ $BUILD_EXCLUSIVE_KERNEL ]] && build_exclude="yes"
++    [[ $BUILD_EXCLUSIVE_ARCH && ! $2 =~ $BUILD_EXCLUSIVE_ARCH ]] && build_exclude="yes"
+ 
+     # Fail if absolutely no DEST_MODULE_LOCATION
+     if ((${#dest_module_location[@]} == 0)); then
+-	echo $"dkms.conf: Error! No 'DEST_MODULE_LOCATION' directive specified." >&2
+-	return_value=1
++        echo $"dkms.conf: Error! No 'DEST_MODULE_LOCATION' directive specified." >&2
++        return_value=1
+     fi
+ 
+     # Fail if no PACKAGE_NAME
+     if [[ ! $package_name ]]; then
+-	echo $"dkms.conf: Error! No 'PACKAGE_NAME' directive specified.">&2
+-	return_value=1
++        echo $"dkms.conf: Error! No 'PACKAGE_NAME' directive specified.">&2
++        return_value=1
+     fi
+ 
+     # Fail if no PACKAGE_VERSION
+     if [[ ! $package_version ]]; then
+-	echo $"dkms.conf: Error! No 'PACKAGE_VERSION' directive specified.">&2
+-	return_value=1
++        echo $"dkms.conf: Error! No 'PACKAGE_VERSION' directive specified.">&2
++        return_value=1
+     fi
+ 
+     # Set clean
+     [[ $clean ]] || clean="make clean"
+ 
+-    ((return_value == 0)) && last_mvka="$module/$module_version/$1/$2" && \
+-	last_mvka_conf="$(readlink -f "$read_conf_file")"
++    ((return_value == 0)) && last_mvka="$module/$module_version/$1/$2" && last_mvka_conf="$(readlink -f "$read_conf_file")"
+     return $return_value
+ }
+ 
+@@ -660,10 +697,15 @@ get_module_verinfo(){
+     unset res
+     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
++    case ${vals[0]} in
++        version:)
++            res[0]=${vals[1]}
++            res[2]=${vals[2]}
++            ;;
++        srcversion:)
++        res[1]=${vals[1]}
++        ;;
++    esac
+     done < <(modinfo $1)
+ }
+ 
+@@ -684,67 +726,65 @@ check_version_sanity()
+     read -a kernels_module < <(find $lib_tree -name ${4}$module_suffix)
+     [[ $kernels_module ]] || return 0
+     if [[ ${kernels_module[1]} ]]; then
+-	warn $"Warning! Cannot do version sanity checking because multiple ${4}$module_suffix" \
+-	    $"modules were found in kernel $1."
+-	return 0
++        warn $"Warning! Cannot do version sanity checking because multiple ${4}$module_suffix" \
++            $"modules were found in kernel $1."
++        return 0
+     fi
+     local dkms_module="$dkms_tree/$module/$module_version/$1/$2/module/${4}$module_suffix"
+     get_module_verinfo $kernels_module; kernels_info=("${res[@]}")
+     get_module_verinfo $dkms_module; dkms_info=("${res[@]}")
+     if [[ ! ${dkms_info[1]} && ${kernels_info[1]} ]]; then
+-	# use obsolete checksum info
+-	dkms_info[1]=${dkms_info[2]}
+-	kernels_info[1]=${kernels_info[2]}
++        # Use obsolete checksum info
++        dkms_info[1]=${dkms_info[2]}
++        kernels_info[1]=${kernels_info[2]}
+     fi
+ 
+-    if [[ ${kernels_info[1]} && ${dkms_info[1]} && \
+-	${kernels_info[1]} = ${dkms_info[1]} && ! $force ]]; then
+-	echo $"" >&2
+-	echo $"Good news! Module version $dkms_info for ${4}$module_suffix" >&2
+-	echo $"exactly matches what is already found in kernel $1." >&2
+-	echo $"DKMS will not replace this module." >&2
+-	echo $"You may override by specifying --force." >&2
+-	return 1
++    if [[ ${kernels_info[1]} && ${dkms_info[1]} && ${kernels_info[1]} = ${dkms_info[1]} && ! $force ]]; then
++        echo $"" >&2
++        echo $"Good news! Module version $dkms_info for ${4}$module_suffix" >&2
++        echo $"exactly matches what is already found in kernel $1." >&2
++        echo $"DKMS will not replace this module." >&2
++        echo $"You may override by specifying --force." >&2
++        return 1
+     fi
+ 
+-    if [[ $kernels_info && $dkms_info && \
+-	! ( $(VER $dkms_info) > $(VER $kernels_info) ) && ! $force ]]; then
+-	error $"Module version $dkms_info for ${4}$module_suffix" \
+-	    $"is not newer than what is already found in kernel $1 ($kernels_info)." \
+-	    $"You may override by specifying --force."
+-	return 1
++    if [[ $kernels_info && $dkms_info && ! ( $(VER $dkms_info) > $(VER $kernels_info) ) && ! $force ]]; then
++        error $"Module version $dkms_info for ${4}$module_suffix" \
++            $"is not newer than what is already found in kernel $1 ($kernels_info)." \
++            $"You may override by specifying --force."
++        return 1
+     fi
+ 
+-    # magic split into array syntax saves trivial awk and cut calls.
++    # Magic split into array syntax saves trivial awk and cut calls.
+     local -a obs=(${3//-/ })
+     local -a my=(${1//-/ })
+     local obsolete=0
+     if [[ ${obs} && ${my} ]]; then
+-	if [[ $(VER ${obs}) == $(VER ${my}) && ! $force ]]; then
+-	    #they get obsoleted possibly in this kernel release
+-	    if [[ ! ${obs[1]} ]]; then
+-		#they were obsoleted in this upstream kernel
+-		obsolete=1
+-	    elif [[ $(VER ${my[1]}) > $(VER ${obs[1]}) ]]; then
+-		#they were obsoleted in an earlier ABI bump of the kernel
+-		obsolete=1
+-	    elif [[ $(VER ${my[1]}) = $(VER ${obs[1]}) ]]; then
+-		#they were obsoleted in this ABI bump of the kernel
+-		obsolete=1
+-	    fi
+-	elif [[ $(VER ${my}) > $(VER ${obs}) && ! $force ]]; then
+-	    #they were obsoleted in an earlier kernel release
+-	    obsolete=1
+-	fi
++        if [[ $(VER ${obs}) == $(VER ${my}) && ! $force ]]; then
++            # They get obsoleted possibly in this kernel release
++            if [[ ! ${obs[1]} ]]; then
++                # They were obsoleted in this upstream kernel
++                obsolete=1
++            elif [[ $(VER ${my[1]}) > $(VER ${obs[1]}) ]]; then
++                # They were obsoleted in an earlier ABI bump of the kernel
++                obsolete=1
++            elif [[ $(VER ${my[1]}) = $(VER ${obs[1]}) ]]; then
++                # They were obsoleted in this ABI bump of the kernel
++                obsolete=1
++            fi
++        elif [[ $(VER ${my}) > $(VER ${obs}) && ! $force ]]; then
++            # They were obsoleted in an earlier kernel release
++            obsolete=1
++        fi
+     fi
+ 
+     if ((obsolete == 1)); then
+-	echo $"" >&2
+-	echo $"Module has been obsoleted due to being included" >&2
+-	echo $"in kernel $3.  We will avoid installing" >&2
+-	echo $"for future kernels above $3." >&2
+-	echo $"You may override by specifying --force." >&2
+-	return 1
++        echo $"" >&2
++        echo $"Module has been obsoleted due to being included" >&2
++        echo $"in kernel $3.  We will avoid installing" >&2
++        echo $"for future kernels above $3." >&2
++        echo $"You may override by specifying --force." >&2
++        return 1
+     fi
+     return 0
+ }
+@@ -752,36 +792,36 @@ check_version_sanity()
+ moduleconfig_update_obsoletes()
+ {
+     # $@ = files to process
+-    # do nothing if we have no obsoletes
++    # Do nothing if we have no obsoletes
+     ( IFS=; [[ "${modules_conf_obsoletes[*]}" ]] ) || return 0
+-    # generate sed args to remove obsolete modules
++    # Generate sed args to remove obsolete modules
+     local mod_diff
+     for ((index=0; index < ${#dest_module_name[@]}; index++)); do
+-	[[ ${modules_conf_obsoletes[$index]} ]] || continue
+-	for obsolete_module in ${modules_conf_obsoletes[$index]//,/ }; do
+-	    # for module.conf style syntax
+-	    sa_mc_o[${#sa_mc_o[*]}]="-e"
+-	    sa_mc_o[${#sa_mc_o[*]}]="s/\(alias ${modules_conf_alias_type[$index]}[0-9]*\) $obsolete_module$/\1 ${dest_module_name[$index]}/g"
+-	    # for /etc/sysconfig/kernel style syntax
+-	    sa_sck_o[${#sa_sck_o[*]}]="-e"
+-	    sa_sck_o[${#sa_sck_o[*]}]="s/\(INITRD_MODULES.*\)$obsolete_module\b\(.*\)/\1${dest_module_name[$index]}\2/"
+-	done
++        [[ ${modules_conf_obsoletes[$index]} ]] || continue
++        for obsolete_module in ${modules_conf_obsoletes[$index]//,/ }; do
++            # For module.conf style syntax
++            sa_mc_o[${#sa_mc_o[*]}]="-e"
++            sa_mc_o[${#sa_mc_o[*]}]="s/\(alias ${modules_conf_alias_type[$index]}[0-9]*\) $obsolete_module$/\1 ${dest_module_name[$index]}/g"
++            # For /etc/sysconfig/kernel style syntax
++            sa_sck_o[${#sa_sck_o[*]}]="-e"
++            sa_sck_o[${#sa_sck_o[*]}]="s/\(INITRD_MODULES.*\)$obsolete_module\b\(.*\)/\1${dest_module_name[$index]}\2/"
++        done
+     done
+ 
+-    # do all the changes at once, record the diffs for posterity
++    # Do all the changes at once, record the diffs for posterity
+     for file in "$@"; do
+-	[[ $file && -w $file ]] || continue
+-	if [[ $file = /etc/sysconfig/kernel ]]; then
+-	    sed "${sa_sck_o[*]}" "$file" > "$temp_dir_name/${file##*/}.new"
+-	else
+-	    sed "${sa_mc_o[*]}" "$file" > "$temp_dir_name/${file##*/}.new"
+-	fi
+-	if ! mod_diff=$(diff -u "$temp_dir_name/${file##*/}.new" "$file"); then
+-	    echo $"$file updated to replace obsoleted module references:"
+-	    echo "$mod_diff"
+-	    cp -fp "$temp_dir_name/${file##*/}.new" "$file"
+-	    rm -f "$temp_dir_name/${file##*/}.new"
+-	fi
++        [[ $file && -w $file ]] || continue
++        if [[ $file = /etc/sysconfig/kernel ]]; then
++            sed "${sa_sck_o[*]}" "$file" > "$temp_dir_name/${file##*/}.new"
++        else
++            sed "${sa_mc_o[*]}" "$file" > "$temp_dir_name/${file##*/}.new"
++        fi
++        if ! mod_diff=$(diff -u "$temp_dir_name/${file##*/}.new" "$file"); then
++            echo $"$file updated to replace obsoleted module references:"
++            echo "$mod_diff"
++            cp -fp "$temp_dir_name/${file##*/}.new" "$file"
++            rm -f "$temp_dir_name/${file##*/}.new"
++        fi
+     done
+ }
+ 
+@@ -792,46 +832,45 @@ moduleconfig_add()
+     local temp_dir_name=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+     local -a sa_mc_o=() sa_sck_o=()
+     modconfig_files="/etc/modprobe.d/dkms.conf
+-		     /etc/modprobe.d/dkms
+-		     /etc/modules.conf
+-		     /etc/modprobe.conf
+-		     /etc/modprobe.d/$package_name.conf
+-		     /etc/sysconfig/kernel"
++        /etc/modprobe.d/dkms
++        /etc/modules.conf
++        /etc/modprobe.conf
++        /etc/modprobe.d/$package_name.conf
++        /etc/sysconfig/kernel"
+ 
+     moduleconfig_update_obsoletes $modconfig_files
+ 
+     for moduleconfig in $modconfig_files; do
+-	[[ -e $moduleconfig ]] || continue
+-	for ((index=0; index < ${#dest_module_name[@]}; index++)); do
+-
+-	    # Only add it if it can't be found already in config file
+-	    if [[ ${modules_conf_alias_type[$index]} ]] && \
+-	       ! grep -qs "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}\b" $moduleconfig && \
+-	       [[ ${modules_conf_obsolete_only[$index]} != yes ]]; then
+-		if [[ $modconfig_files = /etc/modprobe.d/$package_name.conf ]] && \
+-		    [[ ! -e /etc/modprobe.d/$package_name.conf ]]; then
+-		    touch /etc/modprobe.d/$package_name.conf
+-		    echo $"created /etc/modprobe.d/$package_name.conf.">&2
+-		fi
+-		aliases=$(awk "/^alias ${modules_conf_alias_type[$index]}/ {print \$2}" $moduleconfig)
+-		if [[ $aliases ]]; then
+-		    alias_number=$(($(echo "$aliases" | sed "s/${modules_conf_alias_type[$index]}//" | sort -n | tail -n 1) + 1))
+-		else
+-		    alias_number=0
+-		fi
+-		echo -e "alias ${modules_conf_alias_type[$index]}${alias_number} ${dest_module_name[$index]}" >> $moduleconfig
+-		echo $"$moduleconfig: added alias reference for '${dest_module_name[$index]}'"
+-	    fi
+-	done
+-
+-	# Add anything else
+-	for ((index=0; index < ${#modules_conf_array[@]}; index++)); do
+-	    if [ -n "${modules_conf_array[$index]}" ] && \
+-	    ! grep -q "${modules_conf_array[$index]}" "$moduleconfig"; then
+-	    echo -e $"$moduleconfig: added '${modules_conf_array[$index]}'"
+-	    echo -e "${modules_conf_array[$index]}" >> $moduleconfig
+-	    fi
+-	done
++    [[ -e $moduleconfig ]] || continue
++    for ((index=0; index < ${#dest_module_name[@]}; index++)); do
++
++        # Only add it if it can't be found already in config file
++        if [[ ${modules_conf_alias_type[$index]} ]] && \
++           ! grep -qs "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}\b" $moduleconfig && \
++           [[ ${modules_conf_obsolete_only[$index]} != yes ]]; then
++            if [[ $modconfig_files = /etc/modprobe.d/$package_name.conf ]] && [[ ! -e /etc/modprobe.d/$package_name.conf ]]; then
++                touch /etc/modprobe.d/$package_name.conf
++                echo $"created /etc/modprobe.d/$package_name.conf.">&2
++            fi
++            aliases=$(awk "/^alias ${modules_conf_alias_type[$index]}/ {print \$2}" $moduleconfig)
++            if [[ $aliases ]]; then
++                alias_number=$(($(echo "$aliases" | sed "s/${modules_conf_alias_type[$index]}//" | sort -n | tail -n 1) + 1))
++            else
++                alias_number=0
++            fi
++            echo -e "alias ${modules_conf_alias_type[$index]}${alias_number} ${dest_module_name[$index]}" >> $moduleconfig
++            echo $"$moduleconfig: added alias reference for '${dest_module_name[$index]}'"
++        fi
++    done
++
++    # Add anything else
++    for ((index=0; index < ${#modules_conf_array[@]}; index++)); do
++        if [ -n "${modules_conf_array[$index]}" ] && \
++        ! grep -q "${modules_conf_array[$index]}" "$moduleconfig"; then
++        echo -e $"$moduleconfig: added '${modules_conf_array[$index]}'"
++        echo -e "${modules_conf_array[$index]}" >> $moduleconfig
++        fi
++    done
+     done
+ 
+     # Delete the temp dir
+@@ -851,40 +890,41 @@ moduleconfig_remove()
+     [ -e /etc/modprobe.d/$package_name.conf ] && modconfig_files="/etc/modprobe.d/$package_name.conf"
+ 
+     for moduleconfig in $modconfig_files; do
+-	for ((index=0; index < ${#dest_module_name[@]}; index++)); do
+-	    # Remove/Replace aliases (maybe)
+-	    [[ ${modules_conf_alias_type[$index]} ]] || continue
+-	    find "$install_tree/$1/" -name "${dest_module_name[$index]}.*" -quit 2>/dev/null && continue
+-
+-	    local conf_replacement=""
+-	    for obsolete_module in ${modules_conf_obsoletes[$index]//,/ }; do
+-		find $install_tree/$1/ -name "$obsolete_module.*" -quit 2>/dev/null || continue
+-		conf_replacement=$obsolete_module
+-		break
+-	    done
+-
+-	    if [[ ! $conf_replacement ]]; then
+-		grep -v "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}" $moduleconfig > $temp_dir_name/moduleconfig.new
+-		mv -f $temp_dir_name/moduleconfig.new $moduleconfig
+-		echo $"$moduleconfig: removed alias for '${dest_module_name[$index]}'"
+-		if [[ $modconfig_files = /etc/modprobe.d/$package_name.conf ]]; then
+-		    rm -f /etc/modprobe.d/$package_name.conf
+-		    echo $"$moduleconfig: deleted /etc/modprobe.d/$package_name.conf file"
+-		fi
+-	    elif grep -q "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}$" $moduleconfig; then
+-		sed "s/\(alias ${modules_conf_alias_type[$index]}[0-9]*\) ${dest_module_name[$index]}$/\1 $conf_replacement/g" $moduleconfig > $temp_dir_name/moduleconfig.new
+-		mv -f $temp_dir_name/moduleconfig.new $moduleconfig
+-		echo $"$moduleconfig: alias for '${dest_module_name[$index]}' changed back to '$conf_replacement'"
+-	    fi
+-	done
+-
+-	# Remove static conf entries
+-	for ((index=0; index < ${#modules_conf_array[@]}; index++)); do
+-	    [[ ${modules_conf_array[$index]} ]] || continue
+-	    grep -v "${modules_conf_array[$index]}" "$moduleconfig" > $temp_dir_name/moduleconfig.new
+-	    echo $"$moduleconfig: removed '${modules_conf_array[$index]}'"
+-	    mv -f $temp_dir_name/moduleconfig.new $moduleconfig
+-	done
++        for ((index=0; index < ${#dest_module_name[@]}; index++)); do
++            # Remove/Replace aliases (maybe)
++            [[ ${modules_conf_alias_type[$index]} ]] || continue
++            find "$install_tree/$1/" -name "${dest_module_name[$index]}.*" -quit 2>/dev/null && continue
++
++            local conf_replacement=""
++            for obsolete_module in ${modules_conf_obsoletes[$index]//,/ }; do
++                find $install_tree/$1/ -name "$obsolete_module.*" -quit 2>/dev/null || continue
++                conf_replacement=$obsolete_module
++                break
++            done
++
++            if [[ ! $conf_replacement ]]; then
++                grep -v "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}" $moduleconfig > $temp_dir_name/moduleconfig.new
++                mv -f $temp_dir_name/moduleconfig.new $moduleconfig
++                echo $"$moduleconfig: removed alias for '${dest_module_name[$index]}'"
++                if [[ $modconfig_files = /etc/modprobe.d/$package_name.conf ]]; then
++                    rm -f /etc/modprobe.d/$package_name.conf
++                    echo $"$moduleconfig: deleted /etc/modprobe.d/$package_name.conf file"
++                fi
++                elif grep -q "alias ${modules_conf_alias_type[$index]}[0-9]* ${dest_module_name[$index]}$" $moduleconfig; then
++                    sed "s/\(alias ${modules_conf_alias_type[$index]}[0-9]*\) ${dest_module_name[$index]}$/\1 $conf_replacement/g" \
++                        $moduleconfig > $temp_dir_name/moduleconfig.new
++                    mv -f $temp_dir_name/moduleconfig.new $moduleconfig
++                    echo $"$moduleconfig: alias for '${dest_module_name[$index]}' changed back to '$conf_replacement'"
++            fi
++        done
++
++        # Remove static conf entries
++        for ((index=0; index < ${#modules_conf_array[@]}; index++)); do
++            [[ ${modules_conf_array[$index]} ]] || continue
++            grep -v "${modules_conf_array[$index]}" "$moduleconfig" > $temp_dir_name/moduleconfig.new
++            echo $"$moduleconfig: removed '${modules_conf_array[$index]}'"
++            mv -f $temp_dir_name/moduleconfig.new $moduleconfig
++        done
+     done
+ 
+     # Delete the temp dir
+@@ -898,20 +938,20 @@ etc_sysconfig_kernel_modify()
+     # Make a temp directory to store files
+     local temp_dir_name=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+     if [[ $1 = add ]]; then
+-	. /etc/sysconfig/kernel
+-	for m in "${dest_module_name[@]}"; do
+-	    for l in "${INITRD_MODULES}"; do
+-		[[ $m = $l ]] && continue 2
+-	    done
+-	    sed -e "s/INITRD_MODULES=\"\(.*\)\"/INITRD_MODULES=\"\1 $m\"/" /etc/sysconfig/kernel > $temp_dir_name/kernel.new
+-	    mv $temp_dir_name/kernel.new /etc/sysconfig/kernel
+-	done
++        . /etc/sysconfig/kernel
++        for m in "${dest_module_name[@]}"; do
++            for l in "${INITRD_MODULES}"; do
++                [[ $m = $l ]] && continue 2
++            done
++            sed -e "s/INITRD_MODULES=\"\(.*\)\"/INITRD_MODULES=\"\1 $m\"/" /etc/sysconfig/kernel > $temp_dir_name/kernel.new
++            mv $temp_dir_name/kernel.new /etc/sysconfig/kernel
++        done
+     # Remove /etc/sysconfig/kernel entries
+     elif [[ $1 = delete ]]; then
+-	for m in "${dest_module_name[@]}"; do
+-	    sed -e "s/\(INITRD_MODULES.*\)$m\b\(.*\)/\1\2/" /etc/sysconfig/kernel > $temp_dir_name/kernel.new
+-	    mv $temp_dir_name/kernel.new /etc/sysconfig/kernel
+-	done
++        for m in "${dest_module_name[@]}"; do
++            sed -e "s/\(INITRD_MODULES.*\)$m\b\(.*\)/\1\2/" /etc/sysconfig/kernel > $temp_dir_name/kernel.new
++            mv $temp_dir_name/kernel.new /etc/sysconfig/kernel
++        done
+     fi
+     # Delete the temp dir
+     rm -rf $temp_dir_name
+@@ -922,13 +962,13 @@ check_module_args() {
+     die 1 $"Invalid number of arguments passed." \
+         $"Usage: $1 <module>/<module-version> or" \
+         $"       $1 -m <module>/<module-version> or" \
+-	$"       $1 -m <module> -v <module-version>"
++        $"       $1 -m <module> -v <module-version>"
+ }
+ 
+ read_conf_or_die() {
+     read_conf "$@" && return
+     die 8 $"Bad conf file." $"File: $conf" \
+-	$"does not represent a valid dkms.conf file."
++        $"does not represent a valid dkms.conf file."
+ }
+ 
+ run_build_script() {
+@@ -937,8 +977,12 @@ run_build_script() {
+     local script_type run
+     [[ $2 ]] || return 0
+     case "$1" in
+-        pre_build|post_build) script_type='build';;
+-        *) script_type='source'
++        pre_build|post_build)
++            script_type='build'
++            ;;
++        *)
++            script_type='source'
++            ;;
+     esac
+     run="$dkms_tree/$module/$module_version/$script_type/$2"
+     if [[ -x ${run%% *} ]]; then
+@@ -960,12 +1004,12 @@ run_build_script() {
+ # being unpacked into /usr/src/$module-$module_version.
+ add_module()
+ {
+-    # if $archive is set and $module and $module_version are not,
++    # If $archive is set and $module and $module_version are not,
+     # try loading the tarball passed first.
+     if [[ $archive_location && ! $module && ! $module_version ]]; then
+-	load_tarball
++        load_tarball
+     elif [[ $try_source_tree && ! $module && ! $module_version ]]; then
+-	add_source_tree "$try_source_tree"
++        add_source_tree "$try_source_tree"
+     fi
+ 
+     # Check that we have all the arguments
+@@ -973,24 +1017,24 @@ add_module()
+ 
+     # Check that this module-version hasn't already been added
+     if is_module_added "$module" "$module_version"; then
+-	die 3 $"DKMS tree already contains: $module-$module_version" \
+-	    $"You cannot add the same module/version combo more than once."
++        die 3 $"DKMS tree already contains: $module-$module_version" \
++            $"You cannot add the same module/version combo more than once."
+     fi
+ 
+     [[ $conf ]] || conf="$source_tree/$module-$module_version/dkms.conf"
+ 
+     # Check that /usr/src/$module-$module_version exists
+     if ! [[ -d $source_tree/$module-$module_version ]]; then
+-	die 2 $"Could not find module source directory." \
+-	    $"Directory: $source_tree/$module-$module_version does not exist."
++        die 2 $"Could not find module source directory." \
++            $"Directory: $source_tree/$module-$module_version does not exist."
+     fi
+ 
+     # Do stuff for --rpm_safe_upgrade
+     if [[ $rpm_safe_upgrade ]]; then
+-	local pppid=$(awk '/PPid:/ {print $2}' /proc/$PPID/status)
+-	local lock_name=$(mktemp_or_die $tmp_location/dkms_rpm_safe_upgrade_lock.$pppid.XXXXXX)
+-	echo "$module-$module_version" >> $lock_name
+-	ps -o lstart --no-headers -p $pppid 2>/dev/null >> $lock_name
++        local pppid=$(awk '/PPid:/ {print $2}' /proc/$PPID/status)
++        local lock_name=$(mktemp_or_die $tmp_location/dkms_rpm_safe_upgrade_lock.$pppid.XXXXXX)
++        echo "$module-$module_version" >> $lock_name
++        ps -o lstart --no-headers -p $pppid 2>/dev/null >> $lock_name
+     fi
+ 
+     # Check the conf file for sanity
+@@ -1022,26 +1066,29 @@ prepare_kernel()
+ 
+     # Check that kernel-source exists
+     _check_kernel_dir "$1" || {
+-	case "$running_distribution" in
+-	    Debian* | Ubuntu* )
+-		die 1 $"Your kernel headers for kernel $1 cannot be found." \
+-		    $"Please install the linux-headers-$1 package," \
+-		    $"or use the --kernelsourcedir option to tell DKMS where it's located";;
+-	    * ) die 1 echo $"Your kernel headers for kernel $1 cannot be found at" \
+-		$"/lib/modules/$1/build or /lib/modules/$1/source."
+-		$"You can use the --kernelsourcedir option to tell DKMS where it's located."
+-	esac
++    case "$running_distribution" in
++        Debian* | Ubuntu* )
++            die 1 $"Your kernel headers for kernel $1 cannot be found." \
++                $"Please install the linux-headers-$1 package," \
++                $"or use the --kernelsourcedir option to tell DKMS where it's located"
++                ;;
++        * )
++            die 1 echo $"Your kernel headers for kernel $1 cannot be found at" \
++                $"/lib/modules/$1/build or /lib/modules/$1/source."
++                $"You can use the --kernelsourcedir option to tell DKMS where it's located."
++            ;;
++    esac
+     }
+ 
+     [[ $no_prepare_kernel ]] && return
+ 
+     if [[ (! ( $(VER $1) < $(VER 2.6.5) ) || -d /etc/SuSEconfig) && \
+-       -d "$kernel_source_dir" && \
+-       -z "$ksourcedir_fromcli" ]]; then
+-	echo $""
+-	echo $"Kernel preparation unnecessary for this kernel.  Skipping..."
+-	no_clean_kernel="no-clean-kernel"
+-	return 1
++        -d "$kernel_source_dir" && \
++        -z "$ksourcedir_fromcli" ]]; then
++        echo $""
++        echo $"Kernel preparation unnecessary for this kernel.  Skipping..."
++        no_clean_kernel="no-clean-kernel"
++        return 1
+     fi
+ 
+     # Prepare kernel for module build
+@@ -1050,101 +1097,103 @@ prepare_kernel()
+     echo $"(This is not compiling a kernel, just preparing kernel symbols)"
+     cd $kernel_source_dir
+     [[ -r .config ]] && {
+-	config_contents=$(cat .config)
+-	echo $"Storing current .config to be restored when complete"
++        config_contents=$(cat .config)
++        echo $"Storing current .config to be restored when complete"
+     }
+ 
+     # Set kernel_config
+     if [[ -e /etc/redhat-release || -e /etc/fedora-release ]]; then
+-	# Note this also applies to VMware 3.x
+-	if [[ -z $kernel_config && -d $kernel_source_dir/configs ]]; then
+-	    local kernel_trunc=${1%%-*}
+-	    # Try a .config specific to whatever kernel we are running
+-	    if [[ $1 =~ $rh_kernels && \
+-		-e $kernel_source_dir/configs/kernel-$kernel_trunc-$2-${BASH_REMATCH[1]}.config ]]; then
+-		kernel_config="$kernel_source_dir/configs/kernel-$kernel_trunc-$2-${BASH_REMATCH[1]}.config"
+-	    elif [[ -e $kernel_source_dir/configs/kernel-$kernel_trunc-$2.config ]]; then
+-		# If that one does not exist, try a generic one.
+-		kernel_config="$kernel_source_dir/configs/kernel-$kernel_trunc-$2.config"
+-	    else
+-		# If that does not exist, fall back to no config file
+-		kernel_config=""
+-	    fi
+-	fi
+-    elif [[ (-e /etc/SuSE-release || -d /etc/SuSEconfig) && \
+-	-z $kernel_config && -d $kernel_source_dir/arch ]]; then
+-	    local kernel_trunc=${1%%-*}
+-	    case $2 in
+-		i586|i686) config_arch="i386";;
+-		*) config_arch=$2;;
+-	    esac
+-	    for config_type in default smp bigsmp; do
+-		[[ $1 =~ $config_type ]] && kernel_config="$kernel_source_dir/arch/$config_arch/defconfig.$config_type"
+-		[[ -e $kernel_config ]] || kernel_config=""
+-	    done
+-	    [[ $kernel_config ]] || kernel_config="$kernel_source_dir/arch/$config_arch/defconfig.default"
+-	    [[ -e $kernel_config ]] || kernel_config=""
++    # Note this also applies to VMware 3.x
++    if [[ -z $kernel_config && -d $kernel_source_dir/configs ]]; then
++        local kernel_trunc=${1%%-*}
++        # Try a .config specific to whatever kernel we are running
++        if [[ $1 =~ $rh_kernels && -e $kernel_source_dir/configs/kernel-$kernel_trunc-$2-${BASH_REMATCH[1]}.config ]]; then
++            kernel_config="$kernel_source_dir/configs/kernel-$kernel_trunc-$2-${BASH_REMATCH[1]}.config"
++        elif [[ -e $kernel_source_dir/configs/kernel-$kernel_trunc-$2.config ]]; then
++            # If that one does not exist, try a generic one.
++            kernel_config="$kernel_source_dir/configs/kernel-$kernel_trunc-$2.config"
++        else
++            # If that does not exist, fall back to no config file
++            kernel_config=""
++        fi
++    fi
++    elif [[ (-e /etc/SuSE-release || -d /etc/SuSEconfig) && -z $kernel_config && -d $kernel_source_dir/arch ]]; then
++        local kernel_trunc=${1%%-*}
++        case $2 in
++            i586|i686)
++                config_arch="i386"
++                ;;
++            *)
++                config_arch=$2
++                ;;
++        esac
++        for config_type in default smp bigsmp; do
++            [[ $1 =~ $config_type ]] && kernel_config="$kernel_source_dir/arch/$config_arch/defconfig.$config_type"
++            [[ -e $kernel_config ]] || kernel_config=""
++        done
++        [[ $kernel_config ]] || kernel_config="$kernel_source_dir/arch/$config_arch/defconfig.default"
++        [[ -e $kernel_config ]] || kernel_config=""
+     fi
+ 
+     # Do preparation
+     if [ -e /boot/vmlinuz.version.h ]; then
+-	echo $"Running UnitedLinux preparation routine"
+-	local kernel_config="/boot/vmlinuz.config"
+-	invoke_command "make mrproper" "make mrproper" background
+-	[[ $config_contents ]] && echo "$config_contents" > .config
+-	invoke_command "cp /boot/vmlinuz.version.h include/linux/version.h" "using /boot/vmlinux.version.h"
+-	invoke_command "cp -f $kernel_config .config" "using $kernel_config"
+-	invoke_command "make KERNELRELEASE=$1 cloneconfig" "make cloneconfig" background
+-	invoke_command "make CONFIG_MODVERSIONS=1 KERNELRELEASE=$1 dep" "make CONFIG_MODVERSIONS=1 dep" background
++        echo $"Running UnitedLinux preparation routine"
++        local kernel_config="/boot/vmlinuz.config"
++        invoke_command "make mrproper" "make mrproper" background
++        [[ $config_contents ]] && echo "$config_contents" > .config
++        invoke_command "cp /boot/vmlinuz.version.h include/linux/version.h" "using /boot/vmlinux.version.h"
++        invoke_command "cp -f $kernel_config .config" "using $kernel_config"
++        invoke_command "make KERNELRELEASE=$1 cloneconfig" "make cloneconfig" background
++        invoke_command "make CONFIG_MODVERSIONS=1 KERNELRELEASE=$1 dep" "make CONFIG_MODVERSIONS=1 dep" background
+     elif grep -q rhconfig.h $kernel_source_dir/include/linux/{modversions,version}.h 2>/dev/null; then
+-	echo $"Running Red Hat style preparation routine"
+-	invoke_command "make clean" "make clean" background
+-	[[ $config_contents ]] && echo "$config_contents" > .config
+-
+-	if [[ $kernel_config ]]; then
+-	    echo $"using $kernel_config"
+-	    cp -f "$kernel_config" .config
+-	elif [[ -e .config ]]; then
+-	    warn $"Using $kernel_source_dir/.config" \
+-		$"(I hope this is the correct config for this kernel)"
+-	else
+-	    warn $"Cannot find a .config file to prepare your kernel with." \
+-		$"Try using the --config option to specify where one can be found." \
+-		$"Your build will likely fail because of this."
+-	fi
+-
+-	# Hack to workaround broken tmp_include_depends for Red Hat
+-	if grep -q "/usr/src/build" $kernel_source_dir/tmp_include_depends 2>/dev/null; then
+-	    sed 's/\/usr\/src\/build\/.*\/install//g' $kernel_source_dir/tmp_include_depends > $kernel_source_dir/tmp_include_depends.new
+-	    mv -f $kernel_source_dir/tmp_include_depends.new $kernel_source_dir/tmp_include_depends
+-	fi
+-
+-	invoke_command "make KERNELRELEASE=$1 oldconfig" "make oldconfig" background
+-	kerneldoth_contents=$(cat /boot/kernel.h 2>/dev/null)
+-	invoke_command "/usr/lib/dkms/mkkerneldoth --kernelver $1 --targetarch $2 --output /boot/kernel.h" "running mkkerneldoth" background
++        echo $"Running Red Hat style preparation routine"
++        invoke_command "make clean" "make clean" background
++        [[ $config_contents ]] && echo "$config_contents" > .config
++
++        if [[ $kernel_config ]]; then
++            echo $"using $kernel_config"
++            cp -f "$kernel_config" .config
++        elif [[ -e .config ]]; then
++            warn $"Using $kernel_source_dir/.config" \
++                $"(I hope this is the correct config for this kernel)"
++        else
++            warn $"Cannot find a .config file to prepare your kernel with." \
++                $"Try using the --config option to specify where one can be found." \
++                $"Your build will likely fail because of this."
++        fi
++
++        # Hack to workaround broken tmp_include_depends for Red Hat
++        if grep -q "/usr/src/build" $kernel_source_dir/tmp_include_depends 2>/dev/null; then
++            sed 's/\/usr\/src\/build\/.*\/install//g' $kernel_source_dir/tmp_include_depends > $kernel_source_dir/tmp_include_depends.new
++            mv -f $kernel_source_dir/tmp_include_depends.new $kernel_source_dir/tmp_include_depends
++        fi
++
++        invoke_command "make KERNELRELEASE=$1 oldconfig" "make oldconfig" background
++        kerneldoth_contents=$(cat /boot/kernel.h 2>/dev/null)
++        invoke_command "/usr/lib/dkms/mkkerneldoth --kernelver $1 --targetarch $2 --output /boot/kernel.h" "running mkkerneldoth" background
+     else
+-	echo $"Running Generic preparation routine"
+-	invoke_command "make mrproper" "make mrproper" background
+-	[[ $config_contents ]] && echo "$config_contents" > .config
+-
+-	if [[ $kernel_config ]]; then
+-	    echo $"using $kernel_config"
+-	    cp -f "$kernel_config" .config
+-	elif [[ -e .config ]]; then
+-	    warn $"using $kernel_source_dir/.config" \
+-		$"(I hope this is the correct config for this kernel)"
+-	else
+-	    warn $"Warning! Cannot find a .config file to prepare your kernel with." \
+-		$"Try using the --config option to specify where one can be found." \
+-		$"Your build will likely fail because of this."
+-	fi
+-
+-	invoke_command "make KERNELRELEASE=$1 oldconfig" "make oldconfig" background
+-	if [[ $(VER $1) < $(VER 2.5) ]]; then
+-	    invoke_command "make KERNELRELEASE=$1 dep" "make dep" background
+-	else
+-	    invoke_command "make KERNELRELEASE=$1 prepare-all scripts" "make prepare-all" background
+-	fi
++        echo $"Running Generic preparation routine"
++        invoke_command "make mrproper" "make mrproper" background
++        [[ $config_contents ]] && echo "$config_contents" > .config
++
++        if [[ $kernel_config ]]; then
++            echo $"using $kernel_config"
++            cp -f "$kernel_config" .config
++        elif [[ -e .config ]]; then
++            warn $"using $kernel_source_dir/.config" \
++                $"(I hope this is the correct config for this kernel)"
++        else
++            warn $"Warning! Cannot find a .config file to prepare your kernel with." \
++                $"Try using the --config option to specify where one can be found." \
++                $"Your build will likely fail because of this."
++        fi
++
++        invoke_command "make KERNELRELEASE=$1 oldconfig" "make oldconfig" background
++        if [[ $(VER $1) < $(VER 2.5) ]]; then
++            invoke_command "make KERNELRELEASE=$1 dep" "make dep" background
++        else
++            invoke_command "make KERNELRELEASE=$1 prepare-all scripts" "make prepare-all" background
++        fi
+     fi
+     cd - >/dev/null
+ }
+@@ -1163,9 +1212,9 @@ prepare_build()
+ 
+     # Check that the module has not already been built for this kernel
+     [[ -d $base_dir ]] && die 3 \
+-	$"This module/version has already been built on: $kernelver" \
+-	$"Directory: $base_dir" \
+-	$"already exists.  Use the dkms remove function before trying to build again."
++        $"This module/version has already been built on: $kernelver" \
++        $"Directory: $base_dir" \
++        $"already exists.  Use the dkms remove function before trying to build again."
+ 
+     # Read the conf file
+     set_module_suffix "$kernelver"
+@@ -1173,13 +1222,13 @@ prepare_build()
+ 
+     # Error out if build_exclude is set
+     [[ $build_exclude ]] && die 9 \
+-	$" The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which" \
+-	$"does not match this kernel/arch.  This indicates that it should not be built."
++        $" The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which" \
++        $"does not match this kernel/arch.  This indicates that it should not be built."
+ 
+     # Error out if source_tree is basically empty (binary-only dkms tarball w/ --force check)
+     (($(ls $dkms_tree/$module/$module_version/source | wc -l | awk {'print $1'}) < 2)) && die 8 \
+-	$"The directory $dkms_tree/$module/$module_version/source/" \
+-	$"does not appear to have module source located within it.  Build halted."
++        $"The directory $dkms_tree/$module/$module_version/source/" \
++        $"does not appear to have module source located within it.  Build halted."
+ 
+     prepare_kernel "$kernelver" "$arch"
+ 
+@@ -1191,13 +1240,13 @@ prepare_build()
+ 
+     # Apply any patches
+     for p in "${patch_array[@]}"; do
+-	[[ ! -e $dkms_tree/$module/$module_version/build/patches/$p ]] && \
+-	    report_build_problem 5 \
+-	    $" Patch $p as specified in dkms.conf cannot be" \
+-	    $"found in $dkms_tree/$module/$module_version/build/patches/."
+-	invoke_command "patch -p1 < ./patches/$p" "applying patch $p" || \
+-	    report_build_problem 6 $"Application of patch $p failed." \
+-	    $"Check $dkms_tree/$module/$module_version/build/ for more information."
++        [[ ! -e $dkms_tree/$module/$module_version/build/patches/$p ]] && \
++            report_build_problem 5 \
++            $" Patch $p as specified in dkms.conf cannot be" \
++            $"found in $dkms_tree/$module/$module_version/build/patches/."
++        invoke_command "patch -p1 < ./patches/$p" "applying patch $p" || \
++            report_build_problem 6 $"Application of patch $p failed." \
++            $"Check $dkms_tree/$module/$module_version/build/ for more information."
+     done
+ 
+     # Run the pre_build script
+@@ -1218,16 +1267,16 @@ do_build()
+     local the_make_command="${make_command/#make/make KERNELRELEASE=$kernelver}"
+ 
+     invoke_command "{ $the_make_command; } >> $dkms_tree/$module/$module_version/build/make.log 2>&1" "$the_make_command" background || \
+-	report_build_problem 10 $"Bad return status for module build on kernel: $kernelver ($arch)" \
+-	$"Consult $dkms_tree/$module/$module_version/build/make.log for more information."
++        report_build_problem 10 $"Bad return status for module build on kernel: $kernelver ($arch)" \
++        $"Consult $dkms_tree/$module/$module_version/build/make.log for more information."
+ 
+     # Make sure all the modules built successfully
+     for ((count=0; count < ${#built_module_name[@]}; count++)); do
+-	[[ -e ${built_module_location[$count]}${built_module_name[$count]}$module_suffix ]] && continue
+-	report_build_problem 7 \
+-	    $" Build of ${built_module_name[$count]}$module_suffix failed for: $kernelver ($arch)" \
+-	    $"Consult the make.log in the build directory" \
+-	    $"$dkms_tree/$module/$module_version/build/ for more information."
++        [[ -e ${built_module_location[$count]}${built_module_name[$count]}$module_suffix ]] && continue
++        report_build_problem 7 \
++            $" Build of ${built_module_name[$count]}$module_suffix failed for: $kernelver ($arch)" \
++            $"Consult the make.log in the build directory" \
++            $"$dkms_tree/$module/$module_version/build/ for more information."
+     done
+     cd - >/dev/null
+ 
+@@ -1239,8 +1288,9 @@ do_build()
+     # Save a copy of the new module
+     mkdir "$base_dir/module" >/dev/null
+     for ((count=0; count < ${#built_module_name[@]}; count++)); do
+-	[[ ${strip[$count]} != no ]] && strip -g "$dkms_tree/$module/$module_version/build/${built_module_location[$count]}${built_module_name[$count]}$module_suffix"
+-	cp -f "$dkms_tree/$module/$module_version/build/${built_module_location[$count]}${built_module_name[$count]}$module_suffix" "$base_dir/module/${dest_module_name[$count]}$module_suffix" >/dev/null
++    [[ ${strip[$count]} != no ]] && strip -g "$dkms_tree/$module/$module_version/build/${built_module_location[$count]}${built_module_name[$count]}$module_suffix"
++    cp -f "$dkms_tree/$module/$module_version/build/${built_module_location[$count]}${built_module_name[$count]}$module_suffix" \
++        "$base_dir/module/${dest_module_name[$count]}$module_suffix" >/dev/null
+     done
+ 
+     # Run the post_build script
+@@ -1259,13 +1309,13 @@ clean_build()
+        -d $kernel_source_dir && \
+        ! -h $kernel_source_dir && \
+        ! $ksourcedir_fromcli ]]; then
+-	echo $"Kernel cleanup unnecessary for this kernel.  Skipping..."
++        echo $"Kernel cleanup unnecessary for this kernel.  Skipping..."
+     elif [[ ! $no_clean_kernel ]]; then
+-	cd "$kernel_source_dir"
+-	[[ $kerneldoth_contents ]] || invoke_command "make mrproper" "cleaning kernel tree (make mrproper)" background
+-	[[ $config_contents ]] || echo "$config_contents" > .config
+-	[[ $kerneldoth_contents ]] && echo "$kerneldoth_contents" > /boot/kernel.h
+-	cd - >/dev/null
++        cd "$kernel_source_dir"
++        [[ $kerneldoth_contents ]] || invoke_command "make mrproper" "cleaning kernel tree (make mrproper)" background
++        [[ $config_contents ]] || echo "$config_contents" > .config
++        [[ $kerneldoth_contents ]] && echo "$kerneldoth_contents" > /boot/kernel.h
++        cd - >/dev/null
+     fi
+ 
+     # Clean the build directory
+@@ -1322,18 +1372,18 @@ install_module()
+ 
+     # Make sure that kernel exists to install into
+     [[ -e $install_tree/$kernelver ]] || die 6 \
+-	$"The directory $install_tree/$kernelver doesn't exist." \
+-	$"You cannot install a module onto a non-existant kernel."
++        $"The directory $install_tree/$kernelver doesn't exist." \
++        $"You cannot install a module onto a non-existant kernel."
+ 
+     # Read the conf file
+     read_conf_or_die "$kernelver" "$arch"
+ 
+     # Check that its not already installed (kernel symlink)
+     is_module_installed "$module" "$module_version" "$kernelver" "$arch" && die 5 \
+-	$"This module/version combo is already installed" \
+-	$"for kernel: $kernelver ($arch)"
++        $"This module/version combo is already installed" \
++        $"for kernel: $kernelver ($arch)"
+ 
+-    # if upgrading using rpm_safe_upgrade, go ahead and force the install
++    # If upgrading using rpm_safe_upgrade, go ahead and force the install
+     # else we can wind up with the first half of an upgrade failing to install anything,
+     # while the second half of the upgrade, the removal, then succeeds, leaving us with
+     # nothing installed.
+@@ -1343,85 +1393,86 @@ install_module()
+     local lib_tree="$install_tree/$kernelver"
+     local count
+     for ((count=0; count < ${#built_module_name[@]}; count++)); do
+-	echo $""
+-	echo $"${dest_module_name[$count]}$module_suffix:"
+-	# Check this version against what is already in the kernel
+-	check_version_sanity "$kernelver" "$arch" \
+-	    "$obsolete_by" "${dest_module_name[$count]}" || continue
+-
+-	if ((count == 0)) && ! run_build_script pre_install "$pre_install" && \
+-	    ! [[ $force ]]; then
+-	    die 101 $"pre_install failed, aborting install." \
+-		$"You may override by specifying --force."
+-	fi
+-	local module_count=$(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f | wc -l | awk {'print $1'})
+-	echo $" - Original module"
+-	if [[ -L $dkms_tree/$module/kernel-$kernelver-$arch && \
+-	    -e $dkms_tree/$module/original_module/$kernelver/$arch/${dest_module_name[$count]}$module_suffix ]]; then
+-	    echo $"   - An original module was already stored during a previous install"
+-	elif ! [[ -L $dkms_tree/$module/kernel-$kernelver-$arch ]]; then
+-	    local archive_pref1="$lib_tree/extra/${dest_module_name[$count]}$module_suffix"
+-	    local archive_pref2="$lib_tree/updates/${dest_module_name[$count]}$module_suffix"
+-	    local archive_pref3="$lib_tree${dest_module_location[$count]}/${dest_module_name[$count]}$module_suffix"
+-	    local archive_pref4=""
+-	    ((module_count == 1)) && archive_pref4=$(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f)
+-	    local original_module=""
+-	    local found_orginal=""
+-	    for original_module in $archive_pref1 $archive_pref2 $archive_pref3 $archive_pref4; do
+-		[[ -f $original_module ]] || continue
+-		case "$running_distribution" in
+-		    Debian* | Ubuntu* ) ;;
+-		    *)
+-			echo $"   - Found $original_module"
+-			echo $"   - Storing in $dkms_tree/$module/original_module/$kernelver/$arch/"
+-			echo $"   - Archiving for uninstallation purposes"
+-			mkdir -p "$dkms_tree/$module/original_module/$kernelver/$arch"
+-			mv -f "$original_module" "$dkms_tree/$module/original_module/$kernelver/$arch/"
+-			;;
+-		esac
+-		found_original="yes"
+-		break
+-	    done
+-	    if [[ ! $found_original ]] && ((module_count > 1)); then
+-		echo $"   - Multiple original modules exist but DKMS does not know which to pick"
+-		echo $"   - Due to the confusion, none will be considered during a later uninstall"
+-	    elif [[ ! $found_original ]]; then
+-		echo $"   - No original module exists within this kernel"
+-	    fi
+-	else
+-	    echo $"   - This kernel never originally had a module by this name"
+-	fi
+-
+-	if ((module_count > 1)); then
+-	    echo $" - Multiple same named modules!"
+-	    echo $"   - $module_count named ${dest_module_name[$count]}$module_suffix in $lib_tree/"
+-	    case "$running_distribution" in
+-		Debian* | Ubuntu* ) ;;
+-		*)
+-		    echo $"   - All instances of this module will now be stored for reference purposes ONLY"
+-		    echo $"   - Storing in $dkms_tree/$module/original_module/$kernelver/$arch/collisions/"
+-		    ;;
+-	    esac
+-	    for module_dup in $(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f); do
+-		dup_tree="${module_dup#$lib_tree}";
+-		dup_tree="${dup_tree/${dest_module_name[$count]}$module_suffix}"
+-		case "$running_distribution" in
+-		Debian* | Ubuntu* ) ;;
+-		*)
+-		   echo $"     - Stored $module_dup"
+-		   mkdir -p "$dkms_tree/$module/original_module/$kernelver/$arch/collisions/$dup_tree"
+-		   mv -f $module_dup "$dkms_tree/$module/original_module/$kernelver/$arch/collisions/$dup_tree"
+-		   ;;
+-		esac
+-	    done
+-	fi
+-
+-	# Copy module to its location
+-	echo $" - Installation"
+-	echo $"   - Installing to $install_tree/$kernelver${dest_module_location[$count]}/"
+-	mkdir -p $install_tree/$kernelver${dest_module_location[$count]}
+-	[[ $symlink_modules ]] && symlink="-s"
+-	cp -f $symlink  "$base_dir/module/${dest_module_name[$count]}$module_suffix" "$install_tree/$kernelver${dest_module_location[$count]}/${dest_module_name[$count]}$module_suffix"
++    echo $""
++    echo $"${dest_module_name[$count]}$module_suffix:"
++    # Check this version against what is already in the kernel
++    check_version_sanity "$kernelver" "$arch" "$obsolete_by" "${dest_module_name[$count]}" || continue
++
++    if ((count == 0)) && ! run_build_script pre_install "$pre_install" && ! [[ $force ]]; then
++        die 101 $"pre_install failed, aborting install." \
++            $"You may override by specifying --force."
++    fi
++    local module_count=$(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f | wc -l | awk {'print $1'})
++    echo $" - Original module"
++    if [[ -L $dkms_tree/$module/kernel-$kernelver-$arch && \
++        -e $dkms_tree/$module/original_module/$kernelver/$arch/${dest_module_name[$count]}$module_suffix ]]; then
++        echo $"   - An original module was already stored during a previous install"
++    elif ! [[ -L $dkms_tree/$module/kernel-$kernelver-$arch ]]; then
++        local archive_pref1="$lib_tree/extra/${dest_module_name[$count]}$module_suffix"
++        local archive_pref2="$lib_tree/updates/${dest_module_name[$count]}$module_suffix"
++        local archive_pref3="$lib_tree${dest_module_location[$count]}/${dest_module_name[$count]}$module_suffix"
++        local archive_pref4=""
++        ((module_count == 1)) && archive_pref4=$(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f)
++        local original_module=""
++        local found_orginal=""
++        for original_module in $archive_pref1 $archive_pref2 $archive_pref3 $archive_pref4; do
++            [[ -f $original_module ]] || continue
++            case "$running_distribution" in
++                Debian* | Ubuntu* )
++                    ;;
++                *)
++                echo $"   - Found $original_module"
++                echo $"   - Storing in $dkms_tree/$module/original_module/$kernelver/$arch/"
++                echo $"   - Archiving for uninstallation purposes"
++                mkdir -p "$dkms_tree/$module/original_module/$kernelver/$arch"
++                mv -f "$original_module" "$dkms_tree/$module/original_module/$kernelver/$arch/"
++                ;;
++            esac
++            found_original="yes"
++            break
++        done
++        if [[ ! $found_original ]] && ((module_count > 1)); then
++            echo $"   - Multiple original modules exist but DKMS does not know which to pick"
++            echo $"   - Due to the confusion, none will be considered during a later uninstall"
++        elif [[ ! $found_original ]]; then
++            echo $"   - No original module exists within this kernel"
++        fi
++    else
++        echo $"   - This kernel never originally had a module by this name"
++    fi
++
++    if ((module_count > 1)); then
++        echo $" - Multiple same named modules!"
++        echo $"   - $module_count named ${dest_module_name[$count]}$module_suffix in $lib_tree/"
++        case "$running_distribution" in
++            Debian* | Ubuntu* )
++                ;;
++            *)
++                echo $"   - All instances of this module will now be stored for reference purposes ONLY"
++                echo $"   - Storing in $dkms_tree/$module/original_module/$kernelver/$arch/collisions/"
++                ;;
++        esac
++        for module_dup in $(find $lib_tree -name ${dest_module_name[$count]}$module_suffix -type f); do
++            dup_tree="${module_dup#$lib_tree}";
++            dup_tree="${dup_tree/${dest_module_name[$count]}$module_suffix}"
++            case "$running_distribution" in
++                Debian* | Ubuntu* )
++                    ;;
++                *)
++                   echo $"     - Stored $module_dup"
++                   mkdir -p "$dkms_tree/$module/original_module/$kernelver/$arch/collisions/$dup_tree"
++                   mv -f $module_dup "$dkms_tree/$module/original_module/$kernelver/$arch/collisions/$dup_tree"
++                   ;;
++            esac
++        done
++    fi
++
++    # Copy module to its location
++    echo $" - Installation"
++    echo $"   - Installing to $install_tree/$kernelver${dest_module_location[$count]}/"
++    mkdir -p $install_tree/$kernelver${dest_module_location[$count]}
++    [[ $symlink_modules ]] && symlink="-s"
++    cp -f $symlink  "$base_dir/module/${dest_module_name[$count]}$module_suffix" "$install_tree/$kernelver${dest_module_location[$count]}/${dest_module_name[$count]}$module_suffix"
+ 
+     done
+ 
+@@ -1429,10 +1480,10 @@ install_module()
+     rm -f "$dkms_tree/$module/kernel-$kernelver-$arch" 2>/dev/null
+     ln -s "$module_version/$kernelver/$arch" "$dkms_tree/$module/kernel-$kernelver-$arch" 2>/dev/null
+ 
+-    # add to kabi-tracking
++    # Add to kabi-tracking
+     if [[ ${weak_modules} ]]; then
+-	echo $"Adding any weak-modules"
+-	list_each_installed_module "$module" "$kernelver" "$arch" | ${weak_modules} ${weak_modules_no_initrd} --add-modules
++        echo $"Adding any weak-modules"
++        list_each_installed_module "$module" "$kernelver" "$arch" | ${weak_modules} ${weak_modules_no_initrd} --add-modules
+     fi
+ 
+     # Run the post_install script
+@@ -1444,17 +1495,17 @@ install_module()
+     etc_sysconfig_kernel_modify "add"
+ 
+     invoke_command "do_depmod $kernelver" "depmod" background || {
+-	do_uninstall "$kernelver" "$arch"
+-	die 6 $"Problems with depmod detected.  Automatically uninstalling this module." \
+-	    $"DKMS: Install Failed (depmod problems).  Module rolled back to built state."
+-	    exit 6
++        do_uninstall "$kernelver" "$arch"
++        die 6 $"Problems with depmod detected.  Automatically uninstalling this module." \
++            $"DKMS: Install Failed (depmod problems).  Module rolled back to built state."
++            exit 6
+     }
+ 
+     # Do remake_initrd things (save old initrd)
+     [[ $remake_initrd ]] && ! make_initrd "$kernelver" "$arch" && {
+-	do_uninstall "$kernelver" "$arch"
+-	die 7 $"Problems with mkinitrd detected.  Automatically uninstalling this module." \
+-	    $"DKMS: Install Failed (mkinitrd problems).  Module rolled back to built state."
++        do_uninstall "$kernelver" "$arch"
++        die 7 $"Problems with mkinitrd detected.  Automatically uninstalling this module." \
++            $"DKMS: Install Failed (mkinitrd problems).  Module rolled back to built state."
+     }
+     echo $""
+     echo $"DKMS: install completed."
+@@ -1472,8 +1523,8 @@ list_each_installed_module()
+     local count
+     local real_dest_module_location
+     for ((count=0; count < ${#built_module_name[@]}; count++)); do
+-	real_dest_module_location="$(find_actual_dest_module_location $1 $count $2 $3)"
+-	echo "$install_tree/$2${real_dest_module_location}/${dest_module_name[$count]}$module_suffix"
++        real_dest_module_location="$(find_actual_dest_module_location $1 $count $2 $3)"
++        echo "$install_tree/$2${real_dest_module_location}/${dest_module_name[$count]}$module_suffix"
+     done
+ }
+ 
+@@ -1489,7 +1540,7 @@ is_module_built() {
+     [[ -d $d/module ]] || return 1
+     read_conf_or_die "$3" "$4" "$dkms_tree/$1/$2/source/dkms.conf"
+     for m in "${dest_module_name[@]}"; do
+-	[[ -f $d/module/$m.ko || -f $d/module/$m.o ]] || return 1
++        [[ -f $d/module/$m.ko || -f $d/module/$m.o ]] || return 1
+     done
+ }
+ 
+@@ -1506,24 +1557,24 @@ is_module_installed() { is_module_built "$@" && _is_module_installed "$@"; }
+ 
+ maybe_add_module() (
+     is_module_added "$1" "$2" && {
+-	echo $"Module $1/$2 already added."
+-	return 0
++        echo $"Module $1/$2 already added."
++        return 0
+     }
+     module="$1" module_version="$2" add_module
+ )
+ 
+ maybe_build_module() (
+     is_module_built "$1" "$2" "$3" "$4" && {
+-	echo $"Module $1/$2 already built for kernel $3/4"
+-	return 0
++        echo $"Module $1/$2 already built for kernel $3/4"
++        return 0
+     }
+     module="$1" module_version="$2" kernelver="$3" arch="$4" build_module
+ )
+ 
+ maybe_install_module() (
+     is_module_installed "$1" "$2" "$3" "$4" && {
+-	echo $"Module $1/$2 already installed on kernel $3/$4"
+-	return 0
++        echo $"Module $1/$2 already installed on kernel $3/$4"
++        return 0
+     }
+     module="$1" module_version="$2" kernelver="$3" arch="$4" install_module
+ )
+@@ -1531,21 +1582,21 @@ maybe_install_module() (
+ build_modules() {
+     local i=0
+     for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}"
++        maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}"
+     done
+ }
+ 
+ install_modules() {
+     local i=0
+     for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	maybe_install_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}"
++        maybe_install_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}"
+     done
+ }
+ 
+ check_module_exists() {
+     is_module_added "$module" "$module_version" && return
+     die 2 $"DKMS tree does not contain: $module-$module_version" \
+-	$"Build cannot continue without the proper tree."
++        $"Build cannot continue without the proper tree."
+ }
+ 
+ possible_dest_module_locations()
+@@ -1577,11 +1628,11 @@ find_actual_dest_module_location()
+     dkms_owned="${dkms_tree}/${module}/kernel-${kernelver}-${arch}/module/${dest_module_name[$count]}${module_suffix}"
+ 
+     for l in $locations; do
+-	installed="${install_tree}/${kernelver}${l}/${dest_module_name[${count}]}${module_suffix}"
+-	if [[ -f ${installed} ]] && diff "${dkms_owned}" "${installed}" > /dev/null 2>&1; then
+-	    echo "${l}"
+-	    return 0
+-	fi
++        installed="${install_tree}/${kernelver}${l}/${dest_module_name[${count}]}${module_suffix}"
++        if [[ -f ${installed} ]] && diff "${dkms_owned}" "${installed}" > /dev/null 2>&1; then
++            echo "${l}"
++            return 0
++        fi
+     done
+ 
+ }
+@@ -1606,54 +1657,55 @@ do_uninstall()
+     local kernel_symlink=$(readlink -f "$dkms_tree/$module/kernel-$1-$2")
+     local real_dest_module_location
+     if [[ $kernel_symlink = $dkms_tree/$module/$module_version/$1/$2 ]]; then
+-	was_active="true"
+-	echo $""
+-	echo $"Status: Before uninstall, this module version was ACTIVE on this kernel."
+-	# remove kabi-tracking if last instance removed
+-	if [[ ${weak_modules} ]] && \
+-	    (module_status_built $module $module_version |grep -q "installed"); then
+-	    echo $"Removing any linked weak-modules"
+-	    list_each_installed_module "$module" "$1" "$2" | ${weak_modules} ${weak_modules_no_initrd} --remove-modules
+-	fi
+-
+-	for ((count=0; count < ${#built_module_name[@]}; count++)); do
+-	    real_dest_module_location="$(find_actual_dest_module_location $module $count $1 $2)"
+-	    echo $""
+-	    echo $"${dest_module_name[$count]}$module_suffix:"
+-	    echo $" - Uninstallation"
+-	    echo $"   - Deleting from: $install_tree/$1${real_dest_module_location}/"
+-	    rm -f "$install_tree/$1${real_dest_module_location}/${dest_module_name[$count]}$module_suffix"
+-	    dir_to_remove="${real_dest_module_location#/}"
+-	    while [ "${dir_to_remove}" != "${dir_to_remove#/}" ]; do dir_to_remove="${dir_to_remove#/}" ; done
+-	    (cd "$install_tree/$1" && rmdir --parents --ignore-fail-on-non-empty "${dir_to_remove}" || true)
+-	    echo $" - Original module"
+-	    if [[ -e $dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix ]]; then
+-		case "$running_distribution" in
+-		Debian* | Ubuntu* ) ;;
+-		*)
+-		    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
+-		    ;;
+-		esac
+-	    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."
+-
+-		# Remove modules_conf entries from /etc/modules.conf if remake_initrd is set or if this is last instance removed
+-		if [[ $remake_initrd ]] || \
+-		    (do_status $module $module_version | grep -q "installed"); then
+-		    echo $""
+-		    moduleconfig_remove "$1"
+-		fi
+-	    fi
+-	done
+-	rm -f "$dkms_tree/$module/kernel-$1-$2"
++        was_active="true"
++        echo $""
++        echo $"Status: Before uninstall, this module version was ACTIVE on this kernel."
++        # remove kabi-tracking if last instance removed
++        if [[ ${weak_modules} ]] && (module_status_built $module $module_version |grep -q "installed"); then
++            echo $"Removing any linked weak-modules"
++            list_each_installed_module "$module" "$1" "$2" | ${weak_modules} ${weak_modules_no_initrd} --remove-modules
++        fi
++
++    for ((count=0; count < ${#built_module_name[@]}; count++)); do
++        real_dest_module_location="$(find_actual_dest_module_location $module $count $1 $2)"
++        echo $""
++        echo $"${dest_module_name[$count]}$module_suffix:"
++        echo $" - Uninstallation"
++        echo $"   - Deleting from: $install_tree/$1${real_dest_module_location}/"
++        rm -f "$install_tree/$1${real_dest_module_location}/${dest_module_name[$count]}$module_suffix"
++        dir_to_remove="${real_dest_module_location#/}"
++        while [ "${dir_to_remove}" != "${dir_to_remove#/}" ]; do
++            dir_to_remove="${dir_to_remove#/}"
++        done
++        (cd "$install_tree/$1" && rmdir --parents --ignore-fail-on-non-empty "${dir_to_remove}" || true)
++        echo $" - Original module"
++        if [[ -e $dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix ]]; then
++            case "$running_distribution" in
++                Debian* | Ubuntu* )
++                    ;;
++                *)
++                    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
++                    ;;
++            esac
++            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."
++
++            # Remove modules_conf entries from /etc/modules.conf if remake_initrd is set or if this is last instance removed
++            if [[ $remake_initrd ]] || (do_status $module $module_version | grep -q "installed"); then
++                echo $""
++                moduleconfig_remove "$1"
++            fi
++        fi
++    done
++    rm -f "$dkms_tree/$module/kernel-$1-$2"
+     else
+-	echo $""
+-	echo $"Status: This module version was INACTIVE for this kernel."
++        echo $""
++        echo $"Status: This module version was INACTIVE for this kernel."
+     fi
+ 
+     # Run the post_remove script
+@@ -1664,22 +1716,21 @@ do_uninstall()
+ 
+     # Do remake_initrd things (remake initrd)
+     if [[ $remake_initrd && $was_active ]] && ! make_initrd "$1" "$2"; then
+-	warn $"There was a problem remaking your initrd.  You must manually remake it" \
+-	    $"before booting into this kernel."
++        warn $"There was a problem remaking your initrd.  You must manually remake it" \
++            $"before booting into this kernel."
+     fi
+ 
+     # Delete the original_module if nothing for this kernel is installed anymore
+-    if [[ $was_active && -d $dkms_tree/$module/original_module/$1/$2 && \
+-	! -d $dkms_tree/$module/original_module/$1/$2/collisions ]]; then
+-	echo $""
+-	echo $"Removing original_module from DKMS tree for kernel $1 ($2)"
+-	rm -rf "$dkms_tree/$module/original_module/$1/$2" 2>/dev/null
+-	[[ $(find $dkms_tree/$module/original_module/$1/* -maxdepth 0 -type d 2>/dev/null) ]] || rm -rf "$dkms_tree/$module/original_module/$1"
++    if [[ $was_active && -d $dkms_tree/$module/original_module/$1/$2 && ! -d $dkms_tree/$module/original_module/$1/$2/collisions ]]; then
++        echo $""
++        echo $"Removing original_module from DKMS tree for kernel $1 ($2)"
++        rm -rf "$dkms_tree/$module/original_module/$1/$2" 2>/dev/null
++        [[ $(find $dkms_tree/$module/original_module/$1/* -maxdepth 0 -type d 2>/dev/null) ]] || rm -rf "$dkms_tree/$module/original_module/$1"
+     elif [[ $was_active && -d $dkms_tree/$module/original_module/$1/$2/collisions ]]; then
+-	echo $""
+-	echo $"Keeping directory $dkms_tree/$module/original_module/$1/$2/collisions/"
+-	echo $"for your reference purposes.  Your kernel originally contained multiple"
+-	echo $"same-named modules and this directory is now where these are located."
++        echo $""
++        echo $"Keeping directory $dkms_tree/$module/original_module/$1/$2/collisions/"
++        echo $"for your reference purposes.  Your kernel originally contained multiple"
++        echo $"same-named modules and this directory is now where these are located."
+     fi
+     [[ $(find $dkms_tree/$module/original_module/* -maxdepth 0 -type d 2>/dev/null) ]] || rm -rf "$dkms_tree/$module/original_module"
+ 
+@@ -1699,13 +1750,13 @@ uninstall_module()
+ 
+     # Check that $module is in the dkms tree
+     [[ -d $dkms_tree/$module ]] || die 2 \
+-	$"There are no instances of module: $module" \
+-	$"located in the DKMS tree."
++        $"There are no instances of module: $module" \
++        $"located in the DKMS tree."
+ 
+     # Make sure that its installed in the first place
+     [[ -d $dkms_tree/$module/$module_version ]] || die 3 \
+-	$"The module/version combo: $module-$module_version" \
+-	$"is not located in the DKMS tree."
++        $"The module/version combo: $module-$module_version" \
++        $"is not located in the DKMS tree."
+ 
+     # Read the conf file
+     read_conf_or_die "$kernelver" "$arch"
+@@ -1713,8 +1764,8 @@ uninstall_module()
+     # Only do stuff if module/module version is currently installed
+     local kernel_symlink=$(readlink -f "$dkms_tree/$module/kernel-$kernelver-$arch")
+     [[ $kernel_symlink = $dkms_tree/$module/$module_version/$kernelver/$arch ]] || die 5 \
+-	    $"The module $module $module_version is not currently installed." \
+-	    $"This module is not currently ACTIVE for kernel $kernelver ($arch)."
++        $"The module $module $module_version is not currently installed." \
++        $"This module is not currently ACTIVE for kernel $kernelver ($arch)."
+     do_uninstall "$kernelver" "$arch"
+ }
+ 
+@@ -1723,68 +1774,67 @@ remove_module()
+ {
+     # Check that the right arguments were passed
+     if [[ ! ($module && $module_version) || $kernels_arches_default  ]]; then
+-	die 1 $"Invalid number of parameters passed." \
+-	    $"Usage: remove <module>/<module-version> --all" \
+-	    $"   or: remove <module>/<module-version> -k <kernel-version>"
++        die 1 $"Invalid number of parameters passed." \
++            $"Usage: remove <module>/<module-version> --all" \
++            $"   or: remove <module>/<module-version> -k <kernel-version>"
+     fi
+ 
+     # Check that $module is in the dkms tree
+     if ! [[ -d $dkms_tree/$module/$module_version ]]; then
+-	die 3 $"There are no instances of module: $module" \
+-	    $"$module_version located in the DKMS tree."
++        die 3 $"There are no instances of module: $module" \
++            $"$module_version located in the DKMS tree."
+     fi
+ 
+     local i
+     for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	# make sure its there first before removing
+-	if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
+-	    die 4 $"There is no instance of $module $module_version" \
+-		$"for kernel ${kernelver[$i]} (${arch[$i]}) located in the DKMS tree."
+-	fi
+-
+-	# Do --rpm_safe_upgrade check (exit out and don't do remove if inter-release RPM upgrade scenario occurs)
+-	if [[ $rpm_safe_upgrade ]]; then
+-	    local pppid=$(awk '/PPid:/ {print $2}' /proc/$PPID/status)
+-	    local time_stamp=$(ps -o lstart --no-headers -p $pppid 2>/dev/null)
+-	    for lock_file in $tmp_location/dkms_rpm_safe_upgrade_lock.$pppid.*; do
+-		[[ -f $lock_file ]] || continue
+-		lock_head=$(head -n 1 $lock_file 2>/dev/null)
+-		lock_tail=$(tail -n 1 $lock_file 2>/dev/null)
+-		[[ $lock_head = $module-$module_version && $time_stamp && $lock_tail = $time_stamp ]] || continue
+-		rm -f $lock_file
+-		die 0 $"DKMS: Remove cancelled because --rpm_safe_upgrade scenario detected."
+-	    done
+-	fi
+-
+-	# Read the conf file
+-	read_conf_or_die "${kernelver[$i]}" "${arch[$i]}"
+-
+-	do_uninstall "${kernelver[$i]}" "${arch[$i]}"
+-
+-	# Delete the $kernel_version/$arch_used part of the tree
+-	rm -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}"
+-	[[ $(find $dkms_tree/$module/$module_version/${kernelver[$i]}/* \
+-	    -maxdepth 0 -type d 2>/dev/null) ]] || \
+-	    rm -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}"
++        # Make sure its there first before removing
++        if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
++            die 4 $"There is no instance of $module $module_version" \
++            $"for kernel ${kernelver[$i]} (${arch[$i]}) located in the DKMS tree."
++        fi
++
++        # Do --rpm_safe_upgrade check (exit out and don't do remove if inter-release RPM upgrade scenario occurs)
++        if [[ $rpm_safe_upgrade ]]; then
++            local pppid=$(awk '/PPid:/ {print $2}' /proc/$PPID/status)
++            local time_stamp=$(ps -o lstart --no-headers -p $pppid 2>/dev/null)
++            for lock_file in $tmp_location/dkms_rpm_safe_upgrade_lock.$pppid.*; do
++                [[ -f $lock_file ]] || continue
++                lock_head=$(head -n 1 $lock_file 2>/dev/null)
++                lock_tail=$(tail -n 1 $lock_file 2>/dev/null)
++                [[ $lock_head = $module-$module_version && $time_stamp && $lock_tail = $time_stamp ]] || continue
++                rm -f $lock_file
++                die 0 $"DKMS: Remove cancelled because --rpm_safe_upgrade scenario detected."
++            done
++        fi
++
++        # Read the conf file
++        read_conf_or_die "${kernelver[$i]}" "${arch[$i]}"
++
++        do_uninstall "${kernelver[$i]}" "${arch[$i]}"
++
++        # Delete the $kernel_version/$arch_used part of the tree
++        rm -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}"
++        [[ $(find $dkms_tree/$module/$module_version/${kernelver[$i]}/* -maxdepth 0 -type d 2>/dev/null) ]] || \
++            rm -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}"
+     done
+ 
+     # Delete the $module_version part of the tree if no other $module_version/$kernel_version dirs exist
+     if ! find $dkms_tree/$module/$module_version/* -maxdepth 0 -type d 2>/dev/null | egrep -qv "(build|tarball|driver_disk|rpm|deb|source)$"; then
+-	echo $""
+-	echo $"------------------------------"
+-	echo $"Deleting module version: $module_version"
+-	echo $"completely from the DKMS tree."
+-	echo $"------------------------------"
+-	rm -rf "$dkms_tree/$module/$module_version"
+-	echo $"Done."
++        echo $""
++        echo $"------------------------------"
++        echo $"Deleting module version: $module_version"
++        echo $"completely from the DKMS tree."
++        echo $"------------------------------"
++        rm -rf "$dkms_tree/$module/$module_version"
++        echo $"Done."
+     fi
+ 
+     # Get rid of any remnant directories if necessary
+     if (($(ls "$dkms_tree/$module" | wc -w | awk '{print $1}') == 0)); then
+-	rm -rf "$dkms_tree/$module" 2>/dev/null
++        rm -rf "$dkms_tree/$module" 2>/dev/null
+ 
+-	# Its now safe to completely remove references in /etc/sysconfig/kernel for SuSE
+-	etc_sysconfig_kernel_modify "delete"
++        # Its now safe to completely remove references in /etc/sysconfig/kernel for SuSE
++        etc_sysconfig_kernel_modify "delete"
+     fi
+ }
+ 
+@@ -1797,13 +1847,13 @@ find_module_from_ko()
+     local kernellink
+ 
+     for kernellink in "$dkms_tree"/*/kernel-*; do
+-	[[ -L $kernellink ]] || continue
+-	module=${kernellink#$dkms_tree/}
+-	module=${module%/kernel-*}
+-	diff "$kernellink/module/${basename_ko}" "${ko}" >/dev/null 2>&1 || continue
+-	rest=$(readlink $kernellink)
+-	echo "$module/$rest"
+-	return 0
++        [[ -L $kernellink ]] || continue
++        module=${kernellink#$dkms_tree/}
++        module=${module%/kernel-*}
++        diff "$kernellink/module/${basename_ko}" "${ko}" >/dev/null 2>&1 || continue
++        rest=$(readlink $kernellink)
++        echo "$module/$rest"
++        return 0
+     done
+     return 1
+ }
+@@ -1819,20 +1869,18 @@ module_status_weak() {
+     local m v k a weak_ko mod installed_ko f ret=1 oifs=$IFS
+     local -a already_found
+     for weak_ko in "$install_tree/"*/weak-updates/*; do
+-	[[ -e $weak_ko ]] || continue
+-	[[ -L $weak_ko ]] && installed_ko="$(readlink -f "$weak_ko")" || continue
+-	IFS=/ read m v k a < <(IFS=$oifs find_module_from_ko "$weak_ko") || continue
+-	kern=${weak_ko#$install_tree/}
+-	kern=${kern%/weak-updates/*}
+-	[[ $m = ${1:-*} && $v = ${2:-*} && $k = ${5:-*} && \
+-	    $a = ${4:-*} && $kern = ${3:-*} ]] || \
+-	    continue
+-	ret=0
+-	for f in "${already_found[@]}"; do
+-	    [[ $f = $m/$v/$kern/$a/$k ]] && continue 2
+-	done
+-	already_found[${#already_found[@]}]="$m/$v/$kern/$a/$k"
+-	echo "installed-weak $m/$v/$kern/$a/$k"
++        [[ -e $weak_ko ]] || continue
++        [[ -L $weak_ko ]] && installed_ko="$(readlink -f "$weak_ko")" || continue
++        IFS=/ read m v k a < <(IFS=$oifs find_module_from_ko "$weak_ko") || continue
++        kern=${weak_ko#$install_tree/}
++        kern=${kern%/weak-updates/*}
++        [[ $m = ${1:-*} && $v = ${2:-*} && $k = ${5:-*} && $a = ${4:-*} && $kern = ${3:-*} ]] || continue
++        ret=0
++        for f in "${already_found[@]}"; do
++            [[ $f = $m/$v/$kern/$a/$k ]] && continue 2
++        done
++        already_found[${#already_found[@]}]="$m/$v/$kern/$a/$k"
++        echo "installed-weak $m/$v/$kern/$a/$k"
+     done
+     return $ret
+ }
+@@ -1842,8 +1890,8 @@ do_status_weak()
+ {
+     local mvka m v k a kern status
+     while read status mvka; do
+-	IFS=/ read m v k a kern <<< "$mvka"
+-	echo "$m, $v, $k, $a: installed-weak from $kern"
++        IFS=/ read m v k a kern <<< "$mvka"
++        echo "$m, $v, $k, $a: installed-weak from $kern"
+     done < <(module_status_weak "$@")
+ }
+ 
+@@ -1854,15 +1902,15 @@ module_status_built_extra() (
+     read_conf "$3" "$4" "$dkms_tree/$1/$2/source/dkms.conf"
+     [[ -d $dkms_tree/$1/original_module/$3/$4 ]] && echo -n " (original_module exists)"
+     for ((count=0; count < ${#dest_module_name[@]}; count++)); do
+-	tree_mod="$dkms_tree/$1/$2/$3/$4/module/${dest_module_name[$count]}$module_suffix"
+-	if ! [[ -e $tree_mod ]]; then
+-	    echo -n " (WARNING! Missing some built modules!)"
+-	elif _is_module_installed "$@"; then
+-	    real_dest="$(find_actual_dest_module_location "$1" $count "$3" "$4")"
+-	    if ! diff -q "$tree_mod" "$install_tree/$3${real_dest}/${dest_module_name[$count]}$module_suffix" >/dev/null 2>&1; then
+-		echo -n " (WARNING! Diff between built and installed module!)"
+-	    fi
+-	fi
++        tree_mod="$dkms_tree/$1/$2/$3/$4/module/${dest_module_name[$count]}$module_suffix"
++        if ! [[ -e $tree_mod ]]; then
++            echo -n " (WARNING! Missing some built modules!)"
++        elif _is_module_installed "$@"; then
++            real_dest="$(find_actual_dest_module_location "$1" $count "$3" "$4")"
++            if ! diff -q "$tree_mod" "$install_tree/$3${real_dest}/${dest_module_name[$count]}$module_suffix" >/dev/null 2>&1; then
++                echo -n " (WARNING! Diff between built and installed module!)"
++            fi
++        fi
+     done
+ )
+ 
+@@ -1872,17 +1920,16 @@ module_status_built_extra() (
+ module_status_built() {
+     local ret=1 directory ka k a state oifs="$IFS" IFS=''
+     for directory in "$dkms_tree/$1/$2/"${3:-[0-9].*}/${4:-*}; do
+-	IFS="$oifs"
+-	ka="${directory#$dkms_tree/$1/$2/}"
+-	k="${ka%/*}"
+-	a="${ka#*/}"
+-	is_module_built "$1" "$2" "$k" "$a" || continue
+-	ret=0
+-	state="built"
+-	_is_module_installed "$1" "$2" "$k" "$a" && \
+-	    state="installed"
+-	echo "$state $1/$2/$k/$a"
+-	IFS=''
++        IFS="$oifs"
++        ka="${directory#$dkms_tree/$1/$2/}"
++        k="${ka%/*}"
++        a="${ka#*/}"
++        is_module_built "$1" "$2" "$k" "$a" || continue
++        ret=0
++        state="built"
++        _is_module_installed "$1" "$2" "$k" "$a" && state="installed"
++        echo "$state $1/$2/$k/$a"
++        IFS=''
+     done
+     IFS="$oifs"
+     return $ret
+@@ -1892,14 +1939,14 @@ module_status_built() {
+ module_status() {
+     local oifs="$IFS" IFS='' mv m v directory ret=1
+     for directory in "$dkms_tree/"${1:-*}/${2:-*}; do
+-	IFS="$oifs"
+-	mv="${directory#$dkms_tree/}"
+-	m="${mv%/*}"
+-	v="${mv#*/}"
+-	is_module_added "$m" "$v" || continue
+-	ret=0
+-	module_status_built "$m" "$v" "$3" "$4" || echo "added $m/$v"
+-	IFS=''
++        IFS="$oifs"
++        mv="${directory#$dkms_tree/}"
++        m="${mv%/*}"
++        v="${mv#*/}"
++        is_module_added "$m" "$v" || continue
++        ret=0
++        module_status_built "$m" "$v" "$3" "$4" || echo "added $m/$v"
++        IFS=''
+     done
+     IFS="$oifs"
+     return $ret
+@@ -1911,13 +1958,17 @@ module_status() {
+ do_status() {
+     local status mvka m v k a
+     while read status mvka; do
+-	IFS=/ read m v k a <<< "$mvka"
+-	case $status in
+-	    added) echo "$m, $v: $status";;
+-	    built|installed) echo -n "$m, $v, $k, $a: $status"
+-		module_status_built_extra "$m" "$v" "$k" "$a"
+-		echo;;
+-	esac
++        IFS=/ read m v k a <<< "$mvka"
++        case $status in
++            added)
++                echo "$m, $v: $status"
++                ;;
++            built|installed)
++                echo -n "$m, $v, $k, $a: $status"
++                module_status_built_extra "$m" "$v" "$k" "$a"
++                echo
++                ;;
++        esac
+     done < <(module_status "$@")
+ }
+ 
+@@ -1927,13 +1978,13 @@ show_status()
+ {
+     local j state_array
+     if ((${#kernelver[@]} == 0)); then
+-	do_status "$module" "$module_version" "$kernelver" "$arch"
+-	do_status_weak "$module" "$module_version" "$kernelver" "$arch"
++        do_status "$module" "$module_version" "$kernelver" "$arch"
++        do_status_weak "$module" "$module_version" "$kernelver" "$arch"
+     else
+-	for ((j=0; j < ${#kernelver[@]}; j++)); do
+-	    do_status "$module" "$module_version" "${kernelver[$j]}" "${arch[$j]}"
+-	    do_status_weak "$module" "$module_version" "${kernelver[$j]}" "${arch[$j]}"
+-	done
++    for ((j=0; j < ${#kernelver[@]}; j++)); do
++        do_status "$module" "$module_version" "${kernelver[$j]}" "${arch[$j]}"
++        do_status_weak "$module" "$module_version" "${kernelver[$j]}" "${arch[$j]}"
++    done
+     fi
+ }
+ 
+@@ -1966,7 +2017,10 @@ delete_temporary_trees()
+     temporary_trees_del_command=
+ }
+ 
+-in_temporary_trees() { [[ $temporary_trees_del_command ]] ;}
++in_temporary_trees()
++{
++    [[ $temporary_trees_del_command ]]
++}
+ 
+ media_valid()
+ {
+@@ -1985,8 +2039,12 @@ make_driver_disk_floppy()
+     rm -f "$image_name"
+     invoke_command "dd if=/dev/zero of=$image_name bs=$(($size/20))k count=20" "making a blank floppy image" background
+     case $fs in
+-	vfat) invoke_command "mkdosfs $image_name" "mkdosfs" background;;
+-	ext2) invoke_command "mke2fs -F $image_name" "mke2fs" background;;
++        vfat)
++            invoke_command "mkdosfs $image_name" "mkdosfs" background
++            ;;
++        ext2)
++            invoke_command "mke2fs -F $image_name" "mke2fs" background
++            ;;
+     esac
+ 
+     local mntdir=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+@@ -2004,8 +2062,12 @@ make_driver_disk_isotar()
+     local source_dir="$3"
+     local file
+     case $type in
+-	iso) invoke_command "mkisofs -v -r -J -pad -V $module -o $image_name ." "mkisofs" background;;
+-	tar) invoke_command "tar cvf $image_name ." "tar" background;;
++        iso)
++            invoke_command "mkisofs -v -r -J -pad -V $module -o $image_name ." "mkisofs" background
++            ;;
++        tar)
++            invoke_command "tar cvf $image_name ." "tar" background
++            ;;
+     esac
+ }
+ 
+@@ -2014,79 +2076,91 @@ make_driver_disk_media()
+     echo "Copying files $2"
+ 
+     case $media in
+-	floppy*) make_driver_disk_floppy "$1" "$2";;
+-	iso*) make_driver_disk_isotar "iso" "$1" "$2";;
+-	tar*) make_driver_disk_isotar "tar" "$1" "$2";;
++        floppy*)
++            make_driver_disk_floppy "$1" "$2"
++            ;;
++        iso*)
++            make_driver_disk_isotar "iso" "$1" "$2"
++            ;;
++        tar*)
++            make_driver_disk_isotar "tar" "$1" "$2"
++            ;;
+     esac
+ }
+ 
+ driver_disk_suffix()
+ {
+     case $media in
+-	floppy*) echo "img";;
+-	iso*) echo "iso";;
+-	tar*) echo "tar";;
++    floppy*)
++        echo "img"
++        ;;
++    iso*)
++        echo "iso"
++        ;;
++    tar*)
++        echo "tar"
++        ;;
+     esac
+ }
+ 
+ make_redhat_driver_disk()
+ {
+     local i count
+-    # kludge to allow redhat1 driver disks with BOOT kernel modules (arch i386)
++    # Kludge to allow redhat1 driver disks with BOOT kernel modules (arch i386)
+     if [[ $distro = redhat1 && $multi_arch = true ]]; then
+-	local redhat1_okay="true"
+-	local other_arch=""
+-	for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	    if [[ ${arch[$i]} != i386 && $other_arch != ${arch[$i]} && $other_arch ]]; then
+-		die 3 $"You have specified a Red Hat version 1 driver disk, but have also" \
+-		    $"specified multiple architectures.  Version 1 does not support this." \
+-		    $"Use 'redhat2' instead (only OSes >= RHEL3, FC1 support version 2)."
+-	    elif [[ ${arch[$i]} != i386 && $other_arch != ${arch[$i]} && ! $other_arch ]]; then
+-		other_arch="${arch[$i]}"
+-	    fi
+-	done
++        local redhat1_okay="true"
++        local other_arch=""
++        for ((i=0; i < ${#kernelver[@]}; i++)); do
++            if [[ ${arch[$i]} != i386 && $other_arch != ${arch[$i]} && $other_arch ]]; then
++                die 3 $"You have specified a Red Hat version 1 driver disk, but have also" \
++                    $"specified multiple architectures.  Version 1 does not support this." \
++                    $"Use 'redhat2' instead (only OSes >= RHEL3, FC1 support version 2)."
++            elif [[ ${arch[$i]} != i386 && $other_arch != ${arch[$i]} && ! $other_arch ]]; then
++                other_arch="${arch[$i]}"
++            fi
++        done
+     fi
+     if [ "$distro" == "redhat2" ]  && [ -z "$redhat1_okay" ]; then
+-	echo $"Creating Red Hat v2 driver disk (arch support)."
+-	echo $""
+-	local rhdd_filename="rhdd"
++        echo $"Creating Red Hat v2 driver disk (arch support)."
++        echo $""
++        local rhdd_filename="rhdd"
+     elif [ "$distro" == "redhat3" ] && [ -z "$redhat1_okay" ]; then
+         echo $"Creating Red Hat v3 driver disk."
+-	echo $""
+-	make_redhat3_driver_disk
+-	return
++        echo $""
++        make_redhat3_driver_disk
++        return
+     else
+-	echo $"Creating Red Hat v1 driver disk."
+-	echo $""
+-	local rhdd_filename="rhdd-6.1"
++        echo $"Creating Red Hat v1 driver disk."
++        echo $""
++        local rhdd_filename="rhdd-6.1"
+     fi
+ 
+     cpioarchive_dir_name=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+ 
+     for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	set_module_suffix "${kernelver[$i]}"
+-
+-	local dd_prefix="${kernelver[$i]}"
+-	[[ $distro = redhat2 ]] && dd_prefix="${kernelver[$i]}/${arch[$i]}"
+-	[[ $multi_arch = true && -z $redhat1_okay ]] && dd_prefix="${kernelver[$i]}/${arch[$i]}"
+-	maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}" || {
+-	    rm -rf "$cpioarchive_dir_name"
+-	    die 5 $"Cannot build $module/$module_version for redhat driver disk."
+-	}
+-	
+-	# FIXME: add check for KMP binary RPMs to include in the driver disk
+-	if [[ ! $kernel_version_list ]]; then
+-	    kernel_version_list="kernel${kernelver[$i]}-${arch[$i]}"
+-	else
+-	    kernel_version_list="$kernel_version_list-kernel${kernelver[$i]}-${arch[$i]}"
+-	fi
+-	mkdir -p $cpioarchive_dir_name/$dd_prefix
+-	for f in "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/"*"$module_suffix"; do
+-	    [[ -f $f ]] || continue
+-	    echo "Marking ${f#$dkms_tree/$module/$module_version/}..."
+-	    cp "$f" "$cpioarchive_dir_name/$dd_prefix/"
+-	    modules_cgz_list="$dd_prefix/${f##*/} ${modules_cgz_list}"
+-	done
++        set_module_suffix "${kernelver[$i]}"
++
++        local dd_prefix="${kernelver[$i]}"
++        [[ $distro = redhat2 ]] && dd_prefix="${kernelver[$i]}/${arch[$i]}"
++        [[ $multi_arch = true && -z $redhat1_okay ]] && dd_prefix="${kernelver[$i]}/${arch[$i]}"
++        maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}" || {
++            rm -rf "$cpioarchive_dir_name"
++            die 5 $"Cannot build $module/$module_version for redhat driver disk."
++        }
++
++        # FIXME: add check for KMP binary RPMs to include in the driver disk
++        if [[ ! $kernel_version_list ]]; then
++            kernel_version_list="kernel${kernelver[$i]}-${arch[$i]}"
++        else
++            kernel_version_list="$kernel_version_list-kernel${kernelver[$i]}-${arch[$i]}"
++        fi
++        mkdir -p $cpioarchive_dir_name/$dd_prefix
++        for f in "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/"*"$module_suffix"; do
++            [[ -f $f ]] || continue
++            echo "Marking ${f#$dkms_tree/$module/$module_version/}..."
++            cp "$f" "$cpioarchive_dir_name/$dd_prefix/"
++            modules_cgz_list="$dd_prefix/${f##*/} ${modules_cgz_list}"
++        done
+ 
+     done
+ 
+@@ -2101,18 +2175,18 @@ make_redhat_driver_disk()
+ 
+     local files_into_driverdisk="modules.cgz $rhdd_filename modules.alias"
+     for file in $files_for_driverdisk; do
+-	if [[ -e $dkms_tree/$module/$module_version/source/redhat_driver_disk/$file ]]; then
+-	    files_into_driverdisk="$file $files_into_driverdisk"
+-	    cp -f "$dkms_tree/$module/$module_version/source/redhat_driver_disk/$file" "$driver_disk_dir/" 2>/dev/null
+-	else
+-	    warn $"File: $file not found in $dkms_tree/$module/$module_version/source/redhat_driver_disk/"
+-	fi
++        if [[ -e $dkms_tree/$module/$module_version/source/redhat_driver_disk/$file ]]; then
++            files_into_driverdisk="$file $files_into_driverdisk"
++            cp -f "$dkms_tree/$module/$module_version/source/redhat_driver_disk/$file" "$driver_disk_dir/" 2>/dev/null
++        else
++            warn $"File: $file not found in $dkms_tree/$module/$module_version/source/redhat_driver_disk/"
++        fi
+     done
+     echo "$module-$module_version driver disk" > "$driver_disk_dir/$rhdd_filename"
+ 
+     # Make sure the kernel_version_list is not too long
+     if (( $(echo $kernel_version_list | wc -m | awk {'print $1'}) > 200 )); then
+-	kernel_version_list="manykernels"
++        kernel_version_list="manykernels"
+     fi
+ 
+     local suffix="$(driver_disk_suffix)"
+@@ -2124,17 +2198,17 @@ make_redhat_driver_disk()
+     invoke_command "echo '$modules_cgz_list' | cpio -oH crc 2>/dev/null | gzip -9 > ./modules.cgz" "compressing modules.cgz" background
+     cp -f ./modules.cgz "$driver_disk_dir/"
+ 
+-    # generate modules.alias file
++    # Generate modules.alias file
+     # On 2.4 kernels and kernels with no aliases. this won't yield anything.
+     touch ./modules.alias
+     for f in ${modules_cgz_list}; do
+-	module_wo_suffix=$(basename ${f} ${module_suffix})
+-	tmp_alias="./modules.alias.${module_wo_suffix}"
+-	f="./${f}"
+-	depmod -n ${f} 2>/dev/null | grep ^alias > ${tmp_alias}
+-	if [[ -s ${tmp_alias} ]]; then
+-	    cat "${tmp_alias}" >> ./modules.alias
+-	fi
++        module_wo_suffix=$(basename ${f} ${module_suffix})
++        tmp_alias="./modules.alias.${module_wo_suffix}"
++        f="./${f}"
++        depmod -n ${f} 2>/dev/null | grep ^alias > ${tmp_alias}
++        if [[ -s ${tmp_alias} ]]; then
++            cat "${tmp_alias}" >> ./modules.alias
++        fi
+     done
+     [[ -e ./modules.alias ]] && cp -f ./modules.alias "$driver_disk_dir/"
+     # FIXME: add rpms/ directory, copy in KMP RPMs, run createrepo --pretty
+@@ -2160,15 +2234,15 @@ make_driver_disk()
+ {
+     # Check that the right arguments were passed
+     if ! [[ $module && $module_version && $distro && $kernelver ]]; then
+-	die 1 $"Invalid number of parameters passed." \
+-	$"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver> [--media floppy|iso|tar]"
++        die 1 $"Invalid number of parameters passed." \
++        $"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver> [--media floppy|iso|tar]"
+     fi
+ 
+-    # default to floppy media
++    # Default to floppy media
+     [[ $media ]] || media="floppy"
+     if ! media_valid; then
+-	die 1 $"Media $media is invalid." \
+-	    $"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver> [--media floppy|iso|tar]"
++        die 1 $"Media $media is invalid." \
++            $"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver> [--media floppy|iso|tar]"
+     fi
+ 
+     # Check that source symlink works
+@@ -2176,19 +2250,28 @@ make_driver_disk()
+ 
+     # Confirm that distro is supported
+     case $distro in
+-	redhat | redhat[123] | suse | UnitedLinux | ubuntu) ;;
+-	*) die 3 $"Invalid distro argument. Currently, the distros" \
+-		$"supported are: redhat, redhat1, redhat2, redhat3, suse, UnitedLinux" \
+-		$"               ubuntu";;
++        redhat | redhat[123] | suse | UnitedLinux | ubuntu)
++            ;;
++        *)
++            die 3 $"Invalid distro argument. Currently, the distros" \
++                $"supported are: redhat, redhat1, redhat2, redhat3, suse, UnitedLinux" \
++                $"               ubuntu"
++            ;;
+     esac
+ 
+     # Read the conf file
+     read_conf_or_die "$kernelver" "$arch"
+ 
+     case $distro in
+-	redhat*) make_redhat_driver_disk;;
+-	ubuntu) make_ubuntu_driver_disk;;
+-	*) make_suse_driver_disk;;
++        redhat*)
++            make_redhat_driver_disk
++            ;;
++        ubuntu)
++            make_ubuntu_driver_disk
++            ;;
++        *)
++            make_suse_driver_disk
++            ;;
+     esac
+ }
+ 
+@@ -2197,34 +2280,34 @@ find_external_dependencies()
+     local mod count i
+     local -a deps
+ 
+-    # find all module dependencies
++    # Find all module dependencies
+     for ((count=0; count < ${#dest_module_name[@]}; count++)); do
+-	for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	    set_module_suffix "${kernelver[$i]}"
+-	    mod="$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix"
+-	    deps=(${deps[@]} $(modinfo "$mod" | sed -n 's/,/ /g; s/^depends: *//p'))
+-	done
++        for ((i=0; i < ${#kernelver[@]}; i++)); do
++            set_module_suffix "${kernelver[$i]}"
++            mod="$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix"
++            deps=(${deps[@]} $(modinfo "$mod" | sed -n 's/,/ /g; s/^depends: *//p'))
++        done
+     done
+ 
+-    # prune internally satisfied dependencies
++    # Prune internally satisfied dependencies
+ 
+     for ((i=0; i < ${#deps[@]}; i++)); do
+-	for mod in ${dest_module_name[@]}; do
+-	    [[ ${deps[i]} = $mod ]] && deps[i]=
+-	done
++        for mod in ${dest_module_name[@]}; do
++            [[ ${deps[i]} = $mod ]] && deps[i]=
++        done
+     done
+ 
+     for dep in "${deps[@]}"; do
+-	echo $dep
++        echo $dep
+     done | sort -u
+ }
+ 
+ make_suse_driver_disk()
+ {
+     [[ $release ]] || die 3 \
+-	$"Invalid number of parameters passed for suse/UnitedLinux driver disk." \
+-	$"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver>" \
+-	$"                    -r <release-number>"
++        $"Invalid number of parameters passed for suse/UnitedLinux driver disk." \
++        $"Usage: mkdriverdisk <module>/<module-version> -d <distro> -k <kernelver>" \
++        $"                    -r <release-number>"
+ 
+     local driver_disk_dir=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+     local suffix="$(driver_disk_suffix)"
+@@ -2242,95 +2325,96 @@ make_suse_driver_disk()
+     
+     local count
+     for ((count=0; count < ${#dest_module_name[@]}; count++)); do
+-	local i
+-	local topdir=$(printf "%02d" $(($count+1+offset)))
+-	for ((i=0; i < ${#kernelver[@]}; i++)); do
+-	    set_module_suffix "${kernelver[$i]}"
+-
+-	    if ! [[ -e $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix ]]; then
+-		rm -rf $temp_dir_name
+-		die 5 \
+-		    $"Cannot find module ${dest_module_name[$count]}$module_suffix for kernel ${kernelver[$i]} (${arch[$i]})." \
+-		    $"Module/version must be in built state before making a driver disk."
+-	    fi
+-	    # FIXME: add check for KMP binary RPMs to include in the driver disk
+-	    suse_arch=${arch[$i]}
+-	    case $suse_arch in
+-		i?86) suse_arch=i386;;
+-	    esac
+-
+-	    echo "Marking ${kernelver[$i]}/${arch[$i]}/modules/${dest_module_name[$count]}$module_suffix..."
+-	    mkdir -p "$driver_disk_dir/$topdir/$suse_arch-$release/install/lib/modules/${kernelver[$i]}${dest_module_location[$count]}"
+-	    cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix" "$driver_disk_dir/$topdir/$suse_arch-$release/install/lib/modules/${kernelver[$i]}${dest_module_location[$count]}/"
+-
+-	    case ${kernelver[$i]} in
+-		*-default)
+-		    mkdir -p "$driver_disk_dir/$topdir/$suse_arch-$release/modules/"
+-		    cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix" "$driver_disk_dir/$topdir/$suse_arch-$release/modules/"
+-		    ;;
+-	    esac
+-
+-	    # create directory for dependency information
+-	    [[ ${deps[@]} ]] && mkdir -p "$driver_disk_dir/01/linux/$distro/$suse_arch-$release/modules"
+-
+-	done
+-
+-	# ---
+-	for arch_release in $(find $driver_disk_dir/$topdir -maxdepth 1 -mindepth 1 -type d | sed "s#$driver_disk_dir\/$topdir\/##"); do
+-	    cd "$driver_disk_dir/$topdir/$arch_release/install/"
+-	    invoke_command "tar cvzf update.tar.gz lib/" "making update.tar.gz for $arch_release" background
+-	    cd - >/dev/null
+-
+-	    mkdir -p "$driver_disk_dir/$topdir/linux/$distro/$arch_release/install"
+-	    mkdir -p "$driver_disk_dir/$topdir/linux/$distro/$arch_release/modules"
+-
+-	    echo $"  copying update.tar.gz for $arch_release to disk image..."
+-	    cp -f "$driver_disk_dir/$topdir/$arch_release/install/update.tar.gz" "$driver_disk_dir/$topdir/linux/$distro/$arch_release/install/"
+-
+-	    postkernels=
+-	    archtest=${arch_release/-*}
+-	    for ((i=0; i<${#kernelver[@]}; i++)); do
+-		[[ ${arch[$i]} = ${archtest} ]] && \
+-		    postkernels="${postkernels} ${kernelver[$i]}"
+-	    done
+-
+-	    if [[ ${postkernels} ]]; then
+-		dstfile="$driver_disk_dir/$topdir/linux/$distro/$arch_release/install/update.post"
+-		echo $"  creating update.post for $arch_release..."
+-		(cat << EOF
++    local i
++    local topdir=$(printf "%02d" $(($count+1+offset)))
++    for ((i=0; i < ${#kernelver[@]}; i++)); do
++        set_module_suffix "${kernelver[$i]}"
++
++        if ! [[ -e $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix ]]; then
++            rm -rf $temp_dir_name
++            die 5 \
++                $"Cannot find module ${dest_module_name[$count]}$module_suffix for kernel ${kernelver[$i]} (${arch[$i]})." \
++                $"Module/version must be in built state before making a driver disk."
++        fi
++        # FIXME: add check for KMP binary RPMs to include in the driver disk
++        suse_arch=${arch[$i]}
++        case $suse_arch in
++            i?86)
++                suse_arch=i386
++                ;;
++        esac
++
++        echo "Marking ${kernelver[$i]}/${arch[$i]}/modules/${dest_module_name[$count]}$module_suffix..."
++        mkdir -p "$driver_disk_dir/$topdir/$suse_arch-$release/install/lib/modules/${kernelver[$i]}${dest_module_location[$count]}"
++        cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix" "$driver_disk_dir/$topdir/$suse_arch-$release/install/lib/modules/${kernelver[$i]}${dest_module_location[$count]}/"
++
++        case ${kernelver[$i]} in
++        *-default)
++            mkdir -p "$driver_disk_dir/$topdir/$suse_arch-$release/modules/"
++            cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/${dest_module_name[$count]}$module_suffix" "$driver_disk_dir/$topdir/$suse_arch-$release/modules/"
++            ;;
++        esac
++
++        # Create directory for dependency information
++        [[ ${deps[@]} ]] && mkdir -p "$driver_disk_dir/01/linux/$distro/$suse_arch-$release/modules"
++
++    done
++
++    # ---
++    for arch_release in $(find $driver_disk_dir/$topdir -maxdepth 1 -mindepth 1 -type d | sed "s#$driver_disk_dir\/$topdir\/##"); do
++        cd "$driver_disk_dir/$topdir/$arch_release/install/"
++        invoke_command "tar cvzf update.tar.gz lib/" "making update.tar.gz for $arch_release" background
++        cd - >/dev/null
++
++        mkdir -p "$driver_disk_dir/$topdir/linux/$distro/$arch_release/install"
++        mkdir -p "$driver_disk_dir/$topdir/linux/$distro/$arch_release/modules"
++
++        echo $"  copying update.tar.gz for $arch_release to disk image..."
++        cp -f "$driver_disk_dir/$topdir/$arch_release/install/update.tar.gz" "$driver_disk_dir/$topdir/linux/$distro/$arch_release/install/"
++
++        postkernels=
++        archtest=${arch_release/-*}
++        for ((i=0; i<${#kernelver[@]}; i++)); do
++            [[ ${arch[$i]} = ${archtest} ]] && postkernels="${postkernels} ${kernelver[$i]}"
++        done
++
++        if [[ ${postkernels} ]]; then
++            dstfile="$driver_disk_dir/$topdir/linux/$distro/$arch_release/install/update.post"
++            echo $"  creating update.post for $arch_release..."
++            (cat << EOF
+ #!/bin/sh
+ 
+ kernlist="${postkernels}"
+ 
+ for kernel in \${kernlist}; do
+     if [ -e /boot/System.map-\${kernel} ]; then
+-	depmod -a -F /boot/System.map-\${kernel} \${kernel}
++    depmod -a -F /boot/System.map-\${kernel} \${kernel}
+     fi
+ done
+ 
+ EOF
+-		) > ${dstfile}
+-		chmod a+x ${dstfile}
+-	    fi
+-
+-	    if [[ -d $driver_disk_dir/$topdir/$arch_release/modules/ ]]; then
+-		echo $"  copying kernel modules for installation kernel to disk image..."
+-		cp -f $driver_disk_dir/$topdir/$arch_release/modules/* $driver_disk_dir/$topdir/linux/$distro/$arch_release/modules/ 2>/dev/null
+-	    else
+-		warn $"No kernel modules found for -default kernel."
+-	    fi
+-
+-	    rm -fr "$driver_disk_dir/$topdir/$arch_release"
+-	done
++            ) > ${dstfile}
++            chmod a+x ${dstfile}
++            fi
++
++            if [[ -d $driver_disk_dir/$topdir/$arch_release/modules/ ]]; then
++                echo $"  copying kernel modules for installation kernel to disk image..."
++                cp -f $driver_disk_dir/$topdir/$arch_release/modules/* $driver_disk_dir/$topdir/linux/$distro/$arch_release/modules/ 2>/dev/null
++            else
++                warn $"No kernel modules found for -default kernel."
++            fi
++
++            rm -fr "$driver_disk_dir/$topdir/$arch_release"
++        done
+     done
+ 
+     local dir
+     if [[ ${deps[@]} ]]; then
+-	for dir in "$driver_disk_dir/01/linux/$distro/"*"/modules"; do
+-	    for dep in "${deps[@]}"; do
+-		echo $dep >> "$dir/module.order"
+-	    done
+-	done
++        for dir in "$driver_disk_dir/01/linux/$distro/"*"/modules"; do
++            for dep in "${deps[@]}"; do
++                echo $dep >> "$dir/module.order"
++            done
++        done
+     fi
+ 
+     # FIXME: add suse-equivalent rpms/ directory, copy in KMP RPMs, run createrepo --pretty
+@@ -2356,33 +2440,33 @@ make_ubuntu_driver_disk()
+ 
+     local tempdir=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+ 
+-   # Check that the dh_make command is present
+-   if ! which dpkg-deb >/dev/null 2>&1 ; then
+-	die 1 $"dpkg-deb not present." \
+-	    $"Install the dpkg-dev package."
+-   fi
+-
+-   local i
+-   for ((i=0; i < ${#kernelver[@]}; i++)); do
+-      set_module_suffix "${kernelver[$i]}"
+-      # Driver disks only recognize i386 as package arch
+-      local karch=${arch[$i]/i?86/i386}
+-      local kvers=${kernelver[$i]/-/_}; kvers=${kvers%%_*}
+-       # ubuntu-drivers/<kver>/*_<debarch>.deb
+-      local dd_prefix="ubuntu-drivers/$kvers"
+-      local dd_suffix="_${karch}.deb"
+-      maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}" || {
+-	  rm -rf "$tempdir"
+-	  die 5 $"Unable to build $module/$module_version for Ubuntu driver disk."
+-      }
+-      mkdir -p "$tempdir/$dd_prefix"
+-      local deb_dir="$tempdir/$dd_prefix/debian"
+-      local deb_lib_dir="$deb_dir/lib/modules/${kernelver[$i]}/updates/dkms"
+-      mkdir -p "$deb_lib_dir"
+-      cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/"*"$module_suffix" "$deb_lib_dir"
+-      pushd "$deb_dir" > /dev/null 2>&1
+-      mkdir DEBIAN
+-      cat > DEBIAN/control <<EOF
++    # Check that the dh_make command is present
++    if ! which dpkg-deb >/dev/null 2>&1 ; then
++        die 1 $"dpkg-deb not present." \
++            $"Install the dpkg-dev package."
++    fi
++
++    local i
++    for ((i=0; i < ${#kernelver[@]}; i++)); do
++        set_module_suffix "${kernelver[$i]}"
++        # Driver disks only recognize i386 as package arch
++        local karch=${arch[$i]/i?86/i386}
++        local kvers=${kernelver[$i]/-/_}; kvers=${kvers%%_*}
++        # ubuntu-drivers/<kver>/*_<debarch>.deb
++        local dd_prefix="ubuntu-drivers/$kvers"
++        local dd_suffix="_${karch}.deb"
++        maybe_build_module "$module" "$module_version" "${kernelver[$i]}" "${arch[$i]}" || {
++            rm -rf "$tempdir"
++            die 5 $"Unable to build $module/$module_version for Ubuntu driver disk."
++        }
++        mkdir -p "$tempdir/$dd_prefix"
++        local deb_dir="$tempdir/$dd_prefix/debian"
++        local deb_lib_dir="$deb_dir/lib/modules/${kernelver[$i]}/updates/dkms"
++        mkdir -p "$deb_lib_dir"
++        cp "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}/module/"*"$module_suffix" "$deb_lib_dir"
++        pushd "$deb_dir" > /dev/null 2>&1
++        mkdir DEBIAN
++        cat > DEBIAN/control <<EOF
+ Package: ${module}-modules-${kernelver[$i]}
+ Version: ${module_version}-1
+ Section: misc
+@@ -2434,10 +2518,10 @@ make_tarball()
+ 
+     # Check for dkms_dbversion
+     if ! [[ -e $dkms_tree/dkms_dbversion ]]; then
+-	echo $"" >&2
+-	echo $"Could not find the file $dkms_tree/dkms_dbversion." >&2
+-	echo $"Creating w/ default contents." >&2
+-	echo "2.0.0" > $dkms_tree/dkms_dbversion
++        echo $"" >&2
++        echo $"Could not find the file $dkms_tree/dkms_dbversion." >&2
++        echo $"Creating w/ default contents." >&2
++        echo "2.0.0" > $dkms_tree/dkms_dbversion
+     fi
+ 
+     # Read the conf file
+@@ -2447,26 +2531,26 @@ make_tarball()
+     mkdir -p $temp_dir_name/dkms_main_tree
+ 
+     if [[ $source_only ]]; then
+-	kernel_version_list="source-only"
++    kernel_version_list="source-only"
+     else
+-	local i
+-	for ((i=0; i<${#kernelver[@]}; i++)); do
+-	    if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
+-		rm -rf "$temp_dir_name" 2>/dev/null
+-		die 6  $"No modules built for ${kernelver[$i]} (${arch[$i]})." \
+-		    $"Modules must already be in the built state before using mktarball."
+-	    fi
+-
+-	    set_module_suffix "${kernelver[$i]}"
+-
+-	    echo "Marking modules for ${kernelver[$i]} (${arch[$i]}) for archiving..."
+-	    if [[ ! $kernel_version_list ]]; then
+-		kernel_version_list="kernel${kernelver[$i]}-${arch[$i]}"
+-	    else
+-		kernel_version_list="${kernel_version_list}-kernel${kernelver[$i]}-${arch[$i]}"
+-	    fi
+-	    mkdir -p "$temp_dir_name/dkms_main_tree/${kernelver[$i]}/${arch[$i]}"
+-	    cp -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}" "$temp_dir_name/dkms_main_tree/${kernelver[$i]}"
++    local i
++    for ((i=0; i<${#kernelver[@]}; i++)); do
++        if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
++            rm -rf "$temp_dir_name" 2>/dev/null
++            die 6  $"No modules built for ${kernelver[$i]} (${arch[$i]})." \
++                $"Modules must already be in the built state before using mktarball."
++        fi
++
++        set_module_suffix "${kernelver[$i]}"
++
++        echo "Marking modules for ${kernelver[$i]} (${arch[$i]}) for archiving..."
++        if [[ ! $kernel_version_list ]]; then
++            kernel_version_list="kernel${kernelver[$i]}-${arch[$i]}"
++        else
++            kernel_version_list="${kernel_version_list}-kernel${kernelver[$i]}-${arch[$i]}"
++        fi
++        mkdir -p "$temp_dir_name/dkms_main_tree/${kernelver[$i]}/${arch[$i]}"
++        cp -rf "$dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]}" "$temp_dir_name/dkms_main_tree/${kernelver[$i]}"
+     done
+     fi
+ 
+@@ -2475,22 +2559,22 @@ make_tarball()
+ 
+     # Copy the source_tree or make special binaries-only structure
+     if [[ $binaries_only ]]; then
+-	echo $""
+-	echo $"Creating tarball structure to specifically accomodate binaries."
+-	mkdir $temp_dir_name/dkms_binaries_only
+-	echo "$module" > $temp_dir_name/dkms_binaries_only/PACKAGE_NAME
+-	echo "$module_version" > $temp_dir_name/dkms_binaries_only/PACKAGE_VERSION
+-	[[ ! $conf ]] && conf="$dkms_tree/$module/$module_version/source/dkms.conf"
+-	cp -f $conf $temp_dir_name/dkms_binaries_only/ 2>/dev/null
++        echo $""
++        echo $"Creating tarball structure to specifically accomodate binaries."
++        mkdir $temp_dir_name/dkms_binaries_only
++        echo "$module" > $temp_dir_name/dkms_binaries_only/PACKAGE_NAME
++        echo "$module_version" > $temp_dir_name/dkms_binaries_only/PACKAGE_VERSION
++        [[ ! $conf ]] && conf="$dkms_tree/$module/$module_version/source/dkms.conf"
++        cp -f $conf $temp_dir_name/dkms_binaries_only/ 2>/dev/null
+     else
+-	echo $""
+-	echo $"Marking $dkms_tree/$module/$module_version/source for archiving..."
+-	mkdir -p $temp_dir_name/dkms_source_tree
+-	cp -rf $dkms_tree/$module/$module_version/source/* $temp_dir_name/dkms_source_tree
++        echo $""
++        echo $"Marking $dkms_tree/$module/$module_version/source for archiving..."
++        mkdir -p $temp_dir_name/dkms_source_tree
++        cp -rf $dkms_tree/$module/$module_version/source/* $temp_dir_name/dkms_source_tree
+     fi
+ 
+     if (( $(echo $kernel_version_list | wc -m | awk {'print $1'}) > 200 )); then
+-	kernel_version_list="manykernels"
++        kernel_version_list="manykernels"
+     fi
+ 
+     local tarball_name="$module-$module_version-$kernel_version_list.dkms.tar.gz"
+@@ -2498,16 +2582,16 @@ make_tarball()
+ 
+     # Die if we will not be able to create the tarball due to permissions.
+     if [[ $archive_location ]]; then
+-	tarball_name="${archive_location##*/}"
++        tarball_name="${archive_location##*/}"
+         if [[ ${archive_location%/*} != $archive_location && \
+             -d ${archive_location%/*} && -w ${archive_location%/*} ]]; then
+             tarball_dest="${archive_location%/*}"
+         elif [[ ${archive_location%/*} != $archive_location ]] && ! mkdir -p $tarball_dest; then
+-	    die 9 $"Will not be able to create $archive_location due to a permissions problem."
+-	fi
++            die 9 $"Will not be able to create $archive_location due to a permissions problem."
++        fi
+     fi
+     if [ ! -d $tarball_dest ]; then
+-	mkdir -p "$dkms_tree/$module/$module_version/tarball/"
++        mkdir -p "$dkms_tree/$module/$module_version/tarball/"
+     fi
+ 
+     echo $""
+@@ -2519,19 +2603,25 @@ make_tarball()
+     # Make the tarball
+     cd $temp_dir_name
+     if tar -cf $temp_dir_name/$tarball_name ./* 2>/dev/null; then
+-	cd - >/dev/null
+-	echo $""
+-	mv -f "$temp_dir_name/$tarball_name" "$tarball_dest/$tarball_name"
+-	rm -rf $temp_dir_name
++        cd - >/dev/null
++        echo $""
++        mv -f "$temp_dir_name/$tarball_name" "$tarball_dest/$tarball_name"
++        rm -rf $temp_dir_name
+     else
+-	cd - >/dev/null
+-	rm -rf $temp_dir_name
+-	die 6 $"Failed to make tarball."
++        cd - >/dev/null
++        rm -rf $temp_dir_name
++        die 6 $"Failed to make tarball."
+     fi
+     case $tarball_ext in
+-	gz) gzip --force -9 "$tarball_dest/$tarball_name";;
+-	bz2) bzip2 --force -9 "$tarball_dest/$tarball_name";;
+-	xz) xz --force -9 "$tarball_dest/$tarball_name";;
++        gz)
++            gzip --force -9 "$tarball_dest/$tarball_name"
++            ;;
++        bz2)
++            bzip2 --force -9 "$tarball_dest/$tarball_name"
++            ;;
++        xz)
++            xz --force -9 "$tarball_dest/$tarball_name"
++            ;;
+     esac
+     echo $""
+     echo $"DKMS: mktarball completed."
+@@ -2551,7 +2641,7 @@ load_tarball()
+ {
+     # Error out if $archive_location does not exist
+     if [[ ! -e $archive_location ]]; then
+-	die 2 $"$archive_location does not exist."
++        die 2 $"$archive_location does not exist."
+     fi
+ 
+     # If it is an .rpm file. install it with rpm, run an autoinstall, and then exit.
+@@ -2569,13 +2659,19 @@ load_tarball()
+     # Note that this does not depend on the extensions being correct.
+     local tar_options=""
+     for xpand in gzip bzip xz; do
+-	$xpand -t $archive_location 2>/dev/null || continue
+-	case $xpand in
+-	    gzip) tar_options=z;;
+-	    bzip2) tar_options=j;;
+-	    xz) tar_options=J;;
+-	esac
+-	break
++        $xpand -t $archive_location 2>/dev/null || continue
++        case $xpand in
++            gzip)
++                tar_options=z
++                ;;
++            bzip2)
++                tar_options=j
++                ;;
++            xz)
++                tar_options=J
++                ;;
++        esac
++        break
+     done
+ 
+     # Untar it into $tmp_location
+@@ -2584,16 +2680,16 @@ load_tarball()
+     tar -${tar_options}xf $archive_location -C $temp_dir_name
+ 
+     if [[ ! $temp_dir_name/dkms_main_tree ]]; then
+-	# Tarball was not generated from mktarball.
+-	# Just find the dkms.conf file and load the source.
+-	conf=$(find $temp_dir_name/ -name dkms.conf 2>/dev/null | head -n 1)
+-	if [[ ! $conf ]]; then
+-	    rm -rf $temp_dir_name
+-	    die 3 $"Tarball does not appear to be a correctly formed" \
+-		$"DKMS archive. No dkms.conf found within it."
+-	fi
+-	add_source_tree "${conf%dkms.conf}"
+-	return
++    # Tarball was not generated from mktarball.
++    # Just find the dkms.conf file and load the source.
++    conf=$(find $temp_dir_name/ -name dkms.conf 2>/dev/null | head -n 1)
++    if [[ ! $conf ]]; then
++        rm -rf $temp_dir_name
++        die 3 $"Tarball does not appear to be a correctly formed" \
++            $"DKMS archive. No dkms.conf found within it."
++    fi
++    add_source_tree "${conf%dkms.conf}"
++    return
+     fi
+ 
+     # Check that dkms_dbversion is not a future version
+@@ -2602,76 +2698,78 @@ load_tarball()
+     # the structure of the tarball.
+     db_from_tarball=$(cat $temp_dir_name/dkms_main_tree/dkms_dbversion 2>/dev/null)
+     db_from_dkms=$(cat $dkms_tree/dkms_dbversion 2>/dev/null)
+-    if [[ $db_from_tarball && $db_from_dkms && \
+-	$(VER "$db_from_tarball") > $(VER "$db_from_dkms") ]]; then
+-	die 9 \
+-	    $"The tarball you are trying to load indicates it is database version" \
+-	    $"$db_from_tarball.  This version of DKMS only supports $db_from_dkms or lower."
++    if [[ $db_from_tarball && $db_from_dkms && $(VER "$db_from_tarball") > $(VER "$db_from_dkms") ]]; then
++        die 9 \
++            $"The tarball you are trying to load indicates it is database version" \
++            $"$db_from_tarball.  This version of DKMS only supports $db_from_dkms or lower."
+     fi
+ 
+     # Make sure its a sane tarball. Sane ones will have one of the two
+     # directories we test for.
+     for loc in dkms_source_tree dkms_binaries_only ''; do
+-	if [[ ! $loc ]]; then
+-	    die 7 $"No valid dkms.conf in dkms_source_tree or dkms_binaries_only." \
+-		$"$archive_location is not a valid DKMS tarball."
+-	fi
+-	local conf="$temp_dir_name/$loc/dkms.conf"
+-	[[ -f $conf ]] || continue
+-	if ! get_pkginfo_from_conf "$conf"; then
+-	    echo >&2
+-	    echo $"Malformed dkms.conf, refusing to load." >&2
+-	    continue
+-	fi
+-	if is_module_added "$PACKAGE_NAME" "$PACKAGE_VERSION" && \
+-	    [[ ! $force ]]; then
+-	    die 8  $"$PACKAGE_NAME-$PACKAGE_VERSION is already added!" \
+-		$"Aborting."
+-	fi
+-	module="$PACKAGE_NAME"; module_version="$PACKAGE_VERSION"
+-	echo $""
+-	echo $"Loading tarball for $module-$module_version"
+-	case $loc in
+-	    dkms_source_tree)
+-		add_source_tree "$temp_dir_name/dkms_source_tree";;
+-	    dkms_binaries_only)
+-		#if there is a source tree on the system already, don't build a binaries stub
+-		if [[ ! -d $source_tree/$module-$module_version ]]; then
+-			echo $"Creating $dkms_tree/$module/$module_version/source"
+-			mkdir -p "$dkms_tree/$module/$module_version/source"
+-			echo $"Copying dkms.conf to $dkms_tree/$module/$module_version/source..."
+-			cp -rf "$temp_dir_name/dkms_binaries_only/dkms.conf" "$dkms_tree/$module/$module_version/source"
+-		fi;;
+-	    *)  die 8 $"$FUNCNAME:$LINENO: Cannot happen." \
+-		$"Report this error to dkms-devel at dell.com";;
+-	esac
+-	break
++    if [[ ! $loc ]]; then
++        die 7 $"No valid dkms.conf in dkms_source_tree or dkms_binaries_only." \
++            $"$archive_location is not a valid DKMS tarball."
++    fi
++    local conf="$temp_dir_name/$loc/dkms.conf"
++    [[ -f $conf ]] || continue
++    if ! get_pkginfo_from_conf "$conf"; then
++        echo >&2
++        echo $"Malformed dkms.conf, refusing to load." >&2
++        continue
++    fi
++    if is_module_added "$PACKAGE_NAME" "$PACKAGE_VERSION" && \
++        [[ ! $force ]]; then
++        die 8  $"$PACKAGE_NAME-$PACKAGE_VERSION is already added!" \
++        $"Aborting."
++    fi
++    module="$PACKAGE_NAME"; module_version="$PACKAGE_VERSION"
++    echo $""
++    echo $"Loading tarball for $module-$module_version"
++    case $loc in
++        dkms_source_tree)
++            add_source_tree "$temp_dir_name/dkms_source_tree"
++            ;;
++        dkms_binaries_only)
++            #if there is a source tree on the system already, don't build a binaries stub
++            if [[ ! -d $source_tree/$module-$module_version ]]; then
++                echo $"Creating $dkms_tree/$module/$module_version/source"
++                mkdir -p "$dkms_tree/$module/$module_version/source"
++                echo $"Copying dkms.conf to $dkms_tree/$module/$module_version/source..."
++                cp -rf "$temp_dir_name/dkms_binaries_only/dkms.conf" "$dkms_tree/$module/$module_version/source"
++            fi
++            ;;
++        *)
++            die 8 $"$FUNCNAME:$LINENO: Cannot happen." \
++                $"Report this error to dkms-devel at dell.com";;
++    esac
++    break
+     done
+ 
+-    # at this point, the source has been copied to the appropriate location
++    # At this point, the source has been copied to the appropriate location
+     # and registered with dkms, or a binary-only config has been noted.
+     # Now, add any included precompiled modules.
+ 
+     # Is tarball from before DKMS 2.0 (prior to arch support)
+     if [[ ! -e $temp_dir_name/dkms_main_tree/dkms_dbversion ]]; then
+-	[[ $loc = dkms_binaries_only ]] && rm -rf "$dkms_tree/$module/$module_version/source"
+-	die 10 $" This tarball was created with dkms < 2.0 and contains" \
+-	    $"no arch info. DKMS is refusing to install precompiled modules."
++        [[ $loc = dkms_binaries_only ]] && rm -rf "$dkms_tree/$module/$module_version/source"
++        die 10 $" This tarball was created with dkms < 2.0 and contains" \
++            $"no arch info. DKMS is refusing to install precompiled modules."
+     fi
+ 
+     # Load precompiled modules.
+     for directory in "$temp_dir_name/dkms_main_tree"/*/*; do
+-	[[ -d $directory ]] || continue
+-	kernel_arch_to_load=${directory/*dkms_main_tree\/}
+-	dkms_dir_location="$dkms_tree/$module/$module_version/$kernel_arch_to_load"
+-	if [[ -d $dkms_dir_location && ! $force ]]; then
+-	    warn $"$dkms_dir_location already exists.  Skipping..."
+-	else
+-	    echo $"Loading $dkms_dir_location..."
+-	    rm -rf $dkms_dir_location
+-	    mkdir -p $dkms_dir_location
+-	    cp -rf $directory/* $dkms_dir_location/
+-	fi
++        [[ -d $directory ]] || continue
++        kernel_arch_to_load=${directory/*dkms_main_tree\/}
++        dkms_dir_location="$dkms_tree/$module/$module_version/$kernel_arch_to_load"
++        if [[ -d $dkms_dir_location && ! $force ]]; then
++            warn $"$dkms_dir_location already exists.  Skipping..."
++        else
++            echo $"Loading $dkms_dir_location..."
++            rm -rf $dkms_dir_location
++            mkdir -p $dkms_dir_location
++            cp -rf $directory/* $dkms_dir_location/
++        fi
+     done
+ 
+     echo $""
+@@ -2685,14 +2783,14 @@ run_match()
+ 
+     # Error if $template_kernel is unset
+     if [[ ! $template_kernel ]]; then
+-	die 1 $"Invalid number of parameters passed." \
+-	    $"Usage: match --templatekernel=<kernel-version> -k <kernel-version>" \
+-	    $"   or: match --templatekernel=<kernel-version> -k <kernel-version> <module>"
++        die 1 $"Invalid number of parameters passed." \
++            $"Usage: match --templatekernel=<kernel-version> -k <kernel-version>" \
++            $"   or: match --templatekernel=<kernel-version> -k <kernel-version> <module>"
+     fi
+ 
+     # Error out if $template_kernel = $kernel_version
+     if [[ $template_kernel = $kernelver ]]; then
+-	die 2 $"The templatekernel and the specified kernel version are the same."
++        die 2 $"The templatekernel and the specified kernel version are the same."
+     fi
+ 
+     # Read in the status of template_kernel
+@@ -2700,11 +2798,11 @@ run_match()
+ 
+     # If $module is set, grep the status only for that module
+     if [[ $module ]]; then
+-	# Make sure that its installed in the first place
+-	if ! [[ -d $dkms_tree/$module/ ]]; then
+-	    die 3 $"The module: $module is not located in the DKMS tree."
+-	fi
+-	template_kernel_status=$(echo "$template_kernel_status" | grep "^$module,")
++        # Make sure that its installed in the first place
++        if ! [[ -d $dkms_tree/$module/ ]]; then
++            die 3 $"The module: $module is not located in the DKMS tree."
++        fi
++        template_kernel_status=$(echo "$template_kernel_status" | grep "^$module,")
+     fi
+ 
+     echo $""
+@@ -2713,56 +2811,53 @@ run_match()
+ 
+     # Prepare the kernel just once but only if there is actual work to do
+     if [[ ! $template_kernel_status ]]; then
+-	echo $""
+-	echo $"There is nothing to be done for this match."
++        echo $""
++        echo $"There is nothing to be done for this match."
+     else
+-	prepare_kernel "$kernelver" "$arch"
+-
+-	# Iterate over the kernel_status and match kernel to the template_kernel
+-	while read template_line; do
+-	    template_module=`echo "$template_line" | awk {'print $1'} | sed 's/,$//'`
+-	    template_version=`echo "$template_line" | awk {'print $2'} | sed 's/,$//'`
+-
+-	    # Print out a match header
+-	    echo $""
+-	    echo $"---- Match Beginning ----"
+-	    echo $"Module:  $template_module"
+-	    echo $"Version: $template_version"
+-	    echo $"-------------------------"
+-
+-	    # Figure out what to do from here
+-	    if show_status "$template_module" "$template_version" "$kernelver" "$arch" 2>/dev/null | grep -q ": installed"; then
+-		echo $""
+-		echo $"This module/version combo is already installed.  Nothing to be done."
+-	    elif show_status "$template_module" "$template_version" "$kernelver" "$arch" 2>/dev/null | grep -q ": built"; then
+-		echo $""
+-		echo $"This module/version combo is built.  Installing it:"
+-		module="$template_module"
+-		module_version="$template_version"
+-		install_module
+-	    else
+-		echo $""
+-		echo $"Building & Installing this module/version:"
+-		module="$template_module"
+-		module_version="$template_version"
+-		build_module
+-		install_module
+-	    fi
+-	done < <(echo "$template_kernel_status")
+-
+-	# Clean up the kernel tree
+-	if [[ ! ( $(VER $kernelver) < $(VER 2.6.6) ) && \
+-	    -d "$kernel_source_dir" && \
+-	    ! -h "$kernel_source_dir" && \
+-	    -z "$ksourcedir_fromcli" ]]; then
+-	    echo $"Kernel cleanup unnecessary for this kernel.  Skipping..."
+-	elif [[ ! $no_clean_kernel ]]; then
+-	    cd "$kernel_source_dir"
+-	    [[ $kerneldoth_contents ]] || invoke_command "make mrproper" "cleaning kernel tree (make mrproper)" background
+-	    [[ $config_contents ]] && echo "$config_contents" > .config
+-	    [[ $kerneldoth_contents ]] && echo "$kerneldoth_contents" > /boot/kernel.h
+-	    cd - >/dev/null
+-	fi
++    prepare_kernel "$kernelver" "$arch"
++
++    # Iterate over the kernel_status and match kernel to the template_kernel
++    while read template_line; do
++        template_module=`echo "$template_line" | awk {'print $1'} | sed 's/,$//'`
++        template_version=`echo "$template_line" | awk {'print $2'} | sed 's/,$//'`
++
++        # Print out a match header
++        echo $""
++        echo $"---- Match Beginning ----"
++        echo $"Module:  $template_module"
++        echo $"Version: $template_version"
++        echo $"-------------------------"
++
++        # Figure out what to do from here
++        if show_status "$template_module" "$template_version" "$kernelver" "$arch" 2>/dev/null | grep -q ": installed"; then
++            echo $""
++            echo $"This module/version combo is already installed.  Nothing to be done."
++        elif show_status "$template_module" "$template_version" "$kernelver" "$arch" 2>/dev/null | grep -q ": built"; then
++            echo $""
++            echo $"This module/version combo is built.  Installing it:"
++            module="$template_module"
++            module_version="$template_version"
++            install_module
++        else
++        echo $""
++        echo $"Building & Installing this module/version:"
++        module="$template_module"
++        module_version="$template_version"
++        build_module
++        install_module
++        fi
++    done < <(echo "$template_kernel_status")
++
++    # Clean up the kernel tree
++    if [[ ! ( $(VER $kernelver) < $(VER 2.6.6) ) && -d "$kernel_source_dir" && ! -h "$kernel_source_dir" && -z "$ksourcedir_fromcli" ]]; then
++        echo $"Kernel cleanup unnecessary for this kernel.  Skipping..."
++    elif [[ ! $no_clean_kernel ]]; then
++        cd "$kernel_source_dir"
++        [[ $kerneldoth_contents ]] || invoke_command "make mrproper" "cleaning kernel tree (make mrproper)" background
++        [[ $config_contents ]] && echo "$config_contents" > .config
++        [[ $kerneldoth_contents ]] && echo "$kerneldoth_contents" > /boot/kernel.h
++        cd - >/dev/null
++    fi
+     fi
+ 
+     # Done
+@@ -2776,8 +2871,8 @@ make_rpm()
+ 
+     # Check that the rpmbuild command is present
+     if ! which rpmbuild >/dev/null 2>&1 ; then
+-	die 1 $"rpmbuild not present." \
+-	    $"Install the rpm-build package."
++        die 1 $"rpmbuild not present." \
++            $"Install the rpm-build package."
+     fi
+ 
+     # Read the conf file
+@@ -2787,34 +2882,33 @@ make_rpm()
+ 
+     echo $""
+     local sp
+-    for sp in "$dkms_tree/$module/$module_version/source/$module-dkms-mkrpm.spec" \
+-	"/etc/dkms/template-dkms-mkrpm.spec"; do
+-	[[ -e $sp ]] || continue
+-	SPECFILE="$sp"
+-	break
++    for sp in "$dkms_tree/$module/$module_version/source/$module-dkms-mkrpm.spec" "/etc/dkms/template-dkms-mkrpm.spec"; do
++        [[ -e $sp ]] || continue
++        SPECFILE="$sp"
++        break
+     done
+     if [[ ! $SPECFILE ]]; then
+-	die 5 $"Cannot find $sp which is needed by" \
+-	    $"DKMS in order use mkrpm."
++        die 5 $"Cannot find $sp which is needed by" \
++            $"DKMS in order use mkrpm."
+     fi
+ 
+     # Run a dkms mktarball for use in the rpm
+     local mktarball_line
+     if [[ ! $source_only || $binaries_only ]]; then
+-	mktarball_line="--binaries-only"
+-	local i
+-	echo $""
+-	for ((i=0; i<${#kernelver[@]}; i++)); do
+-	    if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
+-	    die 5 $"You do not seem to have $module $module_version built for" \
+-		$"${kernelver[$i]} (${arch[$i]}).  All modules must be in" \
+-		$"the built state before you can use mkrpm."
+-	    fi
+-	    echo $"Marking ${kernelver[$i]} (${arch[$i]}) for RPM..."
+-	    mktarball_line="-k ${kernelver[$i]} -a ${arch[$i]} $mktarball_line"
+-	done
++        mktarball_line="--binaries-only"
++        local i
++        echo $""
++        for ((i=0; i<${#kernelver[@]}; i++)); do
++            if ! [[ -d $dkms_tree/$module/$module_version/${kernelver[$i]}/${arch[$i]} ]]; then
++                die 5 $"You do not seem to have $module $module_version built for" \
++                    $"${kernelver[$i]} (${arch[$i]}).  All modules must be in" \
++                    $"the built state before you can use mkrpm."
++            fi
++            echo $"Marking ${kernelver[$i]} (${arch[$i]}) for RPM..."
++            mktarball_line="-k ${kernelver[$i]} -a ${arch[$i]} $mktarball_line"
++        done
+     else
+-	mktarball_line="none"
++        mktarball_line="none"
+     fi
+ 
+     local temp_dir_name=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+@@ -2822,26 +2916,26 @@ make_rpm()
+     mkdir -p ${temp_dir_name}/{BUILD,RPMS,SRPMS,SPECS,SOURCES}
+     cp ${SPECFILE} ${temp_dir_name}/SPECS/dkms_mkrpm.spec
+ 
+-    #if using legacy mode, install common postinst
++    # If using legacy mode, install common postinst
+     if ((legacy_postinst != 0)); then
+-	invoke_command "cp '$PREFIX/usr/lib/dkms/common.postinst' '${temp_dir_name}/SOURCES'" "copying legacy postinstall template"
++        invoke_command "cp '$PREFIX/usr/lib/dkms/common.postinst' '${temp_dir_name}/SOURCES'" "copying legacy postinstall template"
+     fi
+ 
+-    #Copy in the source tree
++    # Copy in the source tree
+     if [[ ! $binaries_only ]]; then
+-	invoke_command "cp -Lpr '$dkms_tree/$module/$module_version/source' '${temp_dir_name}/SOURCES/$module-$module_version'" "Copying source tree"
++        invoke_command "cp -Lpr '$dkms_tree/$module/$module_version/source' '${temp_dir_name}/SOURCES/$module-$module_version'" "Copying source tree"
+     fi
+ 
+     if invoke_command "LC_ALL=C rpmbuild --define \"_topdir ${temp_dir_name}\" --define \"version $module_version\" --define \"module_name $module\" --define \"kernel_versions ${kernelver[*]}\" --define \"mktarball_line $mktarball_line\" --define \"__find_provides  /usr/lib/dkms/find-provides\" --define \"_use_internal_dependency_generator 0\" -ba ${temp_dir_name}/SPECS/dkms_mkrpm.spec > ${temp_dir_name}/rpmbuild.log 2>&1" "rpmbuild"; then
+-	mkdir -p ${rpm_basedir}
+-	cp -a ${temp_dir_name}/SRPMS/* ${temp_dir_name}/RPMS/*/* ${rpm_basedir}/
+-	echo $""
+-	cat ${temp_dir_name}/rpmbuild.log | grep ^Wrote | sed -e "s:${temp_dir_name}/:${rpm_basedir}/:" -e 's:SRPMS/::' -e 's:RPMS/.*/::'
+-	echo $""
+-	echo $"DKMS: mkrpm completed."
++        mkdir -p ${rpm_basedir}
++        cp -a ${temp_dir_name}/SRPMS/* ${temp_dir_name}/RPMS/*/* ${rpm_basedir}/
++        echo $""
++        cat ${temp_dir_name}/rpmbuild.log | grep ^Wrote | sed -e "s:${temp_dir_name}/:${rpm_basedir}/:" -e 's:SRPMS/::' -e 's:RPMS/.*/::'
++        echo $""
++        echo $"DKMS: mkrpm completed."
+     else
+-	cat ${temp_dir_name}/rpmbuild.log >&2
+-	die 7 $"There was a problem creating your rpm."
++        cat ${temp_dir_name}/rpmbuild.log >&2
++        die 7 $"There was a problem creating your rpm."
+     fi
+     rm -rf $temp_dir_name
+     trap > /dev/null 2>&1
+@@ -2852,9 +2946,9 @@ preproc_file()
+     local date_str="$(date -R)"
+     echo "modifying $1..."
+     sed -e "s/DEBIAN_PACKAGE/$debian_package/g" \
+-	-e "s/MODULE_NAME/$module/g" \
+-	-e "s/MODULE_VERSION/$module_version/g" \
+-	-e "s/DATE_STAMP/$date_str/" "$1" > "$1.dkms-pp"
++        -e "s/MODULE_NAME/$module/g" \
++        -e "s/MODULE_VERSION/$module_version/g" \
++        -e "s/DATE_STAMP/$date_str/" "$1" > "$1.dkms-pp"
+     mv "$1.dkms-pp" "$1"
+ }
+ 
+@@ -2864,37 +2958,43 @@ debian_install()
+     local getroot  tmpfile i
+     local -a packages=("$@")
+     for ((i=0; i < ${#packages[@]}; i++)); do
+-	dpkg-query -s "${packages[$i]}"| egrep -q '^Status:.* installed$' || continue
+-	unset package[$i]
++        dpkg-query -s "${packages[$i]}"| egrep -q '^Status:.* installed$' || continue
++        unset package[$i]
+     done
+     # if they are already installed, we are OK.
+     [[ ${package[@]} ]] || return
+     if ((UID != 0)); then
+-	# figure out how to get root
+-	for getroot in su-to-root gksudo kdesu sudo; do
+-	    which $getroot >/dev/null 2>&1 || continue
+-	    case $getroot in
+-		su-to-root) getroot="$getroot -c";;
+-		gksudo) [[ $DISPLAY ]] || continue
+-		    getroot="$getroot --description 'DKMS Debian package builder' ";;
+-		kdesu) [[ $DISPLAY ]] || continue;;
+-	    esac
+-	    break
+-	done
++        # figure out how to get root
++        for getroot in su-to-root gksudo kdesu sudo; do
++            which $getroot >/dev/null 2>&1 || continue
++            case $getroot in
++                su-to-root)
++                    getroot="$getroot -c"
++                    ;;
++                gksudo)
++                    [[ $DISPLAY ]] || continue
++                    getroot="$getroot --description 'DKMS Debian package builder' "
++                    ;;
++                kdesu)
++                    [[ $DISPLAY ]] || continue
++                    ;;
++            esac
++            break
++        done
+     fi
+     if [[ -x /usr/sbin/synaptic && $DISPLAY ]] && tmpfile=$(mktemp_or_die); then
+-	# Pretty GUI install.
+-	trap 'rm -f "$tmpfile"' EXIT
+-	for ((i=0; i=${#packages[@]}; i++)); do
+-	    [[ ${packages[$i]} ]] && echo "install ${packages[$i]}" >>$tmpfile
+-	done
+-	$getroot "sh -c '/usr/sbin/synaptic --set-selections --non-interactive --hide-main-window < $tmpfile'"
++        # Pretty GUI install.
++        trap 'rm -f "$tmpfile"' EXIT
++        for ((i=0; i=${#packages[@]}; i++)); do
++            [[ ${packages[$i]} ]] && echo "install ${packages[$i]}" >>$tmpfile
++        done
++        $getroot "sh -c '/usr/sbin/synaptic --set-selections --non-interactive --hide-main-window < $tmpfile'"
+     else
+-	$getroot apt-get -y install "${packages[@]}"
++        $getroot apt-get -y install "${packages[@]}"
+     fi
+     if (( $? != 0)); then
+-	die 4 $"Missing ${packages[@]}" \
+-	    $"and unable to install.  Please ask an admin to install for you."
++        die 4 $"Missing ${packages[@]}" \
++            $"and unable to install.  Please ask an admin to install for you."
+     fi
+ }
+ 
+@@ -2913,87 +3013,87 @@ make_debian()
+     read_conf_or_die "$kernelver" "$arch"
+     debian_install fakeroot dpkg-dev debhelper
+ 
+-    #skeleton to load templates from
++    # Skeleton to load templates from
+     local system_mk="$dkms_tree/$module/$module_version/source/$module-dkms-mk${create_type}"
+     local local_mk="/etc/dkms/template-dkms-mk${create_type}"
+     if [[ -e ${system_mk} ]]; then
+-	echo $"Using ${system_mk}"
+-	DEBDIR=${system_mk}
++        echo $"Using ${system_mk}"
++        DEBDIR=${system_mk}
+     elif [[ -e ${local_mk} ]]; then
+-	echo $"Using ${local_mk}"
+-	DEBDIR=${local_mk}
++        echo $"Using ${local_mk}"
++        DEBDIR=${local_mk}
+     else
+-	die 5 $"Cannot find ${local_mk} which is needed by" \
+-	    $"DKMS in order to use mk${create_type}."
++        die 5 $"Cannot find ${local_mk} which is needed by" \
++            $"DKMS in order to use mk${create_type}."
+     fi
+ 
+-    #prepare build directory and copy template
++    # Prepare build directory and copy template
+     local temp_dir=$(mktemp_or_die -d $tmp_location/dkms.XXXXXX)
+     trap "rm -rf $temp_dir; delete_temporary_trees" EXIT HUP TERM
+     local temp_dir_debian="$temp_dir/$debian_package-dkms-$module_version"
+     invoke_command "cp -ar '$DEBDIR/' '$temp_dir_debian'" "copying template"
+     pushd "$temp_dir_debian" > /dev/null 2>&1
+     for file in debian/*; do
+-	preproc_file "$file"
+-	chmod 755 "$file"
++        preproc_file "$file"
++        chmod 755 "$file"
+     done
+     popd > /dev/null 2>&1
+ 
+-     #if using legacy mode, install common postinst
++    # If using legacy mode, install common postinst
+     if ((legacy_postinst != 0)); then
+-	invoke_command "cp '$PREFIX/usr/lib/dkms/common.postinst' '$temp_dir_debian'" "copying legacy postinstall template"
++        invoke_command "cp '$PREFIX/usr/lib/dkms/common.postinst' '$temp_dir_debian'" "copying legacy postinstall template"
+     fi
+ 
+-    #Copy in the source tree
++    # Copy in the source tree
+     if [[ ! $binaries_only ]]; then
+-	invoke_command "cp -Lpr '$dkms_tree/$module/$module_version/source' '$temp_dir_debian/$module-$module_version'" "Copying source tree"
++        invoke_command "cp -Lpr '$dkms_tree/$module/$module_version/source' '$temp_dir_debian/$module-$module_version'" "Copying source tree"
+     fi
+ 
+-    #Only if we are shipping binary modules, make a .tgz for the deb
++    # Only if we are shipping binary modules, make a .tgz for the deb
+     local archive_location="$dkms_tree/$module/$module_version/tarball/$module-$module_version.dkms.tar.gz"
+     if [[ ! $source_only ]]; then
+-	binaries_only="binaries-only"
+-	invoke_command "make_tarball" "Gathering binaries"
+-	if [[ -f $archive_location ]]; then
+-	    invoke_command "cp '$archive_location' '$temp_dir_debian'" "Copying DKMS tarball into DKMS tree"
+-	else
+-	    die 12 $"Unable to find created tarball."
+-	fi
++        binaries_only="binaries-only"
++        invoke_command "make_tarball" "Gathering binaries"
++        if [[ -f $archive_location ]]; then
++            invoke_command "cp '$archive_location' '$temp_dir_debian'" "Copying DKMS tarball into DKMS tree"
++        else
++            die 12 $"Unable to find created tarball."
++        fi
+     fi
+ 
+-    #calculate destination directory
++    # Calculate destination directory
+     deb_basedir=$dkms_tree/$module/$module_version/${create_type}
+     mkdir -p ${deb_basedir} >/dev/null 2>&1
+ 
+-    #create deb
++    # Create deb
+     pushd "$temp_dir_debian" > /dev/null 2>&1
+     case "$create_type" in
+-	dsc)
+-	    invoke_command "dpkg-buildpackage -S -us -uc 1>/dev/null" "Building source package" || \
+-		die 7 $"There was a problem creating your ${create_type}."
+-	    echo $""
+-	    echo $"DKMS: mk${create_type} completed."
+-	    invoke_command "mv '$temp_dir/${debian_package}-dkms_${module_version}_source.changes' '$temp_dir/${debian_package}-dkms_${module_version}.dsc' '$temp_dir/${debian_package}-dkms_${module_version}.tar.gz' '$deb_basedir'" "Moving built files to $deb_basedir"
+-	    ;;
+-	deb)
+-	    invoke_command "dpkg-buildpackage -rfakeroot -d -b -us -uc 1>/dev/null" "Building binary package" || \
+-		die 7 $"There was a problem creating your ${create_type}."
+-	    echo $""
+-	    echo $"DKMS: mk${create_type} completed."
+-	    invoke_command "mv '$temp_dir/${debian_package}-dkms_${module_version}_all.deb' '$deb_basedir'" "Moving built files to $deb_basedir"
+-	    ;;
++    dsc)
++        invoke_command "dpkg-buildpackage -S -us -uc 1>/dev/null" "Building source package" || \
++            die 7 $"There was a problem creating your ${create_type}."
++        echo $""
++        echo $"DKMS: mk${create_type} completed."
++        invoke_command "mv '$temp_dir/${debian_package}-dkms_${module_version}_source.changes' '$temp_dir/${debian_package}-dkms_${module_version}.dsc' '$temp_dir/${debian_package}-dkms_${module_version}.tar.gz' '$deb_basedir'" "Moving built files to $deb_basedir"
++        ;;
++    deb)
++        invoke_command "dpkg-buildpackage -rfakeroot -d -b -us -uc 1>/dev/null" "Building binary package" || \
++            die 7 $"There was a problem creating your ${create_type}."
++        echo $""
++        echo $"DKMS: mk${create_type} completed."
++        invoke_command "mv '$temp_dir/${debian_package}-dkms_${module_version}_all.deb' '$deb_basedir'" "Moving built files to $deb_basedir"
++        ;;
+     esac
+     popd > /dev/null 2>&1
+ 
+     if in_temporary_trees; then
+-	echo "Copying built files to "`pwd`"/.." >&2
+-	cp "${deb_basedir}/"* ..
++        echo "Copying built files to "`pwd`"/.." >&2
++        cp "${deb_basedir}/"* ..
+     fi
+ 
+-    #cleanup
++    # Cleanup
+     invoke_command "rm $temp_dir -fr" "Cleaning up temporary files"
+     delete_temporary_trees || \
+-	die 7 $"There was a problem cleaning up temporary files."
++        die 7 $"There was a problem cleaning up temporary files."
+ }
+ 
+ make_common_test()
+@@ -3007,8 +3107,8 @@ make_common_test()
+ 
+     # Make sure that its installed in the first place
+     [[ -d $dkms_tree/$module/$module_version ]] ||
+-	die 3 $"The module/version combo: $module-$module_version" \
+-	    $"is not located in the DKMS tree."
++        die 3 $"The module/version combo: $module-$module_version" \
++        $"is not located in the DKMS tree."
+ }
+ 
+ make_kmp_srpm()
+@@ -3017,8 +3117,7 @@ make_kmp_srpm()
+     trap 'rm -rf $temp_dir_name' EXIT HUP TERM
+     mkdir -p $temp_dir_name/{BUILD,RPMS,SRPMS,SPECS,SOURCES}
+     pushd "$dkms_tree/$module/$module_version" > /dev/null 2>&1
+-    # want to change name of the top-level of the tarball
+-    # from build to $module-$module_version
++    # Want to change name of the top-level of the tarball from build to $module-$module_version
+     cp -lr build ${module}-${module_version}
+     tar cvjf $temp_dir_name/SOURCES/${module}-${module_version}.tar.bz2 ${module}-${module_version} > /dev/null 2>&1
+     rm -rf ${module}-${module_version}
+@@ -3028,12 +3127,12 @@ make_kmp_srpm()
+     grep ^Wrote $temp_dir_name/rpmbuild.log > /dev/null 2>&1
+     local RC="$?"
+     if ((RC == 0)); then
+-	local kmp_basedir="$dkms_tree/$module/$module_version/rpm"
+-	mkdir -p $kmp_basedir
+-	RPMS=$(LANG=C cp -va ${temp_dir_name}/SRPMS/* $kmp_basedir | awk '{print $NF}')
++        local kmp_basedir="$dkms_tree/$module/$module_version/rpm"
++        mkdir -p $kmp_basedir
++        RPMS=$(LANG=C cp -va ${temp_dir_name}/SRPMS/* $kmp_basedir | awk '{print $NF}')
+     else
+-	echo $"rpmbuild error log:"
+-	cat $temp_dir_name/rpmbuild.log
++        echo $"rpmbuild error log:"
++        cat $temp_dir_name/rpmbuild.log
+     fi
+     popd > /dev/null 2>&1
+     rm -rf $temp_dir_name
+@@ -3043,9 +3142,9 @@ make_kmp_srpm()
+ 
+ report_build_problem()
+ {
+-    #If apport is on the system, files a build problem
++    # If apport is on the system, files a build problem
+     if [ -x /usr/share/apport/apport ] && which python3 >/dev/null; then
+-	python3 /usr/share/apport/package-hooks/dkms_packages.py -m $module -v $module_version -k ${kernelver[0]}
++        python3 /usr/share/apport/package-hooks/dkms_packages.py -m $module -v $module_version -k ${kernelver[0]}
+     fi
+     die "$@"
+ }
+@@ -3059,12 +3158,12 @@ read_arg() {
+     # $3 = arg parameter
+     local rematch='^[^=]*=(.*)$'
+     if [[ $2 =~ $rematch ]]; then
+-	read "$1" <<< "${BASH_REMATCH[1]}"
++        read "$1" <<< "${BASH_REMATCH[1]}"
+     else
+-	read "$1" <<< "$3"
+-	# There is no way to shift our callers args, so
+-	# return 1 to indicate they should do it instead.
+-	return 1
++        read "$1" <<< "$3"
++        # There is no way to shift our callers args, so
++        # return 1 to indicate they should do it instead.
++        return 1
+     fi
+ }
+ 
+@@ -3075,10 +3174,10 @@ read_arg() {
+ # they are all passed at the same time.
+ parse_kernelarch(){
+     if [[ $1 =~ $mv_re ]]; then
+-	kernelver[${#kernelver[@]}]="${BASH_REMATCH[1]}"
+-	arch[${#arch[@]}]="${BASH_REMATCH[2]}"
++        kernelver[${#kernelver[@]}]="${BASH_REMATCH[1]}"
++        arch[${#arch[@]}]="${BASH_REMATCH[2]}"
+     else
+-	kernelver[${#kernelver[@]}]="$1"
++        kernelver[${#kernelver[@]}]="$1"
+     fi
+ }
+ 
+@@ -3090,10 +3189,10 @@ parse_kernelarch(){
+ # commands on the commandline.
+ parse_moduleversion(){
+     if [[ $1 =~ $mv_re ]]; then
+-	module="${BASH_REMATCH[1]}"
+-	module_version="${BASH_REMATCH[2]}"
++        module="${BASH_REMATCH[1]}"
++        module_version="${BASH_REMATCH[2]}"
+     else
+-	module="$1"
++        module="$1"
+     fi
+ }
+ 
+@@ -3108,26 +3207,32 @@ check_root() {
+ add_source_tree() {
+     local from=$(readlink -f $1)
+     if ! [[ $from && -f $from/dkms.conf ]]; then
+-	die 9 $"$1 must contain a dkms.conf file!"
++        die 9 $"$1 must contain a dkms.conf file!"
+     fi
+     check_root
+     setup_kernels_arches
+     if ! get_pkginfo_from_conf "$from/dkms.conf" ; then
+-	die 10 $"Malformed dkms.conf file. Cannot load source tree."
++        die 10 $"Malformed dkms.conf file. Cannot load source tree."
+     fi
+     module="$PACKAGE_NAME"
+     module_version="$PACKAGE_VERSION"
+     if [[ $force && -d $source_tree/$module-$module_version ]]; then
+-	echo >&2
+-	echo $"Forcing install of $module-$module_version"
+-	rm -rf "$source_tree/$module-$module_version"
++        echo >&2
++        echo $"Forcing install of $module-$module_version"
++        rm -rf "$source_tree/$module-$module_version"
+     fi
+ 
+     # We are already installed, just return.
+     case $from in
+-	"$source_tree/$module-$module_version") return;;
+-	"$dkms_tree/$module/$version/source") return;;
+-	"$dkms_tree/$module/$version/build") return;;
++        "$source_tree/$module-$module_version")
++            return
++            ;;
++        "$dkms_tree/$module/$version/source")
++            return
++            ;;
++        "$dkms_tree/$module/$version/build")
++            return
++            ;;
+     esac
+     mkdir -p "$source_tree/$module-$module_version"
+     cp -fr "$from"/* "$source_tree/$module-$module_version"
+@@ -3142,14 +3247,14 @@ make_kmp()
+ 
+     echo $""
+     if [[ $specfile && -e $dkms_tree/$module/$module_version/source/$specfile ]]; then
+-	echo $"Using $dkms_tree/$module/$module_version/source/$specfile"
+-	SPECFILE="$dkms_tree/$module/$module_version/source/$specfile"
++        echo $"Using $dkms_tree/$module/$module_version/source/$specfile"
++        SPECFILE="$dkms_tree/$module/$module_version/source/$specfile"
+     elif [[ -e $dkms_tree/$module/$module_version/source/$module-kmp.spec ]]; then
+-	echo $"Using $dkms_tree/$module/$module_version/source/$module-kmp.spec"
+-	SPECFILE="$dkms_tree/$module/$module_version/source/$module-kmp.spec"
++        echo $"Using $dkms_tree/$module/$module_version/source/$module-kmp.spec"
++        SPECFILE="$dkms_tree/$module/$module_version/source/$module-kmp.spec"
+     else
+-	die 5 $"Cannot find a suitable spec file which is needed by" \
+-	    $"DKMS in order use mkkmp.  Please specify --spec=specfile."
++        die 5 $"Cannot find a suitable spec file which is needed by" \
++            $"DKMS in order use mkkmp.  Please specify --spec=specfile."
+     fi
+ 
+     prepare_build
+@@ -3158,12 +3263,12 @@ make_kmp()
+     clean_build
+ 
+     if ((RC == 0)); then
+-	echo $""
+-	echo $"KMP SRPM location: $RPMS"
+-	echo $""
+-	echo $"DKMS: mkkmp completed."
++        echo $""
++        echo $"KMP SRPM location: $RPMS"
++        echo $""
++        echo $"DKMS: mkkmp completed."
+     else
+-	die 7 $"There was a problem creating your KMP source rpm."
++        die 7 $"There was a problem creating your KMP source rpm."
+     fi
+     # FIXME: hand SRPM to mock or build system to build
+ }
+@@ -3198,13 +3303,13 @@ autoinstall() {
+         fi
+         # If the module is already installed or weak-installed, skip it.
+         if _is_module_installed "$m" "$v" "$kernelver" "$arch"; then
+-		installed_modules[${#installed_modules[@]}]="$m"
+-		continue
+-	fi
++            installed_modules[${#installed_modules[@]}]="$m"
++            continue
++        fi
+         if module_status_weak "$m" "$v" "$kernelver" "$arch" >/dev/null; then
+-		installed_modules[${#installed_modules[@]}]="$m"
+-		continue
+-	fi
++            installed_modules[${#installed_modules[@]}]="$m"
++            continue
++        fi
+         # if the module does not want to be autoinstalled, skip it.
+         read_conf_or_die "$k" "$a" "$dkms_tree/$m/$v/source/dkms.conf"
+         if [[ ! $AUTOINSTALL ]]; then
+@@ -3226,49 +3331,49 @@ autoinstall() {
+ 
+     [[ $to_install ]] || return 0
+ 
+-	while true; do
+-		install_count=0
+-		next_install=( )
+-
+-		# Step 1: Remove installed modules from all dependency lists.
+-		for m in ${!build_depends[@]}; do
+-			next_depends=
+-			for d in ${build_depends[$m]}; do
+-				for i in ${installed_modules[@]}; do
+-					[[ "$d" = "$i" ]] && continue 2
+-				done
+-				next_depends+="$d "
+-			done
+-			build_depends[$m]="${next_depends%% }"
+-		done
+-
+-		# Step 2: Install modules that have an empty dependency list.
+-		for mv in "${to_install[@]}"; do
+-			IFS=/ read m v <<< "$mv"
+-			if [[ -z "${build_depends[$m]}" ]]; then
+-				(module="$m"; module_version="$v"; install_module)
+-				installed_modules[${#installed_modules[@]}]="$m"
+-				install_count=$(($install_count +1))
+-			else
+-				next_install[${#next_install[@]}]="$mv"
+-			fi
+-		done
+-
+-		wait
+-
+-		# Step 3: Keep going if at least one module was installed during
+-		# this iteration.
+-		[[ "$install_count" -gt 0 ]] || break;
+-
+-		# Step 4: Remove modules that were installed during Step 2 from
+-		# the job queue.
+-		to_install=( "${next_install[@]}" )
+-
+-	done
+-	for mv in "${to_install[@]}"; do
+-		IFS=/ read m v <<< "$mv"
+-		echo "$m/$v autoinstall failed due to missing dependencies: ${build_depends[$m]}"
+-	done
++    while true; do
++        install_count=0
++        next_install=( )
++
++        # Step 1: Remove installed modules from all dependency lists.
++        for m in ${!build_depends[@]}; do
++            next_depends=
++            for d in ${build_depends[$m]}; do
++                for i in ${installed_modules[@]}; do
++                    [[ "$d" = "$i" ]] && continue 2
++                done
++                next_depends+="$d "
++            done
++            build_depends[$m]="${next_depends%% }"
++        done
++
++        # Step 2: Install modules that have an empty dependency list.
++        for mv in "${to_install[@]}"; do
++            IFS=/ read m v <<< "$mv"
++            if [[ -z "${build_depends[$m]}" ]]; then
++                (module="$m"; module_version="$v"; install_module)
++                installed_modules[${#installed_modules[@]}]="$m"
++                install_count=$(($install_count +1))
++            else
++                next_install[${#next_install[@]}]="$mv"
++            fi
++        done
++
++        wait
++
++        # Step 3: Keep going if at least one module was installed during
++        # this iteration.
++        [[ "$install_count" -gt 0 ]] || break;
++
++        # Step 4: Remove modules that were installed during Step 2 from
++        # the job queue.
++        to_install=( "${next_install[@]}" )
++
++    done
++    for mv in "${to_install[@]}"; do
++        IFS=/ read m v <<< "$mv"
++        echo "$m/$v autoinstall failed due to missing dependencies: ${build_depends[$m]}"
++    done
+ }
+ 
+ function make_redhat3_driver_disk ()
+@@ -3353,7 +3458,7 @@ function make_redhat3_driver_disk ()
+     cd $temp_dir_name/SOURCES
+     invoke_command "tar -jcvf $temp_dir_name/SOURCES/$module-$module_version.tar.bz2 $module-$module_version/" "creating source tarball"
+     local i=0
+-    #Build RPMS
++    # Build RPMS
+     while [ $i -lt ${#kernelver[@]} ]; do
+         invoke_command "LC_ALL=C rpmbuild --define \"_topdir ${temp_dir_name}\" --define \"version $module_version\" --define \"module_name $module\" --define \"kernel_version ${kernelver[$i]}\" -bb --target ${arch[$i]} ${temp_dir_name}/SPECS/$module.spec > ${temp_dir_name}/rpmbuild.log 2>&1" "rpmbuild"
+         if [ "$?" -ne 0 ]; then
+@@ -3459,7 +3564,7 @@ verbose=""
+ symlink_modules=""
+ dkms_frameworkconf="/etc/dkms/framework.conf"
+ 
+-# these can come from the environment or the config file
++# These can come from the environment or the config file
+ [[ ! ${ADDON_MODULES_DIR} && -e /etc/sysconfig/module-init-tools ]] && . /etc/sysconfig/module-init-tools
+ addon_modules_dir="${ADDON_MODULES_DIR}"
+ [[ ! ${addon_modules_dir} ]] && running_distribution="$(distro_version)"
+@@ -3507,66 +3612,137 @@ action_re='^(remove|(auto|un)?install|match|mk(driverdisk|tarball|rpm|deb|dsc|km
+ # Parse command line arguments
+ while (($# > 0)); do
+     case $1 in
+-	--dkmsframework*)    read_arg dkms_frameworkconf "$1" "$2" || shift
+-			     #immediately load this config
+-			     . $dkms_frameworkconf 2> /dev/null;;
+-	--module*|-m)        read_arg _mv "$1" "$2" || shift
+-			     parse_moduleversion "$_mv";;
+-	-v)                  read_arg module_version "$1" "$2" || shift;;
+-	--kernelver*|-k)     read_arg _ka "$1" "$2" || shift
+-			     parse_kernelarch "$_ka";;
+-	--distro*|-d)        read_arg distro "$1" "$2" || shift;;
+-	--media*)            read_arg media "$1" "$2" ||shift;;
+-	--release*|-r)       read_arg release "$1" "$2" || shift;;
+-	--templatekernel*)   read_arg template_kernel "$1" "$2" || shift;;
+-	-c)                  read_arg conf "$1" "$2" || shift;;
+-	--quiet|-q)          exec >/dev/null 2>&1;;
+-	--version|-V)        echo $"dkms: [INSERT_VERSION_HERE]"
+-			     exit 0;;
+-	--no-prepare-kernel) no_prepare_kernel="no-prepare-kernel";;
+-	--no-clean-kernel)   no_clean_kernel="no-clean-kernel";;
+-	--no-initrd)         no_initrd="no-initrd";;
+-	--binaries-only)     binaries_only="binaries-only";;
+-	--source-only)       source_only="source-only";;
+-	--force)             force="true";;
+-	--all)               all="true";;
+-	--verbose)           verbose="true";;
+-	--rpm_safe_upgrade)  rpm_safe_upgrade="true";;
+-	--dkmstree*)         read_arg dkms_tree "$1" "$2" || shift;;
+-	--sourcetree*)       read_arg source_tree "$1" "$2" || shift;;
+-	--installtree*)      read_arg install_tree "$1" "$2" || shift;;
+-	--symlink-modules)   symlink_module="true";;
+-	--config*)           read_arg kernel_config "$1" "$2" || shift;;
+-	--archive*)          read_arg archive_location "$1" "$2" || shift;;
+-	--legacy-postinst*)  read_arg legacy_postinst "$1" "$2" || shift;;
+-	--arch*|-a)          read_arg _aa "$1" "$2" || shift
+-			     arch[${#arch[@]}]="$_aa";;
+-	--size*)             read_arg size "$1" "$2" || shift;;
+-	--kernelsourcedir*)  read_arg kernel_source_dir "$1" "$2" || shift
+-			     ksourcedir_fromcli="true";;
+-	--directive*)        read_arg _da "$1" "$2" || shift
+-			     directive_array[${#directive_array[@]}]="$_da";;
+-	--spec*)             read_arg specfile "$1" "$2" || shift;;
+-	--no-depmod)         no_depmod="true";;
+-	--debug)
+-	    export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): '
+-	    set -x;;
+-	-*|--*)              error $" Unknown option: $1"
+-			     show_usage
+-			     exit 2;;
+-	*) if [[ $1 =~ $action_re ]]; then
+-	    action="$action $1" # Add actions to the action list
+-	    elif [[ -f $1 && $1 = *dkms.conf ]]; then
+-	    try_source_tree="${1%dkms.conf}./" # Flag as a source tree
+-	    elif [[ -d $1 && -f $1/dkms.conf ]]; then
+-	    try_source_tree="$1" # ditto
+-	    elif [[ -f $1 ]]; then
+-	    archive_location="$1" # It is a file, assume it is an archive.
+-	    elif [[ ! $module ]]; then
+-	    parse_moduleversion "$1" # Assume it is a module/version pair.
+-	    else
+-	    warn $"I do not know how to handle $1."
+-	    fi;;
++        --dkmsframework*)
++            read_arg dkms_frameworkconf "$1" "$2" || shift
++            #immediately load this config
++            . $dkms_frameworkconf 2> /dev/null
++            ;;
++        --module*|-m)
++            read_arg _mv "$1" "$2" || shift
++            parse_moduleversion "$_mv"
++            ;;
++        -v)
++            read_arg module_version "$1" "$2" || shift
++            ;;
++        --kernelver*|-k)
++            read_arg _ka "$1" "$2" || shift
++            parse_kernelarch "$_ka"
++            ;;
++        --distro*|-d)
++            read_arg distro "$1" "$2" || shift
++            ;;
++        --media*)
++            read_arg media "$1" "$2" ||shift
++            ;;
++        --release*|-r)
++            read_arg release "$1" "$2" || shift
++            ;;
++        --templatekernel*)
++            read_arg template_kernel "$1" "$2" || shift
++            ;;
++        -c)
++            read_arg conf "$1" "$2" || shift
++            ;;
++        --quiet|-q)
++            exec >/dev/null 2>&1
++            ;;
++        --version|-V)
++            echo $"dkms: [INSERT_VERSION_HERE]"
++            exit 0
++            ;;
++        --no-prepare-kernel)
++            no_prepare_kernel="no-prepare-kernel"
++            ;;
++        --no-clean-kernel)
++            no_clean_kernel="no-clean-kernel"
++            ;;
++        --no-initrd)
++            no_initrd="no-initrd"
++            ;;
++        --binaries-only)
++            binaries_only="binaries-only"
++            ;;
++        --source-only)
++            source_only="source-only"
++            ;;
++        --force)
++            force="true"
++            ;;
++        --all)
++            all="true"
++            ;;
++        --verbose)
++            verbose="true"
++            ;;
++        --rpm_safe_upgrade)
++            rpm_safe_upgrade="true"
++            ;;
++        --dkmstree*)
++            read_arg dkms_tree "$1" "$2" || shift
++            ;;
++        --sourcetree*)
++            read_arg source_tree "$1" "$2" || shift
++            ;;
++        --installtree*)
++            read_arg install_tree "$1" "$2" || shift
++            ;;
++        --symlink-modules)
++            symlink_module="true"
++            ;;
++        --config*)
++            read_arg kernel_config "$1" "$2" || shift
++            ;;
++        --archive*)
++            read_arg archive_location "$1" "$2" || shift
++            ;;
++        --legacy-postinst*)
++            read_arg legacy_postinst "$1" "$2" || shift
++            ;;
++        --arch*|-a)
++            read_arg _aa "$1" "$2" || shift
++            arch[${#arch[@]}]="$_aa"
++            ;;
++        --size*)
++            read_arg size "$1" "$2" || shift
++            ;;
++        --kernelsourcedir*)
++            read_arg kernel_source_dir "$1" "$2" || shift
++            ksourcedir_fromcli="true"
++            ;;
++        --directive*)
++            read_arg _da "$1" "$2" || shift
++            directive_array[${#directive_array[@]}]="$_da"
++            ;;
++        --spec*)
++            read_arg specfile "$1" "$2" || shift
++            ;;
++        --no-depmod)
++            no_depmod="true"
++            ;;
++        --debug)
++            export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): '
++            set -x
++            ;;
++        -*|--*)
++            error $" Unknown option: $1"
++            show_usage
++            exit 2
++            ;;
++        *)
++            if [[ $1 =~ $action_re ]]; then
++                action="$action $1" # Add actions to the action list
++            elif [[ -f $1 && $1 = *dkms.conf ]]; then
++                try_source_tree="${1%dkms.conf}./" # Flag as a source tree
++            elif [[ -d $1 && -f $1/dkms.conf ]]; then
++                try_source_tree="$1" # ditto
++            elif [[ -f $1 ]]; then
++                archive_location="$1" # It is a file, assume it is an archive.
++            elif [[ ! $module ]]; then
++                parse_moduleversion "$1" # Assume it is a module/version pair.
++            else
++                warn $"I do not know how to handle $1."
++            fi
++            ;;
+     esac
+     shift
+ done
+@@ -3576,26 +3752,26 @@ done
+ # Error out if binaries-only is set and source-only is set
+ if [[ $binaries_only && $source_only ]]; then
+     die 8 $" You have specified both --binaries-only and --source-only." \
+-	$"You cannot do this."
++        $"You cannot do this."
+ fi
+ 
+ # Error if # of arches doesn't match # of kernels
+ if (( ${#kernelver[@]} != ${#arch[@]} && \
+     ${#arch[@]} > 1 )); then
+     die 1 $" If more than one arch is specified on the command line, then there" \
+-	$"must be an equal number of kernel versions also specified (1:1 relationship)."
++        $"must be an equal number of kernel versions also specified (1:1 relationship)."
+ fi
+ 
+ # Check that kernel version and all aren't both set simultaneously
+ if [[ $kernelver && $all ]]; then
+     die 2 $" You cannot specify a kernel version and also specify" \
+-	$"--all on the command line."
++        $"--all on the command line."
+ fi
+ 
+ # Check that arch and all aren't both set simultaneously
+ if [[ $arch && $all ]]; then
+     die 3 $" You cannot specify an arch and also specify" \
+-	$"--all on the command line."
++        $"--all on the command line."
+ fi
+ 
+ # If initramfs/initrd rebuild is not requested, skip it with Redhat's weak-modules
+@@ -3616,28 +3792,61 @@ fi
+ for action_to_run in $action; do
+     setup_kernels_arches "$action_to_run"
+     case "$action_to_run" in
+-	remove)       check_root && remove_module;;
+-	install)      check_root && install_modules;;
+-	autoinstall)  check_root && autoinstall;;
+-	match)        check_root && have_one_kernel && run_match;;
+-	uninstall)    check_root && have_one_kernel && uninstall_module;;
+-	mkdriverdisk) check_root && make_driver_disk;;
+-	build)        build_modules;;
+-	add)          add_module;;
+-	mktarball)    make_tarball;;
+-	mkrpm)        make_rpm;;
+-	mkdeb)        make_debian "deb";;
+-	mkdsc)        make_debian "dsc";;
+-	mkkmp)        have_one_kernel && make_kmp;;
+-	status)       show_status;;
+-	ldtarball) # Make sure they're root if we're using --force
+-	    if ((UID != 0)) && [[ $force = true ]]; then
+-		die 1 $"You must be root to use this command with the --force option."
+-	    fi
+-	    load_tarball && add_module;;
+-	'') error $"No action was specified."
+-	    show_usage;;
+-	*)  error $"Unknown action specified: $action_to_run"
+-	    show_usage;;
++    remove)
++        check_root && remove_module
++        ;;
++    install)
++        check_root && install_modules
++        ;;
++    autoinstall)
++        check_root && autoinstall
++        ;;
++    match)
++        check_root && have_one_kernel && run_match
++        ;;
++    uninstall)
++        check_root && have_one_kernel && uninstall_module
++        ;;
++    mkdriverdisk)
++        check_root && make_driver_disk
++        ;;
++    build)
++        build_modules
++        ;;
++    add)
++        add_module
++        ;;
++    mktarball)
++        make_tarball
++        ;;
++    mkrpm)
++        make_rpm
++        ;;
++    mkdeb)
++        make_debian "deb"
++        ;;
++    mkdsc)
++        make_debian "dsc"
++        ;;
++    mkkmp)
++        have_one_kernel && make_kmp
++        ;;
++    status)
++        show_status
++        ;;
++    ldtarball) # Make sure they're root if we're using --force
++        if ((UID != 0)) && [[ $force = true ]]; then
++            die 1 $"You must be root to use this command with the --force option."
++        fi
++        load_tarball && add_module
++        ;;
++    '')
++        error $"No action was specified."
++        show_usage
++        ;;
++    *)
++        error $"Unknown action specified: $action_to_run"
++        show_usage
++        ;;
+     esac
+ done


More information about the scm-commits mailing list