summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-03-20 11:48:53 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-03-27 17:28:00 +0000
commit7911ec5de977abb8df859dbe4721ed1aad4b95a1 (patch)
treec18684e177d6712f765a542ce69e2934814a44a0
parenta9390e0f9e4a147f9e0a3a56b715975e58766fc0 (diff)
downloadpoky-7911ec5de977abb8df859dbe4721ed1aad4b95a1.zip
poky-7911ec5de977abb8df859dbe4721ed1aad4b95a1.tar.gz
poky-7911ec5de977abb8df859dbe4721ed1aad4b95a1.tar.bz2
runqemu: Improve error handling/exit codes
runqemu-internal is sourced so should be returning with an error code in case of errors. runqemu needs to deal with this. This patch fixes up the various error paths so we're consistent and get a sane exit status for runqemu which helps a lot in its use in the qemu runtime testing on the autobuilder. (From OE-Core rev: 22a54741167dd6cc011a1b98787c82cc992158ed) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/runqemu1
-rwxr-xr-xscripts/runqemu-internal34
2 files changed, 19 insertions, 16 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index fc7d749..04caa6d 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -422,3 +422,4 @@ INTERNAL_SCRIPT=`which runqemu-internal`
fi
. $INTERNAL_SCRIPT
+exit $?
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 7ca00f8..dfdde05 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -184,7 +184,7 @@ if [ "$TAP" = "" ]; then
if [ $? -ne 0 ]; then
# Re-run standalone to see verbose errors
sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
- return
+ return 1
fi
LOCKFILE="$LOCKDIR/$tap"
echo "Acquiring lockfile for $tap..."
@@ -256,20 +256,20 @@ case "$MACHINE" in
"spitz") ;;
*)
echo "Error: Unsupported machine type $MACHINE"
- return
+ return 1
;;
esac
if [ ! -f "$KERNEL" ]; then
echo "Error: Kernel image file $KERNEL doesn't exist"
cleanup
- return
+ return 1
fi
if [ "$FSTYPE" != "nfs" -a ! -f "$ROOTFS" ]; then
echo "Error: Image file $ROOTFS doesn't exist"
cleanup
- return
+ return 1
fi
if [ "$FSTYPE" = "nfs" ]; then
@@ -289,7 +289,7 @@ if [ "$FSTYPE" = "nfs" ]; then
runqemu-export-rootfs restart $ROOTFS
if [ $? != 0 ]; then
cleanup
- return
+ return 1
fi
NFSRUNNING="true"
fi
@@ -312,7 +312,7 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm
if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist"
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb --no-reboot $QEMU_UI_OPTIONS"
@@ -336,7 +336,7 @@ if [ "$MACHINE" = "qemux86" ]; then
if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist."
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
@@ -360,7 +360,7 @@ if [ "$MACHINE" = "qemux86-64" ]; then
if [ ! -d "$ROOTFS" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist."
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
@@ -401,7 +401,7 @@ if [ "$MACHINE" = "qemumips" -o "$MACHINE" = "qemumipsel" -o "$MACHINE" = "qemum
if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist"
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS"
@@ -422,7 +422,7 @@ if [ "$MACHINE" = "qemuppc" ]; then
if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist"
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs console=ttyS0 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD -cpu $CPU_SUBTYPE -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS"
@@ -442,7 +442,7 @@ if [ "$MACHINE" = "qemush4" ]; then
if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then
echo "Error: NFS mount point $ROOTFS doesn't exist"
cleanup
- return
+ return 1
fi
KERNCMDLINE="root=/dev/nfs console=ttySC1 noiotrap earlyprintk=sh-sci.1 console=tty nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
QEMUOPTIONS="$QEMU_NETWORK_CMD -M $MACHINE_SUBTYPE -no-reboot $QEMU_UI_OPTIONS -monitor null -serial vc -serial stdio"
@@ -469,7 +469,7 @@ fi
if [ "x$QEMUOPTIONS" = "x" ]; then
echo "Error: Unable to support this combination of options"
cleanup
- return
+ return 1
fi
if [ "x$CROSSPATH" = "x" ]; then
@@ -482,7 +482,7 @@ QEMUBIN=`which $QEMU 2> /dev/null`
if [ ! -x "$QEMUBIN" ]; then
echo "Error: No QEMU binary '$QEMU' could be found."
cleanup
- return
+ return 1
fi
NEED_GL=`ldd $QEMUBIN/$QEMU 2>&1 | grep libGLU`
@@ -498,7 +498,7 @@ if [ "$NEED_GL" != "" ]; then
echo "You need libGL.so and libGLU.so to exist in your library path to run the QEMU emulator.
Ubuntu package names are: libgl1-mesa-dev and libglu1-mesa-dev.
Fedora package names are: mesa-libGL-devel mesa-libGLU-devel."
- exit 1;
+ return 1;
fi
fi
@@ -508,7 +508,7 @@ do_quit() {
kill `cat $PIDFILE`
fi
cleanup
- return
+ return 1
}
DISTCCD=`which distccd 2> /dev/null`
@@ -562,8 +562,10 @@ echo "Running $QEMU..."
# -no-reboot is a mandatory option - see bug #100
echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT"
-
+ret=$?
cleanup
trap - INT TERM QUIT
+
+return $ret