X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=87e53033d1b7fbfef31d190195a99c350c909f3f;hp=1e6b6c320c4b40ef4cf3edef4aed869be5316f87;hb=11baa336b55b8ddec2c3e830013a4fb1d8bd07f8;hpb=819fc49d8221b578017bd9ef711c3a8c08023b7f diff --git a/grml-live b/grml-live index 1e6b6c3..87e5303 100755 --- a/grml-live +++ b/grml-live @@ -46,6 +46,7 @@ Usage: $PN [options, see as follows] -C configuration file for grml-live -d use specified date instead of build time as date of release -D use specified configuration directory instead of /etc/grml/fai + -e extract ISO and squashfs contents from iso_name -F force execution without prompting -g set the grml flavour name -h display short usage information and exit @@ -290,7 +291,7 @@ copy_addon_file() { # }}} # command line parsing {{{ -while getopts "a:C:c:d:D:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do +while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do case "$opt" in a) ARCH="$OPTARG" ;; A) PACK_ARTIFACTS=1 ;; @@ -300,6 +301,7 @@ while getopts "a:C:c:d:D:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do C) LOCAL_CONFIG="$(readlink -f $OPTARG)" ;; d) DATE="$OPTARG" ;; D) GRML_FAI_CONFIG="$(readlink -f $OPTARG)" ;; + e) EXTRACT_ISO_NAME="$(readlink -f $OPTARG)" ;; g) GRML_NAME="$OPTARG" ;; i) ISO_NAME="$OPTARG" ;; I) CHROOT_INSTALL="$OPTARG" ;; @@ -415,6 +417,7 @@ if [ -z "$FORCE" ] ; then [ -n "$LOCAL_CONFIG" ] && echo " Configuration: $LOCAL_CONFIG" [ -n "$GRML_FAI_CONFIG" ] && echo " Config directory: $GRML_FAI_CONFIG" echo " main directory: $OUTPUT" + [ -n "$EXTRACT_ISO_NAME" ] && echo " Extract ISO: $EXTRACT_ISO_NAME" [ -n "$UNPACK_CHROOT" ] && echo " Chroot from: $UNPACK_CHROOT" [ -n "$CHROOT_OUTPUT" ] && echo " Chroot target: $CHROOT_OUTPUT" [ -n "$BUILD_OUTPUT" ] && echo " Build target: $BUILD_OUTPUT" @@ -542,6 +545,35 @@ if [ -n "${UNPACK_CHROOT}" ]; then fi # }}} +# unpack iso/squashfs {{{ +extract_iso() { +if [ -n "$EXTRACT_ISO_NAME" ]; then + log "Unpacking ISO from ${EXTRACT_ISO_NAME}" + einfo "Unpacking ISO from ${EXTRACT_ISO_NAME}" + local mountpoint=$(mktemp -d) + local rc=0 + mount -o loop "${EXTRACT_ISO_NAME}" "$mountpoint" ; rc=$? + if [ "$rc" != 0 ]; then + rmdir "$mountpoint" + log "mount failed" + eerror "mount failed" + eend 1 + bailout 1 + fi + unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*.squashfs ; rc=$? + umount "$mountpoint" + rmdir "$mountpoint" + if [ "$rc" != 0 ]; then + log "unsquashfs failed" + eerror "unsquashfs failed" + eend 1 + bailout 1 + fi +fi +} +extract_iso +# }}} + # cleanup CHROOT_ARCHIVE now {{{ if [ -n "${PACK_ARTIFACTS}" ]; then # can't do this earlier, as UNPACK_CHROOT might point to CHROOT_ARCHIVE