X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=7ba513806075fd44b7b9ad681d139e8a973b3936;hp=0e2a49df88ffd107d442d485bdb309efd9ee92b0;hb=06725b7aa135a3f4af7d967bdb2c832bd7747aaa;hpb=1efc176faeb4493102a306e3f28b289c49849b5d diff --git a/grml-live b/grml-live index 0e2a49d..7ba5138 100755 --- a/grml-live +++ b/grml-live @@ -230,11 +230,7 @@ while getopts "a:C:c:g:i:o:r:s:t:v:bBFuqVz" opt; do C) CONFIG="$OPTARG" ;; g) GRML_NAME="$OPTARG" ;; i) ISO_NAME="$OPTARG" ;; - o) OUTPUT="$OPTARG" - CHROOT_OUTPUT="$OUTPUT/grml_chroot" - BUILD_OUTPUT="$OUTPUT/grml_cd" - ISO_OUTPUT="$OUTPUT/grml_isos" - ;; + o) OUTPUT="$OPTARG" ;; q) SKIP_MKSQUASHFS=1 ;; r) RELEASENAME="$OPTARG" ;; s) SUITE="$OPTARG" ;; @@ -256,6 +252,11 @@ specify it on the command line using the -c option." [ -n "$OUTPUT" ] || bailout 1 "Error: \$OUTPUT unset, please set it in $LIVE_CONF or specify it on the command line using the -o option." +# set subdirectories according to $OUTPUT: +CHROOT_OUTPUT="$OUTPUT/grml_chroot" +BUILD_OUTPUT="$OUTPUT/grml_cd" +ISO_OUTPUT="$OUTPUT/grml_isos" + # trim characters that are known to cause problems inside $GRML_NAME; # for example isolinux does not like '-' inside the directory name [ -n "$GRML_NAME" ] && export SHORT_GRML_NAME="$(echo $GRML_NAME | tr -d ',./;\- ')" @@ -378,6 +379,15 @@ if [ -n "$SUITE" ] ; then # /usr/share/debootstrap/scripts/unstable does not exist, instead use 'sid': case $SUITE in unstable) SUITE='sid' ;; + # make sure that we *NEVER* write any broken suite name to sources.list, + # otherwise we won't be able to adjust it one next (correct) execution + stable) ;; + testing) ;; + etch) ;; + lenny) ;; + squeeze) ;; + sid) ;; + *) echo "Sorry, $SUITE is not a valid Debian suite, exiting.">&2; bailout 1 ;; esac DIST=" etch\| stable\| lenny\| squeeze\| testing\| sid\| unstable" @@ -406,6 +416,22 @@ if [ -n "$SUITE" ] ; then done fi +# validate whether the specified architecture class matches the +# architecture (option), otherwise installation of kernel will fail +if echo $CLASSES | grep -qi i386 ; then + if ! [[ "$ARCH" == "i386" ]] ; then + eerror "You specified the I386 class but are trying to build something else (AMD64?)." + eerror "-> Either invoke grml-live with '-i i386' or adjust the architecture class. Exiting." + bailout + fi +elif echo $CLASSES | grep -qi amd64 ; then + if ! [[ "$ARCH" == "amd64" ]] ; then + eerror "You specified the AMD64 class but are trying to build something else (I386?)." + eerror "-> Either invoke grml-live with '-i amd64' or adjust the architecture class. Exiting." + bailout + fi +fi + # set $ARCH [ -n "$ARCH" ] || ARCH="$(dpkg --print-architecture)" if grep -q -- 'FAI_DEBOOTSTRAP_OPTS.*--arch' "$NFSROOT_CONF" ; then @@ -760,10 +786,21 @@ if [ -f "${ISO_OUTPUT}/${ISO_NAME}" -a -z "$UPDATE" -a -z "$BUILD_ONLY" -a -z "$ else mkdir -p "$ISO_OUTPUT" || bailout 6 "Problem with creating $ISO_OUTPUT for stage 'iso build'" + # support mkisofs as well as genisoimage + if which mkisofs >/dev/null 2>&1; then + MKISOFS='mkisofs' + elif which genisoimage >/dev/null 2>&1; then + MKISOFS='genisoimage' + else + log "Sorry, neither mkisofs nor genisoimage available - can not create ISO." + eerror "Sorry, neither mkisofs nor genisoimage available - can not create ISO." ; eend 1 + bailout + fi + CURRENT_DIR=$(pwd) if cd "$BUILD_OUTPUT" ; then - log "mkisofs -V '${GRML_NAME} ${VERSION}' -publisher 'grml-live | grml.org' -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b $BOOT_FILE -o ${ISO_OUTPUT}/${ISO_NAME} ." - mkisofs -V "${GRML_NAME} ${VERSION}" -publisher 'grml-live | grml.org' \ + log "$MKISOFS -V '${GRML_NAME} ${VERSION}' -publisher 'grml-live | grml.org' -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b $BOOT_FILE -o ${ISO_OUTPUT}/${ISO_NAME} ." + "$MKISOFS" -V "${GRML_NAME} ${VERSION}" -publisher 'grml-live | grml.org' \ -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table \ -b $BOOT_FILE -no-pad \ -o "${ISO_OUTPUT}/${ISO_NAME}" . ; RC=$?