diff options
-rwxr-xr-x | testing/scripts/build-baseimage | 5 | ||||
-rwxr-xr-x | testing/scripts/build-umlhostfs | 1 | ||||
-rwxr-xr-x | testing/scripts/build-umlrootfs | 7 | ||||
-rwxr-xr-x | testing/scripts/function.sh | 9 |
4 files changed, 11 insertions, 11 deletions
diff --git a/testing/scripts/build-baseimage b/testing/scripts/build-baseimage index 81dd6f0a4..a555d2cb6 100755 --- a/testing/scripts/build-baseimage +++ b/testing/scripts/build-baseimage @@ -30,6 +30,7 @@ execute "qemu-img create -f qcow2 $ROOTFS ${ROOTFSSIZE}M" log_action "Connecting image to NBD device $NBDEV" execute "qemu-nbd -c $NBDEV $ROOTFS" +do_on_exit qemu-nbd -d $NBDEV log_action "Partitioning disk" sfdisk /dev/nbd0 -D -uM >>$LOGFILE 2>&1 << EOF @@ -49,14 +50,12 @@ execute "mkfs.ext3 $NBDPARTITION" log_action "Mounting $NBDPARTITION to $LOOPDIR" execute "mount $NBDPARTITION $LOOPDIR" +do_on_exit graceful_umount $LOOPDIR log_action "Using $CACHEDIR as archive for apt" mkdir -p $APTCACHE execute "mount -o bind $CACHEDIR $APTCACHE" - do_on_exit graceful_umount $APTCACHE -do_on_exit graceful_umount $LOOPDIR -do_on_exit qemu-nbd -d $NBDEV log_action "Running debootstrap ($ROOTFSSUITE, $ROOTFSARCH)" execute "debootstrap --arch=$ROOTFSARCH --include=$PACKAGES $ROOTFSSUITE $LOOPDIR $ROOTFSMIRROR" diff --git a/testing/scripts/build-umlhostfs b/testing/scripts/build-umlhostfs index d3cb2f651..ed026b6e8 100755 --- a/testing/scripts/build-umlhostfs +++ b/testing/scripts/build-umlhostfs @@ -40,6 +40,7 @@ else fi # just to be sure +do_on_exit qemu-nbd -d $NBDEV do_on_exit umount $LOOPDIR for host in $HOSTS diff --git a/testing/scripts/build-umlrootfs b/testing/scripts/build-umlrootfs index 6131c1d1c..f6bcaa78e 100755 --- a/testing/scripts/build-umlrootfs +++ b/testing/scripts/build-umlrootfs @@ -37,22 +37,21 @@ execute "cp $ROOTFS $BASE" log_action "Connecting base image to NBD device $NBDEV" execute "qemu-nbd -c $NBDEV $BASE" +do_on_exit qemu-nbd -d $NBDEV partprobe $NBDEV log_action "Mounting $NBDPARTITION to $LOOPDIR" execute "mount $NBDPARTITION $LOOPDIR" +do_on_exit umount $LOOPDIR log_action "Mounting proc filesystem to $LOOPDIR/proc" execute "mount -t proc none $LOOPDIR/proc" +do_on_exit umount $LOOPDIR/proc mkdir -p $LOOPDIR/root/compile log_action "Mounting $ROOTFSCOMPILEDIR as /root/compile" execute "mount -o bind $ROOTFSCOMPILEDIR $LOOPDIR/root/compile" - do_on_exit umount $LOOPDIR/root/compile -do_on_exit umount $LOOPDIR/proc -do_on_exit umount $LOOPDIR -do_on_exit qemu-nbd -d $NBDEV echo "Installing software from source" RECPDIR=$TESTDIR/testing/scripts/recipes diff --git a/testing/scripts/function.sh b/testing/scripts/function.sh index 2a801a7a5..649e32b65 100755 --- a/testing/scripts/function.sh +++ b/testing/scripts/function.sh @@ -97,16 +97,17 @@ declare -a on_exit_items # perform registered actions on exit on_exit() { - for i in "${on_exit_items[@]}" + for ((onex=${#on_exit_items[@]}-1; onex>=0; onex--)) do - eval $i >>$LOGFILE 2>&1 + echo "On_Exit: ${on_exit_items[$onex]}" >>$LOGFILE + ${on_exit_items[$onex]} >>$LOGFILE 2>&1 done on_exit_items="" trap - EXIT } # register a command to execute when the calling script terminates. The -# registered commands are called in FIFO order. +# registered commands are called in FILO order. # $* - command to register do_on_exit() { @@ -126,7 +127,7 @@ graceful_umount() [ ! $secs ] && secs=5 let steps=$secs*100 - for i in `seq 1 $steps` + for st in `seq 1 $steps` do umount $1 >>$LOGFILE 2>&1 mount | grep $1 >/dev/null 2>&1 |