From d4a1c7575d72865cac1a6b5e22eccac6fb499c23 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 27 Jun 2015 05:30:46 +0100 Subject: sanity check for build environment, script does not burn everything anymore when you exit chroot giving you chance for a closer look --- buildbot | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/buildbot b/buildbot index d82729c..dd0351f 100755 --- a/buildbot +++ b/buildbot @@ -12,19 +12,13 @@ # : setup profiles # : auto push built packages to repos (maybe, really needed?!?) -lowerdir="kogaiondevelx64" -upperdir="upperdirx64" -overlaydir="overlaydirx64" -env_user="root" -env_targets="$@" -env_build_cmd="emerge -av "$env_targets"" +export local lowerdir="kogaiondevelx64" +export local upperdir="upperdirx64" +export local overlaydir="overlaydirx64" +export local envuser="root" +export local envtargets="$@" +export local envbuildcmd="emerge -av "$envtargets"" -envprepare () { - # create the directories needed for squashfs + overlayfs mount - mkdir "$lowerdir" - mkdir "$upperdir" - mkdir "$overlaydir" -} envstart () { # mount ro squashfs + add rw overlayfs layer to enable clean package building @@ -52,7 +46,7 @@ envstop () { envbuild () { # build packages in squashfs + overlayfs chroot - chroot "$overlaydir" su - "$env_user" -c "$env_build_cmd" + chroot "$overlaydir" su - "$envuser" -c "$envbuildcmd" } envchroot() { @@ -64,7 +58,7 @@ envchroot() { echo -e "#################################################################" echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" echo -e "#################################################################" - echo -e "# EXITING NOW WILL DESTROY ALL YOUR WORK #" + echo -e "# NEXT RUN OF THIS SCRIPT WILL DESTROY ALL YOUR WORK #" echo -e "# DO NOT EXIT CHROOT UNTIL ALL PACKAGES ARE PUSHED TO REPOS #" echo -e "# OR, IN CASE OF BUILD FAILURES, UNTIL ALL FIXES ARE COMMITED #" echo -e "#################################################################" @@ -72,23 +66,34 @@ envchroot() { echo -e "#################################################################" echo -e "" echo -e "" - chroot "$overlaydir" su - "$env_user" + chroot "$overlaydir" su - "$envuser" } -envcleanup () { - # cleanup build environment - rm -rf "$overlaydir" - rm -rf "$upperdir" - rm -rf "$lowerdir" +envprepare () { + # first let's check our environment for sanity + # if safe, trigger start && break the loop to build packages + # else trigger stop && cleanup && check again + while : true ; do + if [[ ! -d "$lowerdir" && ! -d "$upperdir" && ! -d "$overlaydir" ]]; then + for i in "$lowerdir" "$upperdir" "$overlaydir" ; do + mkdir "$i" + done + envstart + break + elif [[ -d "$overlaydir" && -f "$overlaydir/usr/bin/emerge" ]] ; then + envstop + for i in "$lowerdir" "$upperdir" "$overlaydir" ; do + rm -rf "$i" + done + continue + fi + done } main () { envprepare - envstart envbuild envchroot - envstop - envcleanup } main -- cgit v1.2.3