X-Git-Url: http://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=7d8bb82160fdf2e3dd09469ad25a5f35d6658f1a;hp=9057b04e7882697394e362074f6fb51fada9c0f8;hb=d761bd6cdc6b54b67883e295a0dd1694e492bd7b;hpb=e56cc393d3419a72c74aa5084525b88c6a7cf854 diff --git a/grml-live b/grml-live index 9057b04..7d8bb82 100755 --- a/grml-live +++ b/grml-live @@ -123,6 +123,8 @@ else eerror() { echo " [!] $*">&2 ;} ewarn() { echo " [x] $*" ;} eend() { return 0 ;} + eindent() { return 0 ;} + eoutdent() { return 0 ;} fi # source main configuration file: @@ -287,7 +289,9 @@ ISO_OUTPUT="$OUTPUT/grml_isos" # }}} # clean/zero grml-live logfile {{{ -if [ -n "$ZERO_LOGFILE" ] ; then +if [ -n "$PRESERVE_LOGFILE" ] ; then + echo "Preserving logfile $LOGFILE as requested via \$PRESERVE_LOGFILE" +else echo -n > $LOGFILE fi # }}} @@ -1118,10 +1122,56 @@ else fi # }}} +# log build information to database if grml-live-db is installed and enabled {{{ +dpkg_to_db() { +if [ -d /usr/share/grml-live-db ] ; then + + # safe defaults + DPKG_LIST="/var/log/fai/$HOSTNAME/last/dpkg.list" # the dpkg --list output of the chroot: + [ -n "$DPKG_DATABASE" ] || DPKG_DATABASE=/var/log/grml-live.db + [ -n "$DPKG_DBSCRIPT" ] || DPKG_DBSCRIPT=/usr/share/grml-live-db/scripts/dpkg-to-db + [ -n "$DPKG_DBOPTIONS" ] || DPKG_DBOPTIONS="-d $DPKG_DATABASE --logfile $LOGFILE --flavour $GRML_NAME < $DPKG_LIST" + + if ! [ -x "$DPKG_DBSCRIPT" ] ; then + eerror "Error: $DPKG_DBSCRIPT is not executable, can not log dpkg information." ; eend 1 + bailout 14 + fi + + # disable by default for now, not sure whether really everyone is using a local db file + #if ! touch "$DPKG_DATABASE" ; then + # eerror "Error: can not write to ${DPKG_DATABASE}, can not log dpkg information." ; eend 1 + # bailout 14 + #fi + + if ! [ -r "$DPKG_LIST" ] ; then + eerror "Error reading $DPKG_LIST - can not provide information to $DPKG_DBSCRIPT" ; eend 1 + bailout 14 + else + einfo "Logging $DPKG_LIST to database $DPKG_DATABASE" + eindent + + if DB_INFO=$("$DPKG_DBSCRIPT" $DPKG_DBOPTIONS 2>&1) ; then + einfo "$DB_INFO" + eend 0 + else + eerror "$DB_INFO" + eend 1 + fi + + eoutdent + fi + +fi +} +# }}} + # finalize {{{ [ -n "$start_seconds" ] && SECONDS="$[$(cut -d . -f 1 /proc/uptime)-$start_seconds]" || SECONDS="unknown" -einfo "Successfully finished execution of $PN [$(date) - running ${SECONDS} seconds]" ; eend 0 log "Successfully finished execution of $PN [$(date) - running ${SECONDS} seconds]" + +dpkg_to_db # make sure we catch the last log line as well, therefore execute between log + einfo + +einfo "Successfully finished execution of $PN [$(date) - running ${SECONDS} seconds]" ; eend 0 bailout 0 # }}}