The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/bin/bash
# This is the cronjob as run on our ASF box aka svn-qavm.
# It uses neels' mad bash script magic called 'pat' to update and
# build the latest trunk, invokes a benchmark and sends as mail.

#EMAILS=your@email.addresses
EMAILS=""

if [ "$USER" = "neels" ]; then
  # I don't want to keep editing files after every update. ~Neels
  EMAILS=dev@subversion.apache.org
fi


echo
echo "--------------------------------------------------------------------"
date
echo

results="$(tempfile)"


# first update trunk to HEAD and rebuild.
# update/build is logged to the cronjob log (via stdout)

cd /home/neels/pat/trunk
/home/neels/bin/pat update

if [ "$?" -ne "0" ]; then
  subject="Failed to update to HEAD."
  echo "$subject" > "$results"
  echo "$subject"
else

  rev="$(svn info /home/neels/pat/trunk/src | grep Revision)"
  if [ -z "$rev" ]; then
    subject="Working copy problem."
    echo "$subject" > "$results"
    echo "$subject"
  else

    /home/neels/bin/pat remake
    if [ "$?" -ne "0" ]; then
      subject="Failed to build $rev."
      echo "$subject" > "$results"
      echo "$subject"
    else

      
      # updating and building succeeded!
      # run the benchmark:

      compiled="$(/home/neels/pat/trunk/prefix/bin/svn --version | grep "compiled")"
      subject="$rev$compiled"

      cd /home/neels/svnbench/

      # make more or less sure that runs don't leak into each other via
      # I/O caching.
      sync

      # basically, just run it. But also, I want to
      # - append output to stdout, for cronjob logging.
      # - send output as mail, but only this run's output less update&build
      "$(which time)" -p ./run 2>&1 | tee "$results"

    fi
  fi
fi

if [ -n "$EMAILS" ]; then
  cat "$results" | mail -s "[svnbench] $subject" $EMAILS
else
  echo "No email addresses configured."
fi

rm "$results"