#!/bin/sh cd / # On Mac OS X, there are some handy things in Fink, but don't override the # built-in tools PATH="${PATH}:/sw/bin:/sw/sbin" export PATH # the source dir where this script is SCRIPT_DIR=`echo $0 | sed 's|\(.*\)/.*$|\1|'` . $SCRIPT_DIR/auto-build-common # the name of this script SCRIPT=`echo $0| sed 's|.*/\(.*\)|\1|g'` mailbody_on_failure () { ## this is a somewhat simplistic expression to detect error-lines cat ${LOGFILE} | grep " error: " | tail -20 # tail -20 ${LOGFILE} echo "" echo "the full logfile can be viewed at" echo "http://autobuild.puredata.info/auto-build/${DATE}/logs/${LOGFILE##*/}" } run_build_script () { distro=$1 ## LATER: make the uploaded ${LOGFILE} (name) be consistent with the uploaded package-file (name) LOGFILE=${HOME}/logs/${DATE}_${TIME}_${SYSTEM}_${HOSTNAME}_${distro}_${SCRIPT}.txt touch ${LOGFILE} sh ${HOME}/auto-build/${distro}/scripts/auto-build/${distro}-auto-builder.sh >> $LOGFILE 2>&1 case $SYSTEM in mingw*) /c/cygwin/bin/sh -c \ "rsync -a ${LOGFILE} rsync://128.238.56.50/upload/${DATE}/logs/" ;; *) rsync -a ${LOGFILE} rsync://128.238.56.50/upload/${DATE}/logs/ ;; esac # send status report if something failed completion_test=`tail -1 ${LOGFILE}` if [ "x${completion_test}" != "xSUCCESS" ]; then if [ "x${RECIPIENT}" != "x" ]; then SUBJECT="autobuild: $distro $HOSTNAME $DATE $TIME" mailbody_on_failure | mail -s "${SUBJECT}" ${RECIPIENT} #tail -20 ${LOGFILE} | mail -s "${SUBJECT}" ${RECIPIENT} fi fi } for dir in ${HOME}/auto-build/*; do dirname=`echo $dir | sed 's|.*/\(.*\)|\1|'` test -e $dir/scripts/auto-build/${dirname}-auto-builder.sh && \ run_build_script $dirname done # since the above test can cause this script to exit with an error, force it # to be happy to prevent getting automated error emails to root true