From ea8df13abc59d9a9bb36ad03e11c3467762443e3 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Mon, 27 Dec 2010 19:41:09 +0100 Subject: [PATCH] hooks/{instsoft,updatebase}.GRMLBASE: be more careful about BUILD_ONLY environment. If BUILD_ONLY is available in the environment then we do not want to update any packages but just build the ISO. The script instsoft.GRMLBASE is being executed *after* updatebase.GRMLBASE and we run "skiptask instsoft" from updatebase.GRMLBASE. But this might fail if the script exists too early due to errors. This commit adds some further checks and also checks for BUILD_ONLY inside instsoft.GRMLBASE. Quoting ~log/fai/grml/softupdate-20101227_181604/fai.log from a failed execution: [...] Calling hook: updatebase.GRMLBASE Action softupdate of FAI (hooks/updatebase.GRMLBASE) via grml-live running mount: proc already mounted or /linuxuser/2010.12//grml_2010.12-rc1/grml_chroot/proc busy mount: according to mtab, proc is already mounted on /linuxuser/2010.12/grml_2010.12-rc1/grml_chroot/proc updatebase.GRMLBASE FAILED with exit code 32. Skiping task_updatebase Calling hook: instsoft.GRMLBASE Action softupdate of FAI (hooks/instsoft.GRMLBASE) via grml-live running Get:1 http://deb.grml.org grml-stable Release.gpg [197 B] [...] --- etc/grml/fai/config/hooks/instsoft.GRMLBASE | 8 ++++++++ etc/grml/fai/config/hooks/updatebase.GRMLBASE | 24 +++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/etc/grml/fai/config/hooks/instsoft.GRMLBASE b/etc/grml/fai/config/hooks/instsoft.GRMLBASE index 5dc3433..c8150be 100755 --- a/etc/grml/fai/config/hooks/instsoft.GRMLBASE +++ b/etc/grml/fai/config/hooks/instsoft.GRMLBASE @@ -9,6 +9,14 @@ set -u set -e +# if hooks/updatebase.GRMLBASE fails for whatever reason +# and can't skip instsoft.GRMLBASE we have to make sure +# we exit here as well +if [ -n "$BUILD_ONLY" ] ; then + "Exiting hooks/instsoft.GRMLBASE as BUILD_ONLY environment is set." + exit 0 +fi + if [ "$FAI_ACTION" = "softupdate" ] ; then echo "Action $FAI_ACTION of FAI (hooks/instsoft.GRMLBASE) via grml-live running" diff --git a/etc/grml/fai/config/hooks/updatebase.GRMLBASE b/etc/grml/fai/config/hooks/updatebase.GRMLBASE index cb56f07..6cf2c9b 100755 --- a/etc/grml/fai/config/hooks/updatebase.GRMLBASE +++ b/etc/grml/fai/config/hooks/updatebase.GRMLBASE @@ -24,17 +24,27 @@ if [ "$FAI_ACTION" = "softupdate" ] ; then ## we want to use our own sources.list: skiptask updatebase - ## taken from FAI's lib/updatebase: + ## based on FAI's lib/updatebase: # some packages must access /proc even in chroot environment - mount -t proc proc $FAI_ROOT/proc + if ! [ -d $FAI_ROOT/proc/1 ] ; then + mount -t proc proc $FAI_ROOT/proc || true + fi # some packages must access /sys even in chroot environment - mount -t sysfs sysfs $FAI_ROOT/sys + if ! [ -d $FAI_ROOT/sys/kernel ] ; then + mount -t sysfs sysfs $FAI_ROOT/sys + fi # if we are using udev, also mount it into $FAI_ROOT - [ -f /etc/init.d/udev ] && mount --bind /dev $FAI_ROOT/dev - mount -t devpts devpts $FAI_ROOT/dev/pts + if [ -f /etc/init.d/udev ] ; then + mount --bind /dev $FAI_ROOT/dev || true + fi - # skip the task if we want to build a new ISO only: - [ -n "$BUILD_ONLY" ] && skiptask instsoft || /bin/true + mount -t devpts devpts $FAI_ROOT/dev/pts || true + + # skip the task if we want to build a new ISO only, + # this means we do NOT update any packages + if [ -n "$BUILD_ONLY" ] ; then + skiptask instsoft || true + fi exit # make sure we don't continue behind the following "fi" fi -- 2.1.4