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