#!/bin/sh umask 002 srcdir=`pwd` tmpdir=$srcdir/tmp/rulesdir.$$ rm -rf $tmpdir; mkdir -p $tmpdir || exit $? PERL=${PERL:-perl} RELDIR=$HOME/public_html/devel mkdir -p $RELDIR DISTNAME=Mail-SpamAssassin-rules make || perl Makefile.PL < /dev/null || exit $? make || exit $? make version.env || exit $? . ./version.env # "3.1.0-pre2-r202405" should appear as "3.1.0-pre2" after this VERSION=`echo $FULL_VERSION | perl -pe 's/-(r\d+)$//'` set -e $PERL -T ./sa-update.raw --updatedir $tmpdir --debug > $tmpdir/o 2>&1 || true SVNVER=`perl -ne '/parsed as (\d{5,})$/ and print $1' < $tmpdir/o` if [ "$SVNVER" = "" ] ; then echo "cannot find 'parsed as' line in $tmpdir/o" exit 1 fi DISTVNAME=$DISTNAME-$VERSION.r$SVNVER DISTVBASE=$DISTNAME-$VERSION MIRROR=http://buildbot.spamassassin.org/updatestage/ wget -O $tmpdir/rules.tgz $MIRROR/$SVNVER.tar.gz wget -O $tmpdir/rules.tgz.sha1 $MIRROR/$SVNVER.tar.gz.sha1 wget -O $tmpdir/rules.tgz.asc $MIRROR/$SVNVER.tar.gz.asc # ensure non-empty [ -s $tmpdir/rules.tgz ] || exit 3 linttmp=$tmpdir/lintdir rm -rf $linttmp mkdir $linttmp ( cd $linttmp # check validity of tarball; also extract gunzip -cd < $tmpdir/rules.tgz | tar xf - || exit $? ) sitetmp=$tmpdir/sitetmp rm -rf $sitetmp mkdir $sitetmp cp rules/*.pre $sitetmp # now, ensure the ruleset (entirely as distributed) lints, also. # use "-p /dev/null" so any user_prefs data is ignored. ./spamassassin -x --configpath=$linttmp --siteconfigpath=$sitetmp \ -p /dev/null --lint \ || exit $? awk '{print $1}' $tmpdir/rules.tgz.sha1 > $tmpdir/sha.orig ( cd $tmpdir ln rules.tgz $DISTVNAME.tgz $PERL $srcdir/build/md5sum.pl $DISTVNAME.tgz > rules.tgz.md5 || exit $? # rebuild the SHA1 sum $PERL $srcdir/build/sha1sum.pl $DISTVNAME.tgz > rules.tgz.sha1 || exit $? ) awk '{print $1}' $tmpdir/rules.tgz.sha1 > $tmpdir/sha.new cmp $tmpdir/sha.orig $tmpdir/sha.new || exit $? for ext in tgz tgz.md5 tgz.sha1 tgz.asc ; do rm -f $RELDIR/$DISTVBASE.*.$ext if [ -f $tmpdir/rules.$ext ] ; then mv $tmpdir/rules.$ext $RELDIR/$DISTVNAME.$ext ls -l $RELDIR/$DISTVNAME.$ext fi done chgrp -R spamassassin $RELDIR || true rm -rf $tmpdir