You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by sp...@apache.org on 2017/05/29 16:27:31 UTC
svn commit: r1796664 - in /spamassassin/tags/sa-update_3.3.3_20170529092617:
./ build/mkupdates/do-stable-update-with-scores build/mkupdates/run_nightly
Author: spamassassin_role
Date: Mon May 29 16:27:31 2017
New Revision: 1796664
URL: http://svn.apache.org/viewvc?rev=1796664&view=rev
Log:
promotions validated
Added:
spamassassin/tags/sa-update_3.3.3_20170529092617/
- copied from r1796663, spamassassin/trunk/
Modified:
spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/do-stable-update-with-scores
spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/run_nightly
Modified: spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/do-stable-update-with-scores
URL: http://svn.apache.org/viewvc/spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/do-stable-update-with-scores?rev=1796664&r1=1796663&r2=1796664&view=diff
==============================================================================
--- spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/do-stable-update-with-scores (original)
+++ spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/do-stable-update-with-scores Mon May 29 16:27:31 2017
@@ -22,7 +22,7 @@ if [ $RV -ne 0 ] ; then
else
echo "Running mkupdate-with-scores..."
echo ""
- /usr/local/spamassassin/automc/svn/build/mkupdates/mkupdate-with-scores
+ /usr/local/spamassassin/automc/svn/trunk/build/mkupdates/mkupdate-with-scores
RV=$?
if [ $RV -ne 0 ] ; then
echo "Exit Status $RV is not zero for mkupdate-with-scores"
Modified: spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/run_nightly
URL: http://svn.apache.org/viewvc/spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/run_nightly?rev=1796664&r1=1796663&r2=1796664&view=diff
==============================================================================
--- spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/run_nightly (original)
+++ spamassassin/tags/sa-update_3.3.3_20170529092617/build/mkupdates/run_nightly Mon May 29 16:27:31 2017
@@ -1,78 +1,226 @@
#!/bin/bash
-#
-# driver for cron.
-# 30 8 * * * automc bash /usr/local/spamassassin/svn/trunk/build/mkupdates/run_nightly > /var/www/bbmass.spamassassin.org/mkupdates/mkupdates.txt 2>&1
-set -x
+PERL=/usr/bin/perl
LOGDIR="/var/www/bbmass.spamassassin.org/mkupdates"
+REPDIR="/var/www/ruleqa.spamassassin.org/reports"
+UPDDIR="/var/www/bbmass.spamassassin.org/updates"
-cd /usr/local/spamassassin/svn/trunk/
+VERSIONS="3.3.3"
+
+cd /usr/local/spamassassin/automc/svn/trunk
. /etc/profile
-#Switched to system perl on spamassassin-vm box
-PERL=/usr/bin/perl
-#PERL=/local/perl586/bin/perl
-export PERL
-# Will this script be updated? If so, re-run it after updating.
-FLAG=NO
-if [ "`svn status -uq build/mkupdates/run_nightly | head -1 | cut -b8`" = "*" ]; then
- FLAG=YES
-fi
-
-svn cleanup # paranoia
-svn update || exit $?
-
-# Do the restart if we need to ...
-if [ "$FLAG" = "YES" ]; then
- #THIS IS NOT WORKING CURRENTLY 6-15-2014
- exec $0 "$@"
-
- # It shouldn't get here, but just in case ...
- exit 2
-fi
-
-$PERL ./build/mkupdates/listpromotable > rules/active.list.new || exit $?
-mv rules/active.list.new rules/active.list
-
-(
-echo "
-
-To commit this and proceed with update tarball creation:
-
- ssh sa-vm1.apache.org
- sudo -u automc /usr/local/spamassassin/svn/trunk/build/mkupdates/run_part2
-
-"
-
-svn diff
-) > $HOME/LATEST
-
-cat $HOME/LATEST
-# mailx -s "[admin] planned commit for active.list" \
-# dev@Spamassassin.apache.org < /home/updatesd/LATEST
-
-# cycle the logfiles; keep 6 (3 days worth I think)
-X=6
-[[ -e "$LOGDIR/mkupdates_${X}.txt" ]] && rm -f $LOGDIR/mkupdates_${X}.txt
-while [[ $X -gt 0 ]]; do
- ((X--))
- Y=$((X+1))
- [[ -e "$LOGDIR/mkupdates_${X}.txt" ]] && mv -f $LOGDIR/mkupdates_${X}.txt $LOGDIR/mkupdates_${Y}.txt
-done
-mv -f $LOGDIR/mkupdates.txt $LOGDIR/mkupdates_${Y}.txt
+# ---------------------------------------------------------------------------
+
+promote_active_rules() {
+ pwd
+
+ $PERL build/mkupdates/listpromotable > rules/active.list.new || exit $?
+ mv rules/active.list.new rules/active.list
+
+ svn diff rules > $REPDIR/LATEST
+
+ cat $REPDIR/LATEST
+
+ echo "Committing promotions in rules/active.list..."
+ svn commit -m 'promotions validated' rules/active.list
+
+ # create a list of "bad" rules in the current sandboxes, updated daily
+ $PERL masses/rule-qa/list-bad-rules > $REPDIR/badrules.txt 2>&1
+
+ #On Wednesday's, we send out a bad sandbox rules report to the list
+ if [[ `date +%w` = 3 ]] ; then
+ (
+ echo "From: noreply@sa-vm1.apache.org (Rules Report Cron)"
+ echo "Subject: [auto] bad sandbox rules report"
+ echo
+ cat $REPDIR/badrules.txt
+ ) | /usr/sbin/sendmail -oi dev@spamassassin.apache.org
+ fi
+}
+
+# ---------------------------------------------------------------------------
+
+make_tarball_for_version() {
+ version="$1"
+
+ tmpdir=$HOME/tmp/stage/$version
+ rm -rf $tmpdir; mkdir -p $tmpdir || exit $?
+
+ # extract the new rules files.
+
+ # use "make install" logic, since we want rules as close as possible
+ # to what's installed
+ # TODO: this *would* be performed in a checkout of the desired
+ # version's branch. right now we're only using 1 version though
+ make clean
+ $PERL Makefile.PL PREFIX=$tmpdir < /dev/null || exit $?
+ make || exit $?
+
+ # 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
+
+ # ensure the basic lint/rule-sanity test suite passes for this ruleset
+ # before we build an update from it. useful particularly to catch
+ # "tflags nopublish" leakage (bug 6297)
+ make test \
+ TEST_FILES="t/basic_lint.t t/basic_lint_without_sandbox.t t/basic_meta.t" \
+ || exit $?
+
+ # remove the rules files for rules we won't be shipping
+ rm rules/70_sandbox.cf rules/70_inactive.cf
+
+ # double check we still lint without those 2 files
+ ./spamassassin --lint || exit $?
+
+ rulesdir=`pwd`/rules
+
+ (
+ cd $rulesdir
+
+ # Use this to include plugin .pm files:
+ # tar cvf - *.cf *.pm || exit $?
+
+ # or this, to ban code from the updates:
+ tar cvf - *.cf || exit $?
-# create a list of "bad" rules in the current sandboxes, updated daily
-$PERL masses/rule-qa/list-bad-rules \
- > /var/www/ruleqa.spamassassin.org/reports/badrules.txt 2>&1
+ ) | gzip -9 > $tmpdir/update.tgz || exit $?
-#On Wednesday's, we send out a bad sandbox rules report to the list
-if [ `date +%w` = 3 ] ; then
+ # ensure non-empty
+ [ -s $tmpdir/update.tgz ] || exit 3
+
+ linttmp=$tmpdir/lintdir
+ rm -rf $linttmp
+ mkdir $linttmp
+ (
+ cd $linttmp
+ # check validity of tarball; also extract
+ gunzip -cd < $tmpdir/update.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
+ gpg --batch --homedir $HOME/key \
+ -bas $tmpdir/update.tgz || exit $?
+
+ $PERL build/sha1sum.pl $tmpdir/update.tgz > $tmpdir/update.tgz.sha1 || exit $?
+
+
+ # 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}
+
+ # this svn copy is critical, to ensure each version's tarball has a different
+ # rev#. if you remove it, we need to prefix the version# to the svnrev# in
+ # the filenames instead so each version doesn't clobber others.
+ 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:
(
- echo "From: noreply@sa-vm1.apache.org (Rules Report Cron)"
- echo "Subject: [auto] bad sandbox rules report"
- echo
- cat /var/www/ruleqa.spamassassin.org/reports/badrules.txt
- ) | /usr/sbin/sendmail -oi dev@spamassassin.apache.org
-fi
+ rm -rf tmpcheckout
+ svn co $tagurl tmpcheckout && svn info tmpcheckout
+ rm -rf tmpcheckout
+ ) < /dev/null > $tmpdir/svn 2>&1 || exit $?
+
+ svnrev=`(grep 'Last Changed Rev: ' $tmpdir/svn || exit 1) | \
+ sed -e 's/^.*: //'`
+
+ if [ "$svnrev" == "" ] ; then
+ echo "missing SVN revision"
+ cat $tmpdir/svn
+ exit 5
+ fi
+
+ if [ "$svnrev" -lt 1 ] ; then
+ echo "bad SVN revision: $svnrev"
+ cat $tmpdir/svn
+ exit 5
+ fi
+
+ mv $tmpdir/update.tgz $UPDDIR/$svnrev.tar.gz || exit $?
+ mv $tmpdir/update.tgz.sha1 $UPDDIR/$svnrev.tar.gz.sha1 || exit $?
+ mv $tmpdir/update.tgz.asc $UPDDIR/$svnrev.tar.gz.asc || exit $?
+
+ chmod 644 $UPDDIR/$svnrev.*
+
+
+ # next, create/update the new DNS record....
+
+ # turn "3.2.0" into "0.2.3"
+ rvers=`echo "$version" | rev`
+
+ /usr/local/bin/updateDNS.sh ${rvers}.updates TXT ${svnrev}
+
+ # 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 $UPDDIR -mtime +4 -perm 0644 -type f -name '*.tar.*' -delete
+
+}
+
+# ---------------------------------------------------------------------------
+
+cycle_logfiles () {
+ # cycle the logfiles; keep 6 (3 days worth I think)
+ if [[ -e "$LOGDIR/mkupdates.txt" ]]; then
+ X=6
+ [[ -e "$LOGDIR/mkupdates_${X}.txt" ]] && rm -f $LOGDIR/mkupdates_${X}.txt
+ while [[ $X -gt 0 ]]; do
+ ((X--))
+ Y=$((X+1))
+ [[ -e "$LOGDIR/mkupdates_${X}.txt" ]] && mv -f $LOGDIR/mkupdates_${X}.txt $LOGDIR/mkupdates_${Y}.txt
+ done
+ mv -f $LOGDIR/mkupdates.txt $LOGDIR/mkupdates_${Y}.txt
+ fi
+}
+
+# ---------------------------------------------------------------------------
+
+[[ -d $UPDDIR ]] || echo "Updates dir '$UPDDIR' not found." 1>&2
+[[ -d $UPDDIR ]] || exit 6
+
+set -x
+
+promote_active_rules
+
+for VER in $VERSIONS; do
+ make_tarball_for_version $VER
+done
+
+set +x
+
+ls -l $UPDDIR/GPG.KEY
+ls -l $UPDDIR/MIRRORED.BY
+ls -ltr $UPDDIR/*.tar.* | tail -20
+
+cycle_logfiles
+
+rm -rf ruleqa.cache.*
+
+exit
+
+