rpms/kexec-tools/devel mkdumprd2,1.2,1.3

Neil Horman nhorman at fedoraproject.org
Fri May 15 20:24:25 UTC 2009


Author: nhorman

Update of /cvs/extras/rpms/kexec-tools/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29462

Modified Files:
	mkdumprd2 
Log Message:
Fixing mkdumprd2 bugs


Index: mkdumprd2
===================================================================
RCS file: /cvs/extras/rpms/kexec-tools/devel/mkdumprd2,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- mkdumprd2	14 May 2009 20:09:30 -0000	1.2
+++ mkdumprd2	15 May 2009 20:23:55 -0000	1.3
@@ -56,7 +56,7 @@ cleanup_and_exit()
 
 	if [ -d $BASE_DIR ]
 	then
-		rm -rf $STAGE_DIR
+		rm -rf $BASE_DIR
 	fi
 
 	if [ -f $IMG_FILE ]
@@ -64,7 +64,33 @@ cleanup_and_exit()
 		rm -f $IMG_FILE
 	fi
 	
-	finish_and_exit $EXIT_CODE ""
+	finish_and_exit $EXIT_CODE $2 
+}
+
+#########################################################
+# Setup appropriate environment things
+#########################################################
+setup_env()
+{
+	PATH=$PATH:/etc/kdump-adv-conf/kdump_build_helpers
+}
+
+
+#########################################################
+# Handle sigint so we clean up well
+#########################################################
+handle_sigint()
+{
+	cleanup_and_exit 2 "Caught Sigint"
+}
+
+
+#########################################################
+#Trap sigint so we can clean up
+#########################################################
+setup_traps()
+{
+	trap handle_sigint 2
 }
 
 #########################################################
@@ -112,21 +138,20 @@ create_initramfs_dirs()
 	mkdir -p $STAGE_DIR/etc/network/if-pre-down.d || return 1
 	mkdir -p $STAGE_DIR/etc/network/if-down.d || return 1
 	mkdir -p $STAGE_DIR/etc/network/if-post-down.d || return 1
-	cd $STAGE_DIR
-	ln -s bin sbin
+	$(cd $STAGE_DIR; ln -s bin sbin)
 }
 
 load_dependent_libs()
 {
 	local BIN=$1
-	ldd $BIN | grep "not a dynamic executable"
+	ldd $BIN | grep -q "not a dynamic executable"
 	if [ $? == 0 ]
 	then
 		#There are no dependencies, we're done
 		return
 	fi
 
-	ldd $BIN | grep "statically linked"
+	ldd $BIN | grep -q "statically linked"
 	if [ $? == 0 ]
 	then
 		#There are no dependencies, we're done
@@ -135,7 +160,7 @@ load_dependent_libs()
 
 	for LIB in `ldd $BIN | awk '/\// {if ($2 == "=>") { print $3} else {print $1}}'`
 	do
-		install_with_deps $LIB
+		load_dependent_libs $LIB
 		if [ ! -f $STAGE_DIR/$LIB ]
 		then
 			install --mode=755 $LIB $STAGE_DIR/$LIB
@@ -150,7 +175,7 @@ install_with_deps()
 	local MODE=$2
 
 	install --mode=$MODE $BIN $STAGE_DIR/bin
-	install_with_deps $BIN 
+	load_dependent_libs $BIN 
 }	
 
 populate_std_files()
@@ -167,20 +192,22 @@ populate_std_files()
 	done
 
 	# We always get kpartx, dmsetup, lvm and mdadm
-	for i in lvm kpartx mdadm dmsetup
+	for i in /sbin/lvm /sbin/kpartx /sbin/mdadm /sbin/dmsetup
 	do
-		install_wtih_deps $i 755
+		install_with_deps $i 755
 	done
 
 	# We also want to suck in all the runtime scripts 
 	# that make life easier inside the initramfs
 	# These don't need deps, because they're all msh scripts
-	for i in `ls /usr/share/kexec-tools/advanced_config/kdump-scripts/`
+	for i in `ls /etc/kdump-adv-conf/kdump_build_helpers/`
 	do
