#
set -e
+set -x
die() {
echo "error: $1" >&2
umount $mountdir
qemu-img convert -c -o compat=0.10 -O qcow2 $raw_imgfile $imgfile
+
+ if dmsetup table | grep $loopdevice; then
+ dmsetup clear $loopdevice || true
+ fi
}
# cleanup (umount) the image
mount | grep $mountdir/proc && umount $mountdir/proc
mount | grep $mountdir && umount $mountdir
if [ -f $raw_imgfile ]; then
- kpartx -d $raw_imgfile || true
+ kpartx -dv $raw_imgfile || true
fi
rm -f $raw_imgfile
rm -rf $mountdir
}
-set -x
+exitcode=""
+error_trap()
+{
+ local rc=$?
+
+ set +e
+
+ if [ -z "$exitcode" ]; then
+ exitcode=$rc
+ fi
+
+ cleanup
+
+ echo "Image build failed with $exitcode"
+
+ exit $exitcode
+}
main() {
cleanup
+
+ trap "error_trap" EXIT SIGTERM
+
download
setup
modify
+
+ trap - EXIT SIGTERM
cleanup
echo "the modified image is found here: $imgfile"