You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by km...@apache.org on 2011/11/07 17:21:58 UTC
svn commit: r1198801 -
/spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2
Author: kmcgrail
Date: Mon Nov 7 16:21:58 2011
New Revision: 1198801
URL: http://svn.apache.org/viewvc?rev=1198801&view=rev
Log:
Found sought files orphaned on zone
Modified:
spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2
Modified: spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2
URL: http://svn.apache.org/viewvc/spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2?rev=1198801&r1=1198800&r2=1198801&view=diff
==============================================================================
--- spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2 (original)
+++ spamassassin/trunk/masses/rule-dev/sought/mkzone/run_part2 Mon Nov 7 16:21:58 2011
@@ -1,98 +1,71 @@
#!/bin/bash
#
+# Generate an updates tarball from a directory in SVN.
+#
+# usage: sudo -u rulesd /export/home/svn-trunk/masses/rule-dev/sought/mkzone/run_part2
+#
# required setup, in /etc/sudoers or /opt/sfw/etc/sudoers:
# updatesd ALL = NOPASSWD: /usr/sbin/rndc reload
-set -x
-
. /etc/profile
+# name of rule-updates package
+#
+updname=sought
+
+# source directory for this update package
+#
+sourcedir=/export/home/svn-trunk/rulesrc/updates/sought
+
+# versions to build
+#
+versions="3.2.x 3.3.0 3.1.x"
+
# download stage, where update tarballs are deposited for downloaders
#
-stagedir=/home/jm/yerp.org/rules/stage.vm-misc
-remotestagedir=vm-web:/home/jm/yerp.org/rules/stage
+stagedir=/export/home/rulesd/web/updates.spamassassin.org/rules/$updname/stage
+remotestagedir=vm-web:/export/home/rulesd/web/updates.spamassassin.org/rules/$updname/stage
# directory where "0.2.3" and other version-specific files live.
# it's assumed that the *real* zone $INCLUDEs files from this dir.
# it must be writable by the user this script runs as.
#
-dnsdir=/home/jm/zones/rules.yerp.org.d
+dnsdir=/export/home/rulesd/zones/$updname.updates.spamassassin.org.d
# directory where "counter", "soa_line.tmpl", "soa_line" live.
# it's assumed that the *real* zone $INCLUDEs files from this dir.
# it must be writable by the user this script runs as.
#
-soadir=/home/jm/zones/yerp.org.d
+soadir=/var/named/spamassassin.org.d
-versions="sought.3.2.x sought.3.3.0 sought.3.1.x"
+tmpbase=/export/home/rulesd/tmp
+svndir=/export/home/svn-trunk
+perl=/local/perl586/bin/perl
# ---------------------------------------------------------------------------
make_tarball_for_version () {
-
version="$1"
-tmpdir=/home/jm/ftp/sandboxupdates/tmp/$version
-rm -rf $tmpdir; mkdir -p $tmpdir || exit $?
-
-
-
case "$version" in
- sought.3.1.x ) tarballprefix="310" ;;
- sought.3.2.x ) tarballprefix="320" ;;
- sought.3.3.0 ) tarballprefix="330" ;;
+ 3.1.x ) tarballprefix="310" ;;
+ 3.2.x ) tarballprefix="320" ;;
+ 3.3.0 ) tarballprefix="330" ;;
* ) echo "no prefix for $version! FAILING" 1>&2 ; exit 1 ;;
esac
-# extract the new rules files.
-
-rulesdir=$tmpdir/share/spamassassin
-mkdir -p $rulesdir
-cp rulesrc/sandbox/jm/20_sought.cf $rulesdir
-cp rulesrc/sandbox/jm/20_sought_fraud.cf $rulesdir
-
-
-(
- cd $rulesdir
-
- # or this, to ban code from the updates:
- tar cvf - *.cf || exit $?
-
-) | gzip -9 > $tmpdir/update.tgz || exit $?
-
-# ensure non-empty
-[ -s $tmpdir/update.tgz ] || exit 3
-
-# sign and get sums
-gpg --batch --homedir /home/jm/ftp/sandboxupdates/key \
- -bas $tmpdir/update.tgz || exit $?
-
-$PERL build/sha1sum.pl $tmpdir/update.tgz > $tmpdir/update.tgz.sha1 || exit $?
-
-
+tmpdir=$tmpbase/$updname.$version
+rm -rf $tmpdir; mkdir -p $tmpdir || exit $?
+cd $svndir
# get SVN revision number.
# note: use 'Last Changed Rev' instead of 'Revision'. Because we share
# an SVN repository with other projects, this means that the same
# rev of *our* codebase may appear under multiple rev#s, as other projects
# check their changes in.
-
-### tagstamp=`date "+%Y%m%d%H%M%S"`
-### tagurl=https://svn.apache.org/repos/asf/spamassassin/tags/sa-update_${version}_${tagstamp}
-###
-### svn up
-### svn copy -m 'promotions validated' . $tagurl < /dev/null
-
-# for svn 1.3:
-# (svn info --non-interactive $tagurl || svn info $tagurl ) < /dev/null \
- # > $tmpdir/svn 2>&1 || exit $?
-
-# for crappy zone svn, 1.2:
svn info rulesrc < /dev/null > $tmpdir/svn 2>&1 || exit $?
-
-svnrev=`(grep 'Last Changed Rev: ' $tmpdir/svn || exit 1) | \
- sed -e 's/^.*: //'`
+svnrev=`(grep 'Last Changed Rev: ' $tmpdir/svn || exit 1) | sed -e 's/^.*: //'`
if [ "$svnrev" == "" ] ; then
echo "missing SVN revision"
@@ -106,15 +79,46 @@ if [ "$svnrev" -lt 1 ] ; then
exit 5
fi
-svnrev="$tarballprefix$svnrev"
+if [ -f $tmpdir.last_svn -a $svnrev = `cat $tmpdir.last_svn` ] ; then
+ echo "no change in SVN: $svnrev is last rev"
+ cat $tmpdir/svn
+ exit 0
+fi
+
+# extract the new rules files.
+rulesdir=$tmpdir/share/spamassassin
+[ -d $rulesdir/. ] || mkdir -p $rulesdir
+cp rulesrc/updates/$updname/*.cf $rulesdir
+
+# and lint them
+./spamassassin -C $rulesdir -p rules/v320.pre --lint || exit $?
+
+(
+ cd $rulesdir
+ tar cvf - *.cf || exit $?
+) | gzip -9 > $tmpdir/update.tgz || exit $?
+
+# ensure non-empty
+[ -s $tmpdir/update.tgz ] || exit 3
+
+# sign and get sums
+gpg --batch --homedir /export/home/rulesd/code/signing_key \
+ -bas $tmpdir/update.tgz || exit $?
+
+$perl build/sha1sum.pl $tmpdir/update.tgz > $tmpdir/update.tgz.sha1 || exit $?
+
+
+
+fullsvnrev="$tarballprefix$svnrev"
# TODO: if we were maintaining multiple versions, these would be
# copied into a path specific to the version
chmod 644 $tmpdir/update.tgz $tmpdir/update.tgz*
-mv $tmpdir/update.tgz $stagedir/$svnrev.tar.gz || exit $?
-mv $tmpdir/update.tgz.sha1 $stagedir/$svnrev.tar.gz.sha1 || exit $?
-mv $tmpdir/update.tgz.asc $stagedir/$svnrev.tar.gz.asc || exit $?
+mkdir -p $stagedir
+mv $tmpdir/update.tgz $stagedir/$fullsvnrev.tar.gz || exit $?
+mv $tmpdir/update.tgz.sha1 $stagedir/$fullsvnrev.tar.gz.sha1 || exit $?
+mv $tmpdir/update.tgz.asc $stagedir/$fullsvnrev.tar.gz.asc || exit $?
@@ -125,9 +129,10 @@ mv $tmpdir/update.tgz.asc $stagedir/$sv
rvers=`echo "$version" | perl -ne \
's/x/*/g;chop; @x = split(/\./); print join ".", reverse @x'`
+[ -d $dnsdir/. ] || mkdir -p $dnsdir
dnsfile="$dnsdir/$version"
if echo "
-$rvers TXT \"$svnrev\"
+$rvers TXT \"$fullsvnrev\"
" > $dnsfile.new
then
mv $dnsfile.new $dnsfile || exit $?
@@ -138,19 +143,20 @@ fi
# increment the zone serial.
bash ./build/mkupdates/tick_zone_serial $soadir || exit $?
-
-# clean up 4-day-old (and older) update tarballs. This seems as
-# good a place as any to do this!
-# note: for manual updates, the file permissions should be 0444 so let's clean
-# out only 0644 (automatic) updates. a bit of a kluge, but ...
-find $stagedir -mtime +4 -perm 0644 -type f -name '*.tar.*' | xargs rm
+# and don't rebuild this rev's update
+echo $svnrev > $tmpdir.last_svn
}
# ---------------------------------------------------------------------------
-[ -d $stagedir ] || echo "no stagedir" 1>&2
-[ -d $stagedir ] || exit 6
+mv LOG.2 LOG.3
+mv LOG.1 LOG.2
+mv LOG LOG.1
+
+(
+
+set -xe
for version in $versions ; do
make_tarball_for_version $version
@@ -158,6 +164,13 @@ done
ls -l $stagedir
-rsync -vre ssh --delete $stagedir/. $remotestagedir/.
-exit
+# clean up 4-day-old (and older) update tarballs. This seems as
+# good a place as any to do this!
+# note: for manual updates, the file permissions should be 0444 so let's clean
+# out only 0644 (automatic) updates. a bit of a kluge, but ...
+find $stagedir -mtime +4 -perm 0644 -type f -name '*.tar.*' | xargs rm
+#rsync -vre ssh --delete $stagedir/. $remotestagedir/.
+
+) > LOG 2>&1
+exit