-		install --mode=755 $i $STAGE_DIR/bin
+		if [ -f $i ]
+		then
+			install --mode=755 $i $STAGE_DIR/bin
+		fi
 	done
 
-	/bin/sh
 }
 
 #########################################################
@@ -208,10 +235,10 @@ prep_std_initramfs()
 #3 - destination path
 #4 - optional arguments
 ##########################################################
-validate_minifest_line()
+validate_manifest_line()
 {
 
-	case "$type" in
+	case "$1" in
 	reg|ren)
 		# Regular file, make sure that the file exists
 		if [ ! -f $2 ]
@@ -222,21 +249,29 @@ validate_minifest_line()
 	gen)
 		# Generated file, make sure that the script
 		# exists and is executable
-		if [ ! -x $2 ]
+		TEST_BIN=$(which $2)
+		if [ ! -x $TEST_BIN ]
 		then
 			return 1
 		fi
 		;;
-	null)
-		# Null files have no output, they simply
+	exec)
+		# exec files have no output, they simply
 		# provide a means by which to manipulate the
 		# the initramfs.  Just make sure the file exists
-		if [ ! -x $2 ]
+		TEST_BIN=$(which $2)
+		if [ ! -x $TEST_BIN ]
 		then
 			return 1
 		fi
 		;;
 	*)
+		echo $1 | grep -q "^#"
+		if [ $? -eq 0 ]
+		then
+			# its a comment
+			continue
+		fi
 		# Unknown manifest type, fail
 		return 1
 		;;
@@ -267,7 +302,7 @@ populate_from_manifest()
 		validate_manifest_line $type $sarg $dpath $opts
 		if [ $? != 0 ]
 		then
-			finish_and_exit 1 "$sarg: Invalid line in manifest"
+			cleanup_and_exit 1 "$sarg: Invalid line in manifest"
 		fi
 
 		case "$type" in
@@ -292,10 +327,10 @@ populate_from_manifest()
 			$sarg $opts > $STAGE_DIR/$dpath
 			if [ $? != 0 ]
 			then
-				finish_and_exit 1 "$sarg: Non-zero exit"
+				cleanup_and_exit 1 "$sarg: Non-zero exit"
 			fi
 			;;
-		null)
+		exec)
 			# Just run $sarg as program, passing $BASE_DIR as the
 			# first argument, and $opts next.  This lets us
 			# manipulate the intiramfs without having to add
@@ -303,7 +338,7 @@ populate_from_manifest()
 			$sarg $BASE_DIR $opts
 			if [ $? != 0 ]
 			then
-				finish_and_exit 1 "$sarg: Non-zero exit"
+				cleanup_and_exit 1 "$sarg: Non-zero exit"
 			fi
 
 		esac
@@ -321,12 +356,12 @@ create_initramfs_image()
 	(cd $STAGE_DIR; find . | cpio --quiet -c -o) > $IMG_FILE
 	if [ $? != 0 ]
 	then
-		finish_and_exit 1 " Could not create initramfs"
+		cleanup_and_exit 1 " Could not create initramfs"
 	fi
 
 	# Get running kernel version to name the initramfs with
 	target=$(uname -r)
-	gzip -9 -c $IMG_FILE > initrd-$target.img
+	gzip -9 -c $IMG_FILE > ./initrd-$target.img
 }
 
 
@@ -336,11 +371,15 @@ create_initramfs_image()
 
 # Get our passed in options
 
+#setup working env
+setup_env
+setup_traps
+
 # Create a new staging area
 create_new_initramfs_dir
 if [ $? != 0 ]
 then
-	finish_and_exit 1 "Unable to stage a new initramfs area"
+	cleanup_and_exit 1 "Unable to stage a new initramfs area"
 fi
 
 # Do staging
@@ -353,4 +392,4 @@ populate_from_manifest
 create_initramfs_image
 
 # Cleanup
-cleanup_and_exit 0
+cleanup_and_exit 0 ""




More information about the scm-commits mailing list