set -e
# global variables
-GRML_LIVE_VERSION='0.9.21'
+GRML_LIVE_VERSION='0.9.22'
PN="$(basename $0)"
CMDLINE="$0 $@"
ISO_DATE="$(date +%Y-%m-%d)"
-i <iso_name> name of ISO
-I <src_directory> directory which provides files that should become
part of the chroot/ISO
+ -n skip generation of ISO
-o <output_directory> main output directory of the build process
-q skip mksquashfs
-r <release_name< release name
bailout() {
rm -f /var/run/fai/fai_softupdate_is_running \
/var/run/fai/FAI_INSTALLATION_IN_PROGRESS
+ [ -n "$SQUASHFS_STDERR" ] && rm -rf "$SQUASHFS_STDERR"
[ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}"
[ -n "$1" ] && EXIT="$1" || EXIT="1"
[ -n "$2" ] && eerror "$2">&2
# }}}
# command line parsing {{{
-while getopts "a:C:c:g:i:I:o:r:s:t:v:bBFuqVz" opt; do
+while getopts "a:C:c:g:i:I:o:r:s:t:v:bBFnquVz" opt; do
case "$opt" in
a) ARCH="$OPTARG" ;;
b) BUILD_ONLY=1 ;;
g) GRML_NAME="$OPTARG" ;;
i) ISO_NAME="$OPTARG" ;;
I) CHROOT_INSTALL="$OPTARG" ;;
+ n) SKIP_MKISOFS=1 ;;
o) OUTPUT="$OPTARG" ;;
q) SKIP_MKSQUASHFS=1 ;;
r) RELEASENAME="$OPTARG" ;;
[ -n "$VERBOSE" ] && echo " Using VERBOSE mode."
[ -n "$UPDATE" ] && echo " Executing UPDATE instead of fresh installation."
[ -n "$SKIP_MKSQUASHFS" ] && echo " Skipping creation of SQUASHFS file."
+ [ -n "$SKIP_MKISOFS" ] && echo " Skipping creation of ISO file."
[ -n "$BUILD_ONLY" ] && echo " Executing BUILD_ONLY instead of fresh installation or UPDATE."
[ -n "$BUILD_DIRTY" ] && echo " Executing BUILD_DIRTY to leave chroot untouched."
echo
fi
if [ -n "$UPDATE" -o -n "$BUILD_ONLY" ] ; then
- if ! [ -r "$CHROOT_OUTPUT/etc/grml_version" ] ; then
+ if ! [ -r "$CHROOT_OUTPUT/etc/debian_version" ] ; then
log "Error: does not look like you have a working chroot. Updating/building not possible."
eerror "Error: does not look like you have a working chroot. Updating/building not possible. (Drop -u/-b option?)"
eend 1
fi
einfo "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)."
+ log "Find FAI build logs at $(readlink -f /var/log/fai/$HOSTNAME/last)."
eend 0
fi
fi # BUILD_DIRTY?
# get rid of unnecessary files when building grml-small for final release:
if echo "$CLASSES" | grep -q GRML_SMALL ; then
- SQUASHFS_OPTIONS="$SQUASHFS_OUTPUT -e initrd.img* vmlinuz*"
+ SQUASHFS_OPTIONS="$SQUASHFS_OPTIONS -e initrd.img* vmlinuz*"
fi
- SQUASHFS_OUTPUT="$(mktemp -t grml-live.XXXXXX)"
+ SQUASHFS_STDERR="$(mktemp -t grml-live.XXXXXX)"
+
log "mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS $SQUASHFS_ZLIB"
if mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/"${GRML_NAME}".squashfs \
- -noappend $SQUASHFS_OPTIONS $SQUASHFS_ZLIB 2>"${SQUASHFS_OUTPUT}" ; then
+ -noappend $SQUASHFS_OPTIONS $SQUASHFS_ZLIB 2>"${SQUASHFS_STDERR}" ; then
echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/filesystem.module
log "Finished execution of stage 'squashfs' [$(date)]"
einfo "Finished execution of stage 'squashfs'" ; eend 0
- rm -f "${SQUASHFS_OUTPUT}"
else
log "There was an error executing stage 'squashfs' [$(date)]:"
- log "$(cat $SQUASHFS_OUTPUT)"
+ log "$(cat $SQUASHFS_STDERR)"
eerror "There was an error executing stage 'squashfs':" ; eend 1
- cat "${SQUASHFS_OUTPUT}"
- rm -f "${SQUASHFS_OUTPUT}"
+ cat "${SQUASHFS_STDERR}"
bailout
fi
if [ -f "${ISO_OUTPUT}/${ISO_NAME}" -a -z "$UPDATE" -a -z "$BUILD_ONLY" -a -z "$BUILD_DIRTY" -a "$FORCE_ISO_REBUILD" = "false" ] ; then
log "$ISO_OUTPUT/${ISO_NAME} exists already, skipping stage 'iso build'"
ewarn "$ISO_OUTPUT/${ISO_NAME} exists already, skipping stage 'iso build'" ; eend 0
+elif [ -n "$SKIP_MKISOFS" ] ; then
+ log "Skipping stage 'iso build' as requested via option -n"
+ ewarn "Skipping stage 'iso build' as requested via option -n" ; eend 0
else
mkdir -p "$ISO_OUTPUT" || bailout 6 "Problem with creating $ISO_OUTPUT for stage 'iso build'"