mvallim / live-custom-ubuntu-from-scratch

(Yes, the project is still alive 😃) This procedure shows how to create a bootable and installable Ubuntu Live (along with the automatic hardware detection and configuration) from scratch.
https://mvallim.github.io/live-custom-ubuntu-from-scratch/
GNU General Public License v3.0
397 stars 186 forks source link

set -e # exit on error during chroot processes leaves host OS disfunctional #48

Open asharrem opened 1 year ago

asharrem commented 1 year ago

During chroot_build.sh, any errors - perhaps due to missing packages (lupin-casper - 22.04) - will exit before chroot_exit_teardown() can cleanup. This leaves the build system in a dis-functional state - in the case of building locally. Adding trap chroot_exit_teardown ERR to build.sh is a way of exiting chroot_build.sh cleanly.

set -eE                  # exit on error
set -o pipefail         # exit on pipeline error
set -u                  # treat unset variable as error
trap chroot_exit_teardown ERR

removing the chroot during 'debootstap()' - before 'debootstap' - also cleans the build.sh workspace in case of EXIT on errors.

function debootstrap() {
    echo "=====> running debootstrap ... will take a couple of minutes ..."
    sudo rm -r chroot
asharrem commented 1 year ago

The trap as I defined is rather crude, as any error will perform chroot_exit_teardown(), Creates a potential loop if chroot_enter_setup() has not completed. A flag variable could conditionally perform chroot_exit_teardown() - or conditionally the trap itself.

kgilmer commented 1 year ago

It would be nice to get this fixed, thanks for the tips @asharrem . What I've done in the past is just move the whole chroot to /tmp upon dev iterations but it would be nice to have a better way.