Support setting releasename, version number; renamed verbose option from -v to -V
[grml-live.git] / grml-live
index f476726..ae0e99e 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: Wed Sep 19 23:41:52 CEST 2007 [mika]
+# Latest change: Wed Sep 19 23:59:48 CEST 2007 [mika]
 ################################################################################
 
 # read configuration files, set some misc variables {{{
@@ -28,10 +28,10 @@ FORCE=''
 if [ -r /etc/grml/lsb-functions ] ; then
    . /etc/grml/lsb-functions
 else
-   einfo() { echo "  [*] $*" ;}
+   einfo()  { echo "  [*] $*" ;}
    eerror() { echo "  [!] $*">&2 ;}
-   ewarn() { echo "  [x] $*" ;}
-   eend() { return 0 ; }
+   ewarn()  { echo "  [x] $*" ;}
+   eend()   { return 0 ;}
 fi
 
 # source main configuration file:
@@ -39,12 +39,10 @@ LIVE_CONF=/etc/grml/grml-live.conf
 . $LIVE_CONF
 
 PN=$(basename $0)
-# TMPFILE=$(mktemp)
 # }}}
 
 # clean exit {{{
 bailout() {
-  # rm -f "$TMPFILE"
   [ -n "$MIRROR_DIRECTORY" ] && umount "${CHROOT_TARGET}/${MIRROR_DIRECTORY}"
   [ -n "$1" ] && EXIT="$1" || EXIT="1"
   [ -n "$2" ] && eerror "$2">&2
@@ -60,8 +58,8 @@ trap bailout 1 2 3 15
 [ -n "$CLASSES" ]  || CLASSES="GRML,I386"
 [ -n "$TARGET" ] || bailout 1 "${PN}: \$TARGET not specified. Please adjust $LIVE_CONF. Exiting."
 
-[ -n "$VERSION" ]  || VERSION="0.1"
-[ -n "$CODENAME" ] || CODENAME="grml-live rocks"
+[ -n "$VERSION" ]  || VERSION="0.0.1"
+[ -n "$RELEASENAME" ] || RELEASENAME="grml-live rocks"
 
 [ -n "$LOGDIR" ] || LOGDIR="/var/log/fai/dirinstall/$HOSTNAME"
 [ -d "$LOGDIR" ] || mkdir $LOGDIR
@@ -123,7 +121,8 @@ usage()
   echo "
 $PN - build process script for generating a (grml based) Linux Live-ISO
 
-Usage: $PN [-c <classe[s]>] [-t <target_directory>] [-s <suite> [-Fvh]
+Usage: $PN [-c <classe[s]>] [-i <iso_name> ] [-r <release_name>] \\
+       [-s <suite>] [-t <target_directory>] [-v <version_number>] [-Fvh]
 
 Usage examples:
 
@@ -131,7 +130,8 @@ Usage examples:
     $PN -c GRMLBASE,GRML_X,I386 -t /grml/
     $PN -c GRMLBASE,I386 -t /dev/shm/grml
     $PN -c GRMLBASE,GRML_SMALL,I386
-    $PN -s sid -c GRMLBASE,I386
+    $PN -c GRMLBASE,I386 -v -i grml_0.0-1.iso
+    $PN -c GRMLBASE,I386 -s sid
 
 More details: man grml-live
               /usr/share/doc/grml-live/grml-live.html
@@ -144,19 +144,21 @@ http://grml.org/bugs/
 
 # command line parsing {{{
 
-while getopts "c:i:s:t:Fhv" opt; do
+while getopts "c:i:r:s:t:v:FhV" opt; do
   case "$opt" in
     c) CLASSES="$OPTARG" ;;
-    F) FORCE=1 ;;
-    h) usage ; bailout 0 ;;
     i) ISO_NAME="$OPTARG" ;;
+    r) RELEASENAME="$OPTARG" ;;
     s) SUITE="$OPTARG" ;;
     t) TARGET="$OPTARG"
        CHROOT_TARGET="$TARGET/grml_chroot"
        BUILD_TARGET="$TARGET/grml_cd"
        ISO_TARGET="$TARGET/grml_isos"
        ;;
-    v) VERBOSE="-v" ;;
+    v) VERSION="$OPTARG" ;;
+    F) FORCE=1 ;;
+    h) usage ; bailout 0 ;;
+    V) VERBOSE="-v" ;;
     ?) echo "invalid option -$OPTARG" >&2; bailout 1 ;;
   esac
 done
@@ -303,14 +305,14 @@ if [ "$ARCH" = i386 ] ; then
       # adjust boot splash information:
       ISO_DATE="$(date +%Y-%m-%d)"
       VERSION="$(cut_string 5 "$VERSION")" ; VERSION="$(extend_string_end 5 "$VERSION")"
-      CODENAME="$(cut_string 30 "$CODENAME")" ; CODENAME="$(extend_string_end 30 "$CODENAME")"
+      RELEASENAME="$(cut_string 30 "$RELEASENAME")" ; RELEASENAME="$(extend_string_end 30 "$RELEASENAME")"
 
       sed -i "s/%VERSION%/$VERSION/"   "$BUILD_TARGET"/boot/isolinux/boot.msg
-      sed -i "s/%CODENAME%/$CODENAME/" "$BUILD_TARGET"/boot/isolinux/boot.msg
+      sed -i "s/%RELEASENAME%/$RELEASENAME/" "$BUILD_TARGET"/boot/isolinux/boot.msg
       sed -i "s/%DATE%/$ISO_DATE/"     "$BUILD_TARGET"/boot/isolinux/boot.msg
 
       sed -i "s/%VERSION%/$VERSION/"   "$BUILD_TARGET"/boot/isolinux/boot-beep.msg
-      sed -i "s/%CODENAME%/$CODENAME/" "$BUILD_TARGET"/boot/isolinux/boot-beep.msg
+      sed -i "s/%RELEASENAME%/$RELEASENAME/" "$BUILD_TARGET"/boot/isolinux/boot-beep.msg
       sed -i "s/%DATE%/$ISO_DATE/"     "$BUILD_TARGET"/boot/isolinux/boot-beep.msg
 
       # autostart for Windows:
@@ -359,17 +361,18 @@ fi
 
 # ISO_TARGET - mkisofs {{{
 [ -n "$ISO_TARGET" ] || ISO_TARGET="$TARGET/grml_isos"
-if [ -d "$ISO_TARGET" ] ; then
+[ -n "$ISO_NAME" ] || ISO_NAME="grml_${VERSION}.iso"
+
+if [ -f "${ISO_TARGET}/${ISO_NAME}" ] ; then
    ewarn "$ISO_TARGET exists already, skipping stage 'iso build'" ; eend 0
    log "$ISO_TARGET exists already, skipping stage 'iso build'"
 else
    mkdir -p "$ISO_TARGET" || bailout 6 "Problem with creating $ISO_TARGET for stage 'iso build'"
-   [ -n "$ISO_NAME" ] || ISO_NAME="grml_0.0-1.iso"
    ( cd "$BUILD_TARGET" &&
-     mkisofs -V "Debian/etch grml" -publisher 'grml-live | grml.org' \
+     mkisofs -V "grml $VERSION" -publisher 'grml-live | grml.org' \
              -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table    \
              -c boot/isolinux/boot.cat -b boot/isolinux/isolinux.bin      \
-             -o "${ISO_TARGET}"/"${ISO_NAME}" .
+             -o "${ISO_TARGET}/${ISO_NAME}" .
    )
    einfo "Finished execution of stage 'iso build'" ; eend 0
    log "Finished execution of stage 'iso build' [$(date)]"