#!/bin/bash set -e SELF=$(basename "$0") GEN_DATA_DIR=releng_generated_data CLOG=${GEN_DATA_DIR}/log.${SELF} PASSED_OPTIONS="" if [ "${1}" == "-cleanup" ]; then PASSED_OPTIONS="-cleanup" elif [ "${1}" == "-rc" -a "${2}" == "-keep" ]; then PASSED_OPTIONS="-rc -keep" elif [ "${1}" == "-rc" ]; then PASSED_OPTIONS="-rc" else cat << HLP ${SELF} runs executables from CWD starting with releng_*. stdout/stderr output stored in ${CLOG} ${SELF} -rc [-keep] ${SELF} -cleanup HLP exit 101 fi ######################################################## if [ -f "${CLOG}" ]; then mv "${CLOG}" "${CLOG}".prev fi > ${CLOG} DSTART=`date --utc` printf "\n${SELF}: Started at ${DSTART}" E1=`date '+%s'` # require ^releng_, avoid running (your)self explcitly for s in `ls | grep ^releng_ | grep -v ${SELF} | sort -n`; do if [ -x ${s} -a ! -d ${s} ]; then # tee(1) does trailing \n, which is unwanted in that case printf "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..." echo -e "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..." >> ${CLOG} T1=`date '+%s'` set +e ./${s} ${PASSED_OPTIONS} &>> ${CLOG} RET=$? T2=`date '+%s'` let TS="${T2} - ${T1}" case ${RET} in 0) printf "done in ${TS} sec. ok." ;; *) printf "done in ${TS} sec. FAIL. EXIT CODE: $RET;" ;; esac set -e fi done DEND=`date --utc` printf "\n${SELF}: Stopped at ${DEND}." if [ "${1}" == "-cleanup" ]; then if [ -f "${CLOG}" ]; then rm -f "${CLOG}"; fi if [ -f "${CLOG}".prev ]; then rm -f "${CLOG}".prev; fi else E2=`date '+%s'` let ES="${E2} - ${E1}" printf " Total elapsed ${ES} sec." ##### printf "\n${SELF}: Std(out|err) logged in ${CLOG}." printf "\n${SELF}: Trivial log file examination:" printf "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" # severity classes of libdax_msgs.h in libburn and libisofs # List of boring keywords: # 'UPDATE' A pacifier message during long running operations. # List of interesting keywords: # thrown by xorriso and underlying libraries LIST_KWD="(NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT|NOTE|DEBUG|ALL" # thrown by others LIST_KWD+="|FAIL)" if [ -f "${CLOG}" ]; then set +e # lines, perl regex, leading tabs grep -n -PT "${LIST_KWD}" "${CLOG}" RET_GREP="$?" case ${RET_GREP} in 0) # found ;; 1) # not found printf "\n${SELF}: Log file looks clear.\n" ;; *) # printf "\n${SELF}: grep returned EXIT CODE: ${RET_GREP}.\n" ;; esac set -e fi printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" ##### TODO: work out a less noisy diff'ing technique! if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then printf "${SELF}: See diff against previous log file (might be long):\n" printf "diff -Naur ${CLOG}.prev ${CLOG} | less" fi fi printf "\n" exit 0