]> git.donarmstrong.com Git - spamassassin_config.git/blobdiff - update_spamassassin
Add some rules against french spam
[spamassassin_config.git] / update_spamassassin
index 1769913350bb46cdcedd7dd138cf55db5874e714..3a15e883ca5d63070014862da8be58cd2f0b2d87 100755 (executable)
@@ -9,7 +9,9 @@ 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" = "liszt" ]; then
@@ -23,6 +25,13 @@ 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}')
@@ -39,26 +48,27 @@ 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 - <<EOF;
 
-Update_spamassassin will not report any additional errors until this
-is fixed.
+update_spamassassin will only report this error once a day, and
+updates will not occur until this is fixed.
 
 Please fix the problem and then remove
 $SACONFIG/failed_update
@@ -68,6 +78,7 @@ EOF
 }
 
 cp -ar $SACONFIG $TMPDIR/.
+OLDDIR="$(pwd)"
 cd $TMPDIR/spamassassin_config;
 svn update -q --non-interactive; 
 if svn status |grep -q '^C'; then
@@ -75,7 +86,7 @@ if svn status |grep -q '^C'; then
     FAILUREMESSAGE="$FAILUREMESSAGE$(svn status|grep ^C)";
     report_failure
 fi;
-cd - >/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)";