#!/bin/bash # settings are located in $HOME/.corpus echo "Using corpus-nightly settings from $HOME/.corpus at" date . /etc/profile . $HOME/.corpus # use $PERL from env if unset [ "x${PERL:-}" = x ] && PERL=perl export PERL set -x renice -n +10 -p $$ set -e # after renice, which typically fails # ensure we're running after 0900 UTC; complex due to daylight savings. # If we're running in the 08xx UTC hour-space, sleep for 1 hour; when # we wake, we will be in 09xx. ( TIME="%e,%U,%S"; TZ=UTC; export TIME TZ if date | egrep '^... ... .. 08:'; then date; echo "sleeping for 1 hour to compensate for DST" sleep 3600 ; date fi ) # day of week net="" if date | egrep '^Sat' || [ "$1" = "net" ]; then net="net-" ; fi # enter tree #if [ -d $tree ] ; then # cd $tree #else # echo "$tree does not exist yet. you need to check it out first" 1>&2 # exit 2 #fi # find current revision rm -f weekly-versions.txt nightly-versions.txt if ! wget --tries=120 --wait=30 \ http://rsync.spamassassin.org/weekly-versions.txt \ http://rsync.spamassassin.org/nightly-versions.txt then echo "wget failed" 1>&2 exit 0 fi if [ -n "$net" ]; then revision=$(tail -1 weekly-versions.txt|awk '{print $2}') else revision=$(tail -1 nightly-versions.txt|awk '{print $2}') fi mkdir -p $tree rm -rf $tree/* cd $tree pwd svn co -r $revision https://svn.apache.org/repos/asf/spamassassin/trunk . < /dev/null # update # TODO: replace all this with rsync, it's much safer ;) #set +e #retry=0 #while true; do # rm -rf rules # causing trouble for some reason # rm -rf rulesrc/sandbox # # if svn update -r $revision < /dev/null && \ # svn update -r $revision rulesrc < /dev/null # then # break; # fi # if that failed, get aggressive about getting a full # checkout, regardless of what may have been here already; # delete most of the checkout to do so, and just use "svn co" # instead of "svn up". # # svnpath=`svn info .| grep -i ^URL: | cut -d ' ' -f 2` # # rm -rf rules lib build rulesrc spamd spamc # svn cleanup < /dev/null # svn co --non-interactive $svnpath . # # # just 10 times; our SVN repo shouldn't be *that* unreliable! # if [ $retry -eq 20 ]; then # echo "svn update/co failed" 1>&2 # exit 1 # fi # # retry=$(( $retry + 1 )) # # # longer and longer between retries # sleep `expr 20 '*' $retry` #done set -e # once we have everything checked out, run "part 2" exec bash $tree/masses/rule-qa/corpus-nightly.post-svn