--- trunk/mkinitrd-magellan/mkinitrd.in 2011/01/29 12:49:07 1218 +++ trunk/mkinitrd-magellan/mkinitrd.in 2011/01/29 14:04:00 1219 @@ -94,7 +94,7 @@ echo "Looking for deps of module $1" deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \ - function modname(filename) { match(filename, /\/([^\/]+)\.k?o:?$/, ret); return ret[1] } \ + function modname(filename) { match(filename, /\/([^\/]+)\.k?o.?g?z?:?$/, ret); return ret[1] } \ function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \ /^.*kernel/ { show(); \ orig=modname($1); dep=""; \ @@ -132,6 +132,7 @@ case "${MODULES} " in *"/${modName}.ko "*) return ;; + *"/${modName}.ko.gz "*) return ;; esac if echo ${builtins} | egrep -q '(^| )'${modName}'( |$)' @@ -164,7 +165,7 @@ done fi - for modExt in o.gz o ko + for modExt in o.gz o ko ko.gz do for modDir in /lib/modules/${kernel}/updates /lib/modules/${kernel} do @@ -252,7 +253,7 @@ modalias=$(cat modalias) for driver in $(modprobe --set-version ${kernel} --show-depends ${modalias} 2>/dev/null| awk '{ print gensub(".*/","","g",$2) }') do - findmodule ${driver%%.ko} + findmodule ${driver%%.*} done popd >/dev/null 2>&1 done @@ -773,8 +774,8 @@ for MODULE in ${MODULES} do text="" - module=$(echo ${MODULE} | sed "s|.*/||" | sed "s/.k\?o$//") - fullmodule=$(echo ${MODULE} | sed "s|.*/||") + module=$(echo ${MODULE} | sed "s|.*/||" | sed -e "s/.k\?o.\?g\?z\?$//" -e "s/.gz//") + fullmodule=$(echo ${MODULE} | sed -e "s|.*/||" -e "s/.gz//") options=$(sed -n -e "s/^options[ ][ ]*${module}[ ][ ]*//p" ${modprobeconf} 2>/dev/null) @@ -893,6 +894,10 @@ if [ -x /usr/bin/strip ] && [[ ${NOSTRIP} = false ]] then /usr/bin/strip -g ${verbose} ${MODULE} -o ${DEST}/lib/$(basename ${MODULE}) || die + # handle gzip compressed modules right + elif [[ ${MODULE##*.} = gz ]] + then + zcat ${verbose} ${MODULE} > ${DEST}/lib/$(basename ${MODULE} .gz) || die else cp ${verbose} -a ${MODULE} ${DEST}/lib || die fi