Adjust version string in grml-live script itself
[grml-live.git] / grml-live
index 67b339f..640c760 100755 (executable)
--- a/grml-live
+++ b/grml-live
@@ -4,7 +4,7 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2 or any later version.
-# Latest change: Sun Dec 09 18:18:27 CET 2007 [mika]
+# Latest change: Sun Jan 20 22:30:49 CET 2008 [mika]
 ################################################################################
 
 # read configuration files, set some misc variables {{{
@@ -15,7 +15,7 @@ export LC_ALL=C
 # exit on any error:
 set -e
 
-GRML_LIVE_VERSION='0.0.12'
+GRML_LIVE_VERSION='0.2'
 CMDLINE="$0 $@"
 ISO_DATE="$(date +%Y-%m-%d)"
 
@@ -42,6 +42,8 @@ fi
 VERBOSE=''
 FORCE=''
 UPDATE=''
+BUILD_ONLY=''
+HOSTNAME=''
 
 if [ -r /etc/grml/lsb-functions ] ; then
    . /etc/grml/lsb-functions
@@ -62,7 +64,8 @@ PN=$(basename $0)
 # clean exit {{{
 bailout() {
   [ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_OUTPUT}/${MIRROR_DIRECTORY}"
-  rm -f /var/run/fai/fai_softupdate_is_running /var/run/fai/FAI_INSTALLATION_IN_PROGRESS
+  rm -f /var/run/fai/fai_softupdate_is_running \
+        /var/run/fai/FAI_INSTALLATION_IN_PROGRESS
   [ -n "$1" ] && EXIT="$1" || EXIT="1"
   [ -n "$2" ] && eerror "$2">&2
   log "------------------------------------------------------------------------------"
@@ -90,7 +93,7 @@ if [ -z "$LOGFILE" ] ; then
 fi
 touch $LOGFILE
 chown root:adm $LOGFILE
-chmod 640 $LOGFILE
+chmod 664 $LOGFILE
 
 NFSROOT_CONF=/etc/grml/fai/make-fai-nfsroot.conf
 
@@ -154,7 +157,7 @@ $PN - build process script for generating a (grml based) Linux Live-ISO
 Usage: $PN [-a <architecture>] [-c <classe[s]>] [-g <grml_name>] \\
                  [-i <iso_name> ] [-o <output_directory>] [-s <suite>] \\
                  [-t <template_directory>] [-s <suite>] \\
-                 [-v <version_number>] [-FVhu]
+                 [-v <version_number>] [-bFVhu]
 
 Usage examples:
 
@@ -176,9 +179,10 @@ http://grml.org/bugs/
 
 # command line parsing {{{
 
-while getopts "a:C:c:g:i:o:r:s:t:v:FhuVz" opt; do
+while getopts "a:C:c:g:i:o:r:s:t:v:bFhuVz" opt; do
   case "$opt" in
     a) ARCH="$OPTARG" ;;
+    b) BUILD_ONLY=1 ;;
     c) CLASSES="$OPTARG" ;;
     C) CONFIG="$OPTARG" ;;
     g) GRML_NAME="$OPTARG" ;;
@@ -261,8 +265,9 @@ if [ -z "$FORCE" ] ; then
    [ -n "$FAI_ARGS" ]      && echo "  additional arguments for FAI: $FAI_ARGS"
    [ -n "$LOGFILE" ]       && echo "  Logging to file:   $LOGFILE"
    [ -n "$VERBOSE" ]       && echo "  Using VERBOSE mode."
-   [ -n "$SQUASHFS_ZLIB" ] && echo "  Using ZLIB (instead od LZMA) compression."
+   [ -n "$SQUASHFS_ZLIB" ] && echo "  Using ZLIB (instead of LZMA) compression."
    [ -n "$UPDATE" ]        && echo "  Executing UPDATE instead of fresh installation."
+   [ -n "$BUILD_ONLY" ]    && echo "  Executing BUILD_ONLY instead of fresh installation or UPDATE."
    echo
    echo -n "Is this ok for you? [y/N] "
    read a
@@ -353,22 +358,22 @@ fi
 # CHROOT_OUTPUT - execute FAI {{{
 [ -n "$CHROOT_OUTPUT" ] || CHROOT_OUTPUT="$OUTPUT/grml_chroot"
 
-if [ -n "$UPDATE" ] ; then
+if [ -n "$UPDATE" -o -n "$BUILD_ONLY" ] ; then
    FAI_ACTION=softupdate
 else
    FAI_ACTION=dirinstall
 fi
 
-if [ -n "$UPDATE" ] ; then
+if [ -n "$UPDATE" -o -n "$BUILD_ONLY" ] ; then
    if ! [ -r "$CHROOT_OUTPUT/etc/grml_version" ] ; then
-      log "Error: does not look like you have a working chroot. Updating not possible."
-      eerror "Error: does not look like you have a working chroot. Updating not possible. (Drop -u option?)"
+      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
       bailout 20
    fi
 fi
 
