You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
93 lines
2.3 KiB
#!/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}.\n" |
|
|
|
if [ "${1}" == "-cleanup" ]; then |
|
rm -f "${CLOG}" |
|
else |
|
E2=`date '+%s'` |
|
let ES="${E2} - ${E1}" |
|
printf "\n${SELF}: Total time elapsed ${ES} sec." |
|
|
|
##### TODO: work out a less noisy diff'ing technique! |
|
#if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then |
|
# printf "\n${SELF}: Log diff follows:\n" |
|
# diff -Naur "${CLOG}".prev "${CLOG}" |
|
#fi |
|
|
|
##### |
|
printf "\n${SELF}: Std(out|err) logged in ${CLOG}." |
|
printf "\n${SELF}: Log file examination follows:\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: |
|
LIST_KWD="(NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT|NOTE|DEBUG|ALL)" |
|
|
|
if [ -f "${CLOG}" ]; then |
|
grep -n -PT "${LIST_KWD}" "${CLOG}" |
|
fi |
|
|
|
fi |
|
|
|
exit 0
|
|
|