Adjust trap handling to get clean exit.
[grml-live.git] / grml-live
index 95e3dab..85b001c 100755 (executable)
--- a/grml-live
+++ b/grml-live
@@ -20,10 +20,11 @@ else
 fi
 
 # exit on any error:
-set -e
+# disable for now since it seems to cause some problems
+# set -e
 
 # global variables
-GRML_LIVE_VERSION='0.14.0'
+GRML_LIVE_VERSION='0.14.1'
 PN="$(basename $0)"
 CMDLINE="$0 $@"
 SOURCES_LIST_FILE='/etc/grml/fai/apt/sources.list'
@@ -131,18 +132,30 @@ LIVE_CONF=/etc/grml/grml-live.conf
 . $LIVE_CONF
 # }}}
 
+# umount all directories {{{
+umount_all() {
+   # make sure we don't leave any mounts - FAI doesn't remove them always
+   umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true
+   umount $CHROOT_OUTPUT/sys  2>/dev/null || /bin/true
+   umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true
+   umount $CHROOT_OUTPUT/dev 2>/dev/null || /bin/true
+   [ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}"
+}
+# }}}
+
 # clean exit {{{
 bailout() {
   rm -f /var/run/fai/fai_softupdate_is_running \
         /var/run/fai/FAI_INSTALLATION_IN_PROGRESS
   [ -n "$SQUASHFS_STDERR" ]  && rm -rf "$SQUASHFS_STDERR"
-  [ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}"
+  umount_all
   [ -n "$1" ] && EXIT="$1" || EXIT="1"
   [ -n "$2" ] && eerror "$2">&2
   log "------------------------------------------------------------------------------"
   exit "$EXIT"
 }
 trap bailout 1 2 3 3 6 9 14 15
+trap umount_all EXIT
 # }}}
 
 # log file stuff {{{
@@ -546,15 +559,10 @@ else
       # Remove all FAI logs from chroot if class RELEASE is used:
       if [ -f "$CHROOT_OUTPUT"/etc/grml_fai_release ] ; then
          rm -rf "$CHROOT_OUTPUT"/var/log/fai/*
+         rm -f "$CHROOT_OUTPUT"/var/log/install_packages.list
       fi
 
-      # make sure we don't leave any mounts - FAI doesn't remove them always
-      umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true
-      umount $CHROOT_OUTPUT/sys  2>/dev/null || /bin/true
-      umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true
-      umount $CHROOT_OUTPUT/dev 2>/dev/null || /bin/true
-
-      [ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}"
+      umount_all
 
       # notice: 'fai dirinstall' does not seem to exit appropriate, so:
       ERROR=''