Author: glen
Date: Sat Feb  9 19:53:53 2008
New Revision: 9272

Modified:
   geninitrd/trunk/geninitrd
Log:
- drop old code, optimize modules_add_linuxrc with shell code

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Sat Feb  9 19:53:53 2008
@@ -266,23 +266,23 @@
 
 # Finds module dependencies
 #
-# @param       $mode   silent | normal
 # @param       $module
+# @param       $mode   [silent]
 #
 # Outputs each dependant module full path including the module itself.
 find_depmod() {
-       local mode="$1"
-       local module="$2"
+       local module="$1"
+       local mode="$2"
 
        # backwards compatible, process $mode
        local modfile
-       if [ "$mode" = silent ]; then
+       if [ "$mode" = "silent" ]; then
                modfile=$(modinfo -n $module 2>/dev/null)
        else
                modfile=$(modinfo -n $module)
        fi
        if [ ! -f "$modfile" ]; then
-               if [ "$mode" != silent ]; then
+               if [ "$mode" != "silent" ]; then
                        warn "$module: module not found for $kernel kernel"
                fi
                if ! is_no "$EXIT_IF_MISSING"; then
@@ -299,102 +299,11 @@
        done
 }
 
-find_depmod_old () {
-       typeset mods module f level depfile first
-
-       depfile=/lib/modules/$kernel/modules.dep
-
-       if [ ! -f $depfile ]; then
-               die "No $depfile! Run depmod and rerun $PROGRAM."
-       fi
-
-       # prepend / if no path given, append $modext.gz if not given,
-       # quote /
-       origmodule="$2"
-       module=$(echo "$2" | \
-               awk '/\// {print;next} {print "/" $0}' | \
-               awk '/\./ {print;next} {print $0 "'$modext'.gz"}' |
-               awk '{gsub("/","\\/");print}')
-       mods=$(awk '
-BEGIN { here = 0 }
-/'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
-/:/ { here = 0 }
-/(.*)/ { gsub(/\\/," "); if (here) print }
-' $depfile | xargs)
-
-       # fallback to $modext
-       if [ "$mods" = "" ]; then
-               module=$(echo "$module" | awk 
'{gsub("\'$modext'\.gz$","\'$modext'",$0);print}')
-               # ") - vim
-       fi
-
-       mods=$(awk '
-BEGIN { here = 0 }
-/'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
-/:/ { here = 0 }
-/(.*)/ { gsub(/\\/," "); if (here) print }
-' $depfile | xargs)
-
-       if [ "$mods" = "" ]; then
-               if [ "$1" != silent ]; then
-                       warn "$origmodule: module not found in $depfile"
-               fi
-               if ! is_no "$EXIT_IF_MISSING"; then
-                       exit 1
-               else
-                       warn "If $origmodule isn't compiled in kernel then this 
initrd may not start your system."
-               fi
-       fi
-
-       level=$3
-       if [ "$level" = "" ]; then
-               level=0
-       fi
-       level=$((level + 1))
-       if [ $level -gt 20 ]; then
-               die "$origmodule: cycle in $depfile"
-       fi
-
-       first=
-       for f in $mods; do
-               if [ "$first" = "" ]; then
-                       first=$f
-               else
-                       find_depmod $1 $f $level
-               fi
-       done
-
-       echo $first
-}
-
-addmodule() {
-       local fmPath=$1
-       local skiperrors=$2
-
-       if [ ! -f "/lib/modules/$kernel/$fmPath" ]; then
-               if [ -n "$skiperrors" ]; then
-                       # XXX should not ignore here errors
-                       return
-               fi
-
-               die "module $fmPath present in modules.dep, but not in 
filesystem (kernel = $kernel)"
-       fi
-
-       # only need to add each module once
-       local m have=0
-       for m in $MODULES; do
-               [ $m = $fmPath ] && have=1
-       done
-       if [ $have = 0 ]; then
-               MODULES="$MODULES $fmPath"
-       fi
-}
-
 findmodule() {
        local skiperrors=""
        local modName=$1
 
-       if [ ${modName#-} != ${modName} ]; then
+       if [ ${modName#-} != $modName ]; then
                skiperrors=1
                modName=${modName#-}
        fi
@@ -409,19 +318,27 @@
                findmodule socal
        fi
 
-       local mod allModulesToFind
+       local mod depmod 
        if [ "$skiperrors" = 1 ]; then
-               allModulesToFind=$(find_depmod silent $modName)
+               depmod=$(find_depmod $modName silent)
        else
-               allModulesToFind=$(find_depmod normal $modName)
+               depmod=$(find_depmod $modName)
                if [ $? != 0 ]; then
                        exit 1
                fi
        fi
 
-       for mod in $allModulesToFind; do
+       for mod in $depmod; do
                mod=${mod#/lib/modules/$kernel/}
-               addmodule $mod "$skiperrors"
+
+               # add each module only once
+               local m have=0
+               for m in $MODULES; do
+                       [ $m = $mod ] && have=1
+               done
+               if [ $have = 0 ]; then
+                       MODULES="$MODULES $mod"
+               fi
        done
 }
 
@@ -1024,7 +941,7 @@
        local mod
 
        for mod in $modules; do
-               MODULEDIR=$(dirname "$mod")
+               MODULEDIR=${mod%/*}
                inst_d "/lib/modules/$kernel/$MODULEDIR"
                cp -a "/lib/modules/$kernel/$mod" 
"$DESTDIR/lib/modules/$kernel/$mod"
                gunzip "$DESTDIR/lib/modules/$kernel/$mod" 2> /dev/null
@@ -1032,19 +949,21 @@
 }
 
 modules_add_linuxrc() {
-       local modules="$1"
-       local mod
+       local mod modpath
 
-       for mod in $modules; do
-               MODULE2=$(dirname "$mod")
-               NAME2=$(basename "$mod" .gz)
-               MODULE2=$MODULE2/$NAME2
-               module="`echo $mod | awk -F/ '{ $0=$NF } /'$modext'.*$/ { 
gsub(/'$modext'.*/, NIL, $0); } { print $0; }'`"
-               options=$(modprobe_conf | awk -vmodule="$module" '{ if ($1 == 
"options" && $2 == module) { for(i=3;i<=NF;i++) printf("%s ",$i); }}')
-
-               generic_module=$(echo "${module}" | awk ' { gsub("-", "_", $0) 
} { print $0; } ')
-               sleep_var="$(eval echo \$MODULE_${generic_module}_USLEEP)"
-               firmware_var="$(eval echo \$MODULE_${generic_module}_FIRMWARE)"
+       for mod in "$@"; do
+               # module path without optional compression
+               modpath=${mod%.gz}
+
+               # name of the module
+               module=${modpath##*/}
+               module=${module%$modext}
+
+               options=$(modprobe_conf | awk -vmodule="$module" '{ if ($1 == 
"options" && $2 == module) { for(i=3;i<=NF;i++) printf("%s ",$i); }}' | xargs)
+
+               generic_module=$(echo $module | tr - _)
+               sleep_var=$(eval echo \$MODULE_${generic_module}_USLEEP)
+               firmware_var=$(eval echo \$MODULE_${generic_module}_FIRMWARE)
 
                if [ -n "$verbose" ]; then
                        s=""
@@ -1060,8 +979,8 @@
                if [ -n "$firmware_var" ]; then
                        firmware_install_module "$module" "$firmware_var"
                fi
-               echo "$insmod /lib/modules/$kernel/$MODULE2 $options" | 
add_linuxrc
-               if [ -n "${sleep_var}" ]; then
+               echo "$insmod /lib/modules/$kernel/$modpath $options" | 
add_linuxrc
+               if [ -n "$sleep_var" ]; then
                        echo "usleep $sleep_var" | add_linuxrc
                fi
        done
@@ -1935,7 +1854,7 @@
        fi
 EOF
 
-modules_add_linuxrc "$MODULES"
+modules_add_linuxrc $MODULES
 
 # TODO: rewrite for busybox
 #if [ -n "$loopDev" ]; then
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to