Files
ftmemsim-valgrind/nightly/bin/nightly
Julian Seward 6ff3f3bc8f Track top level Makefile.am changes in r7390.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7394
2008-02-11 10:56:12 +00:00

159 lines
5.0 KiB
Bash
Executable File

#!/bin/sh
#----------------------------------------------------------------------------
# Automated build and test for Valgrind. Compares Valgrind from 24 hours
# ago with the current one.
#
# Use: two args, first is path to top of ValgrindABT tree
# second is name of machine
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Helper function
#----------------------------------------------------------------------------
runcmd () {
logfile=$1
str=$2
shift 2
# Header in short logfile
echo -n " $str ... " >> $logfile.short
# Header and command in verbose logfile
echo -n " $str ... " >> $logfile.verbose
echo "$*" >> $logfile.verbose
# Run the command
(eval "$*") >> $logfile.verbose 2>&1
res=$?
# Write result to the short logfile
if [ $res == 0 ]
then
echo "done" >> $logfile.short
else
echo "failed" >> $logfile.short
fi
return $res
}
#----------------------------------------------------------------------------
# Startup
#----------------------------------------------------------------------------
# Get args from command line
ABT_TOP=$1
ABT_MACHINE=$2
# Get times and date
ABT_START=`date "+%F %H:%M:%S %Z"`
svn_old_date=`date --date=yesterday +%Y-%m-%dT%H:%M:%S`
svn_new_date=`date --date=today +%Y-%m-%dT%H:%M:%S`
cd $ABT_TOP
source $ABT_TOP/conf/$ABT_MACHINE.conf
#----------------------------------------------------------------------------
# Check out, build, test
#----------------------------------------------------------------------------
# Do everything twice -- once for the 24 hours old Valgrind, and once
# for the current one.
for logfile in old new ; do
# Remove the old valgrind/ and vex/ directories
rm -rf valgrind vex
# Remove old short and verbose log files, and start the new ones
for ext in short verbose ; do
echo > $logfile.$ext
done
# Choose the current Valgrind, or one from 24 hours ago
if [ $logfile = "old" ] ; then
svn_date=$svn_old_date
else
svn_date=$svn_new_date
fi
# Get dates for the old and new versions
# Check out, build, run tests
runcmd $logfile \
"Checking out valgrind source tree" \
"svn co svn://svn.valgrind.org/valgrind/trunk -r {$svn_date} valgrind" && \
\
runcmd $logfile \
"Configuring valgrind " \
"cd valgrind && ./autogen.sh && ./configure --prefix=$ABT_TOP/Inst" && \
\
runcmd $logfile \
"Building valgrind " \
"cd valgrind && make && make install" && \
\
runcmd $logfile \
"Running regression tests " \
"cd valgrind && make regtest"
# Grab some indicative text for the short log file -- if the regtests
# succeeded, show their results. If we didn't make it that far, show the
# last 20 lines.
egrep -q '^== [0-9]+ tests' $logfile.verbose && (
echo >> $logfile.short
echo "Regression test results follow" >> $logfile.short
echo >> $logfile.short
awk '/^== [0-9]+ tests/, /^$/ { print }' $logfile.verbose >> $logfile.short
) || (
echo >> $logfile.short
echo "Last 20 lines of verbose log follow" >> $logfile.short \
echo >> $logfile.short
tail -20 $logfile.verbose >> $logfile.short
)
done
#----------------------------------------------------------------------------
# Prepare results and send
#----------------------------------------------------------------------------
# 'final' shows the difference between the old and new results
echo > final
echo "Nightly build on" $ABT_MACHINE "(" $ABT_DETAILS ")" \
"started at" $ABT_START >> final
# If the results differ from 24 hours ago, print extra stuff.
diff -C1 old.short new.short > diff.short
changed=$?
if [ $changed != 0 ] ; then
echo "Results differ from 24 hours ago" >> final
else
echo "Results unchanged from 24 hours ago" >> final
fi
# Always show the current results.
cat new.short >> final
if [ $changed != 0 ] ; then
echo "=================================================" >> final
echo "== Results from 24 hours ago ==" >> final
echo "=================================================" >> final
cat old.short >> final
echo >> final
echo "=================================================" >> final
echo "== Difference between 24 hours ago and now ==" >> final
echo "=================================================" >> final
echo >> final
cat diff.short >> final
echo >> final
fi
# Email the results
$ABT_TOP/conf/$ABT_MACHINE.sendmail \
"$ABT_START nightly build ($ABT_MACHINE, $ABT_DETAILS)" \
$ABT_TOP/final