| #!/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="https://ruleqa.spamassassin.org/updates" |
| |
| echo $SVNVER |
| |
| wget -O $tmpdir/rules.tgz $MIRROR/$SVNVER.tar.gz |
| wget -O $tmpdir/rules.tgz.sha256 $MIRROR/$SVNVER.tar.gz.sha256 |
| 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.sha256 > $tmpdir/sha.orig |
| |
| ( |
| cd $tmpdir |
| ln rules.tgz $DISTVNAME.tgz |
| # rebuild the SHA sums |
| $PERL $srcdir/build/sha256sum.pl $DISTVNAME.tgz > rules.tgz.sha256 || exit $? |
| $PERL $srcdir/build/sha512sum.pl $DISTVNAME.tgz > rules.tgz.sha512 || exit $? |
| ) |
| |
| awk '{print $1}' $tmpdir/rules.tgz.sha256 > $tmpdir/sha.new |
| cmp $tmpdir/sha.orig $tmpdir/sha.new || exit $? |
| |
| for ext in tgz tgz.sha256 tgz.sha512 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 |
| |