SVN: geninitrd/trunk/geninitrd

glen glen at pld-linux.org
Wed Dec 26 02:13:31 CET 2007


Author: glen
Date: Wed Dec 26 02:13:30 2007
New Revision: 9161

Modified:
   geninitrd/trunk/geninitrd
Log:
- find_depmod() implemented using modprobe info
- shell constructs where possible

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd	(original)
+++ geninitrd/trunk/geninitrd	Wed Dec 26 02:13:30 2007
@@ -263,7 +263,42 @@
 	fi
 }
 
-find_depmod () {
+# Finds module dependencies
+#
+# @param	$mode	silent | normal
+# @param	$module
+#
+# Outputs each dependant module full path including the module itself.
+find_depmod() {
+	local mode="$1"
+	local module="$2"
+
+	# backwards compatible, process $mode
+	local modfile
+	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
+			warn "$module: module not found for $kernel kernel"
+		fi
+		if ! is_no "$EXIT_IF_MISSING"; then
+			exit 1
+		else
+			warn "If $module isn't compiled in kernel then this initrd may not start your system."
+		fi
+	fi
+
+	# This works when user has module-init-tools installed even on 2.4 kernels
+	modprobe --set-version $kernel --show-depends $module | \
+	while read insmod modpath; do
+		echo $modpath
+	done
+}
+
+find_depmod_old () {
 	typeset mods module f level depfile first
 
 	depfile=/lib/modules/$kernel/modules.dep
@@ -337,6 +372,7 @@
 
 	if [ ! -f "/lib/modules/$kernel/$fmPath" ]; then
 		if [ -n "$skiperrors" ]; then
+			# XXX should not ignore here errors
 			return
 		fi
 
@@ -344,9 +380,11 @@
 	fi
 
 	# only need to add each module once
-	# quote /
-	local tmpFmPath=$(echo $fmPath | awk '{gsub(/\//,"\\/");print}')
-	if echo "$MODULES" | awk '/'"$tmpFmPath"'/ {exit 1}'; then
+	local m have=0
+	for m in $MODULES; do
+		[ $m = $fmPath ] && have=1
+	done
+	if [ $have = 0 ]; then
 		MODULES="$MODULES $fmPath"
 	fi
 }
@@ -371,7 +409,7 @@
 	fi
 
 	local mod allModulesToFind
-	if [ -n "$skiperrors" ]; then
+	if [ "$skiperrors" = 1 ]; then
 		allModulesToFind=$(find_depmod silent $modName)
 	else
 		allModulesToFind=$(find_depmod normal $modName)
@@ -381,7 +419,7 @@
 	fi
 
 	for mod in $allModulesToFind; do
-		mod=$(echo $mod | awk '{sub(/^\/lib\/modules\/[^\/]*\//, ""); print}')
+		mod=${mod#/lib/modules/$kernel/}
 		addmodule $mod "$skiperrors"
 	done
 }


More information about the pld-cvs-commit mailing list