diff options
author | Reto Buerki <reet@codelabs.ch> | 2012-12-09 10:50:28 +0100 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2013-01-17 16:54:54 +0100 |
commit | 74c0839ad6e0da6f299b65ed39fe2f21fa19caf9 (patch) | |
tree | a39ccf0d0be7d6198f13d455af71cdbc63caad94 | |
parent | 97265abaf0265d0cc59fb1be02e3239fca3daae3 (diff) | |
download | strongswan-74c0839ad6e0da6f299b65ed39fe2f21fa19caf9.tar.bz2 strongswan-74c0839ad6e0da6f299b65ed39fe2f21fa19caf9.tar.xz |
Run on_exit commands in FILO order
-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 |