SVN: geninitrd/trunk/geninitrd

glen glen at pld-linux.org
Tue Mar 3 11:34:15 CET 2009


Author: glen
Date: Tue Mar  3 11:34:15 2009
New Revision: 10169

Modified:
   geninitrd/trunk/geninitrd
Log:
- fix die() stderr redirection
- simplify find_depmod by using only modprobe
- skip errors logic moved to find_depmod from findmodule
- rename findmodule -> find_module for consistency

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd	(original)
+++ geninitrd/trunk/geninitrd	Tue Mar  3 11:34:15 2009
@@ -106,7 +106,7 @@
 # aborts program abnormally
 die() {
 	local rc=${2:-1}
-	msg "ERROR: $1" 2>&2
+	msg "ERROR: $1" >&2
 	exit $rc
 }
 
@@ -259,38 +259,44 @@
 # Finds module dependencies
 #
 # @param	$module
-# @param	$mode	[silent]
 #
-# Outputs each dependant module full path.
+# Outputs full path to module and it's dependencies
 find_depmod() {
 	local module="$1"
-	local mode="$2"
+	local skiperrors=0
 
-	# backwards compatible, process $mode, parse aliases
-	local modfile=$(NEW_MODINFO=1 modinfo -k $kernel -n $module 2>/dev/null)
-	if [ ! -f "$modfile" ]; then
-		# module not found. try aliases!
-		local alias aliases=$(modprobe_conf | awk -vm="$module" '$1 == "alias" && $2 == m { print $3 }')
-		if [ "$aliases" ]; then
-			for alias in $aliases; do
-				debug "Try $alias alias for $module"
-				find_depmod "$alias"
-			done
+	# if module is prefixed with dash, we should ignore errors if the module
+	# can't be found.
+	if [ ${module#-} != $module ]; then
+		skiperrors=1
+		module=${module#-}
+	fi
+
+	# XXX: what's this?
+	if [ "$module" = "pluto" ] || [ "$module" = "fcal" ]; then
+		find_depmod fc4
+		find_depmod soc
+	fi
+
+	# This works when user has module-init-tools installed even on 2.4 kernels
+	local modprobe
+	modprobe=$(modprobe --set-version $kernel --show-depends $module --ignore-install 2>&1)
+
+	if [ $? != 0 ]; then
+		if [ $skiperrors = 1 ]; then
 			return
 		fi
+		echo >&2 "$modprobe"
 
-		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."
+			die "$module: module not found for $kernel kernel"
 		fi
+
+		warn "$module: module not found for $kernel kernel"
+		warn "If $module isn't compiled in kernel then this initrd may not start your system."
 	fi
 
-	# This works when user has module-init-tools installed even on 2.4 kernels
-	modprobe --set-version $kernel --show-depends $module --ignore-install | \
+	echo "$modprobe" | \
 	while read insmod modpath options; do
 		[ "$insmod" = "insmod" ] && echo $modpath
 	done
@@ -306,35 +312,11 @@
 	echo -n $(NEW_MODINFO=1 modinfo -k $kernel -F firmware $module 2>/dev/null | xargs)
 }
 
-findmodule() {
-	local skiperrors=""
-	local modName=$1
-
-	if [ ${modName#-} != $modName ]; then
-		skiperrors=1
-		modName=${modName#-}
-	fi
-
-	# what's that?
-	if [ "$modName" = "pluto" ]; then
-		findmodule fc4
-		findmodule soc
-	fi
-	if [ "$modName" = "fcal" ]; then
-		findmodule fc4
-		findmodule socal
-	fi
-
-	local mod depmod
-	if [ "$skiperrors" = 1 ]; then
-		depmod=$(find_depmod $modName silent)
-	else
-		depmod=$(find_depmod $modName)
-		if [ $? != 0 ]; then
-			exit 1
-		fi
-	fi
+# @param	$module
+find_module() {
+	local mod depmod module=$1
 
+	depmod=$(find_depmod $module) || exit 1
 	for mod in $depmod; do
 		mod=${mod#/lib/modules/$kernel/}
 
@@ -347,7 +329,7 @@
 			MODULES="$MODULES $mod"
 
 			# if we are adding uvesafb, we need v86d as well
-			if [ "$modName" = "uvesafb" ]; then
+			if [ "$module" = "uvesafb" ]; then
 				need_v86d=yes
 			fi				
 		fi
@@ -496,14 +478,14 @@
 	if is_yes "$have_md"; then
 		case "$raidlevel" in
 		[01]|10)
-			findmodule "raid$raidlevel"
+			find_module "raid$raidlevel"
 			;;
 		[456])
-			findmodule "-raid$raidlevel"
-			findmodule "-raid456"
+			find_module "-raid$raidlevel"
+			find_module "-raid456"
 			;;
 		linear)
-			findmodule "linear"
+			find_module "linear"
 			;;
 		*)
 			warn "raid level $number (in mdadm config) not recognized"
@@ -531,13 +513,13 @@
 			for mod in $scsimodules; do
 				# for now allow scsi modules to come from anywhere. There are some
 				# RAID controllers with drivers in block
-				findmodule "$mod"
+				find_module "$mod"
 			done
 		else
-			findmodule "$n"
+			find_module "$n"
 		fi
 	done
-	findmodule "-scsi_wait_scan"
+	find_module "-scsi_wait_scan"
 }
 
 # find modules for $devpath
@@ -577,11 +559,11 @@
 			[ -z "$NFS_ETH_MODULES" ] && NFS_ETH_MODULES=$(/usr/bin/pcidev /m net | xargs)
 			warn "NOTE: Network card(s) module(s) $NFS_ETH_MODULES is for this machine"
 			for m in $NFS_ETH_MODULES; do
-				findmodule "$m"
+				find_module "$m"
 			done
 		fi
-		findmodule "-ipv4"
-		findmodule "nfs"
+		find_module "-ipv4"
+		find_module "nfs"
 		have_nfs=yes
 		warn "Remember to use \`root=/dev/ram0 init=/linuxrc' when starting kernel"
 		warn "or you will have problems like init(xx) being child process of swapper(1)."
@@ -618,33 +600,33 @@
 	fi
 
 	if [[ "$devpath" == /dev/rd/* ]]; then
-		findmodule "DAC960"
+		find_module "DAC960"
 		rootdev_add=/dev/rd/
 		return
 	fi
 
 	if [[ "$devpath" == /dev/ida/* ]]; then
-		findmodule "cpqarray"
+		find_module "cpqarray"
 		rootdev_add=/dev/ida/
 		return
 	fi
 
 	if [[ "$devpath" == /dev/cciss/* ]]; then
-		findmodule "cciss"
+		find_module "cciss"
 		rootdev_add=/dev/cciss/
 		return
 	fi
 
 	if [[ "$devpath" == /dev/ataraid/* ]]; then
 		find_modules_ide
-		findmodule "ataraid"
+		find_module "ataraid"
 		ataraidmodules=$(modprobe_conf | awk '/ataraid_hostadapter/ && ! /^[\t ]*#/ { print $3; }')
 		if [ -n "$ataraidmodules" ]; then
 			# FIXME: think about modules compiled in kernel
 			die "ataraid_hostadapter alias not defined in modprobe.conf! Please set it and run $PROGRAM again."
 		fi
 		for n in $ataraidmodules; do
-			findmodule "$n"
+			find_module "$n"
 		done
 		rootdev_add=/dev/ataraid/
 		return
@@ -668,7 +650,7 @@
 		loopFile="$(echo $line | awk '{print $5}')"
 
 		BASICMODULES="$BASICMODULES -loop"
-		findmodule "-$loopFs"
+		find_module "-$loopFs"
 		BASICMODULES="$BASICMODULES -${loopFs}"
 		return
 	fi
@@ -1531,11 +1513,11 @@
 cache_modprobe_conf
 
 for n in $PREMODS; do
-	findmodule "$n"
+	find_module "$n"
 done
 
 if [ "$FBMODULE" ]; then
-	findmodule "$FBMODULE"
+	find_module "$FBMODULE"
 fi
 
 # allow forcing loading SCSI and/or IDE modules
@@ -1556,18 +1538,18 @@
 
 find_modules_for_devpath "$rootdev"
 
-findmodule "-$rootFs"
+find_module "-$rootFs"
 
 for n in $BASICMODULES; do
-	findmodule "$n"
+	find_module "$n"
 done
 
 if is_yes "$USE_TUXONICE"; then
-	findmodule "-lzf"
+	find_module "-lzf"
 fi
 
 if is_yes "$FB_SPLASH"; then
-	findmodule "-evdev"
+	find_module "-evdev"
 fi
 
 if [ -n "$ifneeded" -a -z "$MODULES" ]; then


More information about the pld-cvs-commit mailing list