| #!/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+)$//'` |
| SVNVER=`svn info | perl -ne '/Revision: (\d+)/ and print $1'` |
| DISTVNAME=$DISTNAME-$VERSION.r$SVNVER |
| DISTVBASE=$DISTNAME-$VERSION |
| |
| |
| # remove the rules files for rules we won't be shipping |
| rm -f rules/70_*.cf |
| |
| # remove new features, unsupported in existing code in the field |
| # (TODO: need a better way to exclude files that require new features |
| # like this; judicious use of "ifplugin" helps) |
| # rm rules/60_somerandomfeature.cf |
| |
| # and ensure the ruleset lints! |
| ./spamassassin --lint || exit $? |
| |
| rulesdir=rules |
| |
| ( |
| cd $rulesdir |
| |
| # Use this to include plugin .pm files: |
| # tar cvf - *.cf *.pm || exit $? |
| |
| # or this, to ban code from the rules: |
| tar cvf - [0-9]*.cf || exit $? |
| |
| ) | gzip -9 > $tmpdir/rules.tgz || exit $? |
| |
| # 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 $? |
| |
| # sign and get sums |
| rm -f $tmpdir/rules.*.asc |
| ssh updatesd@spamassassin.zones.apache.org \ |
| . /etc/profile \; \ |
| gpg --homedir /home/updatesd/key -bsa - \ |
| < $tmpdir/rules.tgz > $tmpdir/rules.tgz.asc || exit $? |
| |
| ( |
| cd $tmpdir |
| ln rules.tgz $DISTVNAME.tgz |
| $PERL $srcdir/build/md5sum.pl $DISTVNAME.tgz > rules.tgz.md5 || exit $? |
| $PERL $srcdir/build/sha1sum.pl $DISTVNAME.tgz > rules.tgz.sha1 || 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 |
| rm -rf $tmpdir |
| |