#!/bin/bash readonly MODE='wipe' # total wipe of work dir optionally preserving package cache readonly PRESERVE_CACHE='false' # preserve package cache in 'wipe' mode # readonly MODE='rebuild' # full update rebuild preserving work dir # readonly MODE='tweak' # apply chroot customization tweaks only readonly TARGET='dual' # dual-arch (default) # readonly TARGET='i686' # i686 target only # readonly TARGET='x86_64' # x86_64 target only # readonly EDITION='OpenRC/CLI' # OpenRC/CLI init/WM-DE pair # readonly EDITION='OpenRC/LXDE' # OpenRC/LXDE init/WM-DE pair readonly EDITION='SystemD/CLI' # SystemD/CLI init/WM-DE pair (default) # readonly EDITION='SystemD/LXDE' # SystemD/LXDE init/WM-DE pair readonly TALKING='' # speech and braille disabled (default) # readonly TALKING='-S' # speech and braille enabled readonly CACHE='' # net-install (default) # readonly CACHE='-O' # offline install readonly VERSION="`date +%Y.%m.%d`" # for ISO filename (default) # readonly VERSION="`date +%Y.%m.%d-%H.%M`-alpha" ((`id -u`)) && echo "This script must be run with root privileges." && exit # cleanup in case of previous aborted run while pids=$(pidof ./rebuild.sh || pidof sudo ./rebuild.sh) && pids=${pids/$PPID/} && [ "$pids" ] do for pid in ${pids/$PPID/} ; do sudo kill -9 $pid ; done ; sleep 1 ; done for work_dir in "$PWD/work/i686" "$PWD/work/x86_64" do declare -a mountpoints=() for mnt in dev/pts dev/shm dev proc run sys tmp; do mountpoint=$(findmnt --noheadings --output="TARGET" "${work_dir}/root-image/${mnt}" || true) if [[ "${mountpoint}" != "" ]] ; then mountpoints=( ${mountpoints[@]} "${mountpoint}" ) ; fi ; done for mountpoint in ${mountpoints[@]} ; do umount "${mountpoint}" ; done ; done if [ "$MODE" == 'wipe' ] then if [ "$PRESERVE_CACHE" == 'true' ] then for arch in i686 x86_64 do isorepo=./work/${arch}/root-image/isorepo cache_dir=./work/isorepo-${arch} mkdir -p $cache_dir [ -d $isorepo ] && mv $isorepo/* $cache_dir/ 2> /dev/null done fi rm -rf ./work/${arch} 2> /dev/null for arch in i686 x86_64 do isorepo=./work/${arch}/root-image/isorepo cache_dir=./work/isorepo-${arch} if [ "$PRESERVE_CACHE" == 'true' ] then if [ "$TARGET" == 'dual' -o "$TARGET" == "${arch}" ] then mkdir -p $isorepo mv $cache_dir/* $isorepo/ rmdir $cache_dir fi else rmdir $cache_dir 2> /dev/null fi done elif [ "$MODE" == 'rebuild' ] then rm -v ./work/build.make_* elif [ "$MODE" == 'tweak' ] then rm work/build.make_customize_root_image_$TARGET \ work/build.make_prepare_$TARGET \ work/build.make_iso* 2> /dev/null fi CMD="./build.sh -v -E $EDITION -T $TARGET $TALKING $CACHE -V $VERSION $*" if ${CMD} then echo "success" ; rm ./continue.sh 2> /dev/null else echo -e "failure executing:\n\t${CMD}\ncontinue with:\n\t./continue.sh [args-to-build.sh]" echo -e "#!/bin/bash\n\n${CMD} \$*" > ./continue.sh chmod a+x ./continue.sh fi