-if [ -d "$CHROOT_OUTPUT/bin" -a -z "$UPDATE" ] ; then
+if [ -d "$CHROOT_OUTPUT/bin" -a -z "$UPDATE" -a -z "$BUILD_ONLY" ] ; then
    log "$CHROOT_OUTPUT exists already, skipping stage 'fai dirinstall'"
    ewarn "$CHROOT_OUTPUT exists already, skipping stage 'fai dirinstall'" ; eend 0
 else
@@ -380,16 +385,16 @@ else
    fi
 
    log "Executed FAI command line:"
-   log "fai $VERBOSE -C $GRML_FAI_CONFIG -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
-   fai $VERBOSE -C "$GRML_FAI_CONFIG" -c"$CLASSES" -u "$HOSTNAME" $FAI_ACTION "$CHROOT_OUTPUT" $FAI_ARGS | tee -a $LOGFILE
+   log "BUILD_ONLY=$BUILD_ONLY fai $VERBOSE -C $GRML_FAI_CONFIG -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
+   BUILD_ONLY="$BUILD_ONLY" fai $VERBOSE -C "$GRML_FAI_CONFIG" -c"$CLASSES" -u "$HOSTNAME" $FAI_ACTION "$CHROOT_OUTPUT" $FAI_ARGS | tee -a $LOGFILE
 
    log "Setting /etc/grml_version to $GRML_NAME $VERSION Release Codename $RELEASENAME [$ISO_DATE]"
    echo "$GRML_NAME $VERSION Release Codename $RELEASENAME [$ISO_DATE]" > $CHROOT_OUTPUT/etc/grml_version
    chmod 644 $CHROOT_OUTPUT/etc/grml_version
 
    # Remove all FAI logs from chroot if class RELEASE is used:
-   if [ -f $CHROOT_OUTPUT/etc/grml_fai_release ] ; then
-      rm -rf $CHROOT_OUTPUT/var/log/fai/*
+   if [ -f "$CHROOT_OUTPUT"/etc/grml_fai_release ] ; then
+      rm -rf "$CHROOT_OUTPUT"/var/log/fai/*
    fi
 
    umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true
@@ -431,7 +436,7 @@ mkdir -p "$BUILD_OUTPUT" || bailout 6 "Problem with creating $BUILD_OUTPUT for s
 
 # i386:
 if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then
-   if [ -d "$BUILD_OUTPUT"/boot -a -z "$UPDATE" ] ; then
+   if [ -d "$BUILD_OUTPUT"/boot -a -z "$UPDATE" -a -z "$BUILD_ONLY" ] ; then
       log "$BUILD_OUTPUT/boot exists already, skipping stage 'boot'"
       ewarn "$BUILD_OUTPUT/boot exists already, skipping stage 'boot'" ; eend 0
    else
@@ -533,7 +538,7 @@ else
    eerror 'Error: Unsupported ARCH, sorry. Want to support it? Contribute!' ; eend 1
 fi
 
-if [ -f "$BUILD_OUTPUT"/live/grml.squashfs -a -z "$UPDATE" ] ; then
+if [ -f "$BUILD_OUTPUT"/live/grml.squashfs -a -z "$UPDATE" -a -z "$BUILD_ONLY" ] ; then
    log "$BUILD_OUTPUT/live exists already, skipping stage 'squashfs'"
    ewarn "$BUILD_OUTPUT/live exists already, skipping stage 'squashfs'" ; eend 0
 else
@@ -542,8 +547,13 @@ else
    [ -f "$CHROOT_OUTPUT/base.tgz" ] && rm -f "$CHROOT_OUTPUT/base.tgz"
 
    # execute squashfs:
-   log "mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend"
-   mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend $SQUASHFS_OPTIONS $SQUASHFS_ZLIB
+   if mksquashfs --help 2>&1 | grep -- -no-progress ; then
+      log "mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend -no-progress"
+      mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend -no-progress $SQUASHFS_OPTIONS $SQUASHFS_ZLIB
+   else
+      log "mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend"
+      mksquashfs $CHROOT_OUTPUT/* $BUILD_OUTPUT/live/grml.squashfs -noappend $SQUASHFS_OPTIONS $SQUASHFS_ZLIB
+   fi
    log "Finished execution of stage 'squashfs' [$(date)]"
    einfo "Finished execution of stage 'squashfs'" ; eend 0
 fi
@@ -563,7 +573,7 @@ elif [ "$BOOT_METHOD" = "grub" ] ; then
    BOOT_FILE="boot/grub/stage2_eltorito"
 fi
 
-if [ -f "${ISO_OUTPUT}/${ISO_NAME}" -a -z "$UPDATE" ] ; then
+if [ -f "${ISO_OUTPUT}/${ISO_NAME}" -a -z "$UPDATE" -a -z "$BUILD_ONLY" ] ; then
    log "$ISO_OUTPUT exists already, skipping stage 'iso build'"
    ewarn "$ISO_OUTPUT exists already, skipping stage 'iso build'" ; eend 0
 else