# we want to execute all the functions only once, simple check for it:
stage() {
- if grep -q done "$STAGES/$1" 2>/dev/null ; then
- ewarn "Notice: stage $1 has been executed already, skipping execution therefore." ; eend 0
- return 1
- else
+ if [ -n "$2" ] ; then
echo "$2" > "$STAGES/$1"
return 0
+ elif grep -q done "$STAGES/$1" 2>/dev/null ; then
+ ewarn "Notice: stage $1 has been executed already, skipping execution therefore." ; eend 0
+ return 1
fi
}
# }}}
# }}}
# now execute all the functions {{{
- stage mkfs && mkfs && stage mkfs done || bailout
- stage tunefs && tunefs && stage tunefs done || bailout
- stage mount_target && mount_target && stage mount_target done || bailout
- stage debootstrap_system && debootstrap_system && stage debootstrap_system done || bailout
- stage preparechroot && preparechroot && stage preparechroot done || bailout
- stage chrootscript && chrootscript && stage chrootscript done || bailout
- stage grub_install && grub_install && stage grub_install done || bailout
- stage umount_chroot && umount_chroot && stage umount_chroot done || bailout
- stage fscktool && fscktool && stage fscktool done || bailout
+for i in mkfs tunefs mount_target debootstrap_system preparechroot \
+ chrootscript grub_install umount_chroot fscktool ; do
+ if stage $i ; then
+ $i && stage $i done || bailout
+ fi
+done
# }}}
# stages {{{