X-Git-Url: https://git.donarmstrong.com/?p=spamassassin_config.git;a=blobdiff_plain;f=update_spamassassin;h=3a15e883ca5d63070014862da8be58cd2f0b2d87;hp=f9e02d65a0e2a3499e8cca6eaaf6401ac26fb3a1;hb=6b9048c0c7d7d2522ba9d8c338f6aabed5ec4c01;hpb=e5450158fb8062de70e9ce05c6a2b12fc8c5113b diff --git a/update_spamassassin b/update_spamassassin index f9e02d6..3a15e88 100755 --- a/update_spamassassin +++ b/update_spamassassin @@ -9,12 +9,14 @@ SVN=$(which svn) TMPDIR=$(mktemp -d); -if [ "$HOSTNAME" == "rietz" ]; then +HOSTNAME=$(hostname); + +if [ "$HOSTNAME" = "rietz" ] || [ "$HOSTNAME" = "busoni" ]; then BASEDIR="/org/bugs.debian.org" USERCONF="bugs/user_prefs"; -elif [ "$HOSTNAME" == "murphy" ]; then +elif [ "$HOSTNAME" = "liszt" ]; then BASEDIR="/var/list/.etc"; - USERCONF="bugs/user_prefs"; + USERCONF="lists/user_prefs"; else echo "Unknown hostname '$HOSTNAME'"; exit 1; @@ -23,49 +25,60 @@ fi; SACONFIG="$BASEDIR/spamassassin_config"; BAKDIR="$BASEDIR/spamassassin_config_bak"; +# because alioth continuously fails, make sure that svn info will +# succeed first before cluttering the log. Ideally we would report +# this error, but it happens far too frequently, so we bail out here. +if ! svn info $(svn info $SACONFIG|awk '/^URL:/{print $2}') >/dev/null 2>&1; then + exit 0; +fi; + # figure out if there's an update to be made ORIGREV=$(svn info $SACONFIG |awk '/^Revision:/{print $2}') NEWREV=$(svn info $(svn info $SACONFIG|awk '/^URL:/{print $2}')|awk '/^Revision:/{print $2}') # no changes, bug out. -if [ $ORIGREV -ge $NEWREV ]; then +if [ "0$ORIGREV" -ge "0$NEWREV" ]; then exit 0; fi; -if [ -e "$SACONFIG/.update_spamassassin" ] && kill -0 $(cat "$SACONFIG/.update_spamassassin"); then +if [ -e "$SACONFIG/.update_spamassassin" ] && kill -0 $(cat "$SACONFIG/.update_spamassassin") >/dev/null 2>&1; then echo "Another update_spamassassin appears to be running" exit 1; else echo $$ > "$SACONFIG/.update_spamassassin"; fi; -function remove_pidfile(){ +remove_pidfile () { rm "$SACONFIG/.update_spamassassin"; } -trap remove_pidfile ERR; +trap remove_pidfile 0; FAILUREMESSAGE=""; -function report_failure(){ +report_failure () { # Hrm; a previous update failed; don't report again until the file - # is removed - if [ -e "$SACONFIG/failed_update" ]; then + # is removed or it's more than a day old + if [ -e "$SACONFIG/failed_update" ] && + [ $(($(date +%s) - $(stat -c '%Y' "$SACONFIG/failed_update"))) -lt 86400 ]; then + rm -rf "$TMPDIR" exit 0; fi; - echo "$FAILUREMESSAGE" >> "$SACONFIG/failed_update" + echo "$FAILUREMESSAGE" > "$SACONFIG/failed_update" echo "$FAILUREMESSAGE"; cat - </dev/null 2>&1 +cd "$(pwd)" if ! spamassassin -p $TMPDIR/spamassassin_config/$USERCONF --lint > $TMPDIR/sa_lint 2>&1; then FAILUREMESSAGE="$(echo -e 'spamassassin -p $TMPDIR/spamassassin_config/$USERCONF --lint\nfailed with\n'| cat - $TMPDIR/sa_lint)"; @@ -81,14 +94,15 @@ if ! spamassassin -p $TMPDIR/spamassassin_config/$USERCONF --lint > $TMPDIR/sa_l fi; mv "$SACONFIG" "$BAKDIR/spamassassin_config_r$ORIGREV" mv "$TMPDIR/spamassassin_config" "$SACONFIG" -trap ERR +trap - ERR remove_pidfile rm -rf "$TMPDIR" if [ "$HOSTNAME" == "rietz" ]; then touch /home/debbugs/.spamassassin/user_prefs -elif [ "$HOSTNAME" == "murphy" ]; then +elif [ "$HOSTNAME" == "liszt" ]; then # do nothing + true; else echo "Unknown hostname '$HOSTNAME'"; exit 1;