diff --git a/build.sh b/build.sh index d094eee..a96f4e4 100755 --- a/build.sh +++ b/build.sh @@ -158,7 +158,17 @@ do done term() { - true; #TODO: Cleanup + if [ "$?" -ne 0 ]; then + log "Build failed" + else + log "Build finished" + fi + unmount "${STAGE_WORK_DIR}" + if [ "$STAGE" = "export-image" ]; then + for img in "${STAGE_WORK_DIR}/"*.img; do + unmount_image "$img" + done + fi } trap term EXIT INT TERM diff --git a/scripts/common b/scripts/common index c305ee2..702576f 100644 --- a/scripts/common +++ b/scripts/common @@ -58,9 +58,12 @@ unmount(){ export -f unmount unmount_image(){ - sync - sleep 1 - LOOP_DEVICE=$(losetup --list | grep "$1" | cut -f1 -d' ') + if command -v udevadm >/dev/null 2>&1; then + udevadm settle 10 + else + sleep 1 + fi + LOOP_DEVICE=$(losetup -n -O NAME -j "$1") if [ -n "$LOOP_DEVICE" ]; then for part in "$LOOP_DEVICE"p*; do if DIR=$(findmnt -n -o target -S "$part"); then