blob: ffd2cf7bc124f2fe584d3190c0653423cc077e02 [file] [log] [blame]
#!/usr/bin/perl -w
use strict;
sub run;
# Mar 6 2007 jm: use the "Cool Tools" Solaris-optimized perl
my $perl = '/usr/local/bin/perl';
# my $perl = $^X;
if (!$perl) {
die "no perl path found in ARGV!";
}
my $slavename;
$|=1;
my $pwd = `pwd`;
$pwd =~ /slaves\/([-_A-Za-z0-9]+)\//; if ($1) {
$slavename = $1;
} else {
die "cannot work out slavename! $pwd";
}
my %mass_check_args = (
'mc-fast' => '--tail=2000',
'mc-med' => '--tail=12000 --head=10000',
## 'mc-slow' => '--tail=22000 --head=10000',
## 'mc-slower' => '--tail=42000 --head=20000',
);
# super-nice please!
#
system ("renice +19 $$");
$ENV{'TMPDIR'} = '/tmpfs';
# cd to masses
#
chdir "masses" or die;
unlink ("ham.log", "spam.log");
# change of plan: mass-check the entire ruleset
#
system ("rm -rf tstrules");
run "mkdir tstrules";
run "cp ../rules/*.* tstrules";
run "cp plugins/*.* tstrules";
# well, ok just those, and anything that's been mailed-in
#
if (-f 'mailed.cf') {
run "cp mailed.cf tstrules/70_mailed.cf";
}
run "ls -l tstrules";
# create the user_prefs file for the mass-check. Settings: turn off Bayes;
# turn off the auto-whitelist.
mkdir "spamassassin";
open PREFS, ">spamassassin/user_prefs";
print PREFS q{
use_bayes 0
use_auto_whitelist 0
};
close PREFS or die "cannot create 'spamassassin/user_prefs' file: $! $@";
# notes on this mass-check command:
#
# this is run in a chroot jail, just in case there's hostile rule code in
# there.
# de-encapsulate 'report_safe' messages from petuniapress.com.
# produce lots of noisy output to stop the buildbot from timing out on
# mass-checks of large corpora.
# store AICache data in /tmpfs/aicache.
# ignore mails older than 6 months (use the nightly runs for those corpora,
# it's too slow to mass-check them here).
run "/local/bbmasstools/masschroot $perl ".
"mass-check -c=tstrules --cache -j=1 ".
"--noisy --deencap='petuniapress.com' ".
"--cachedir=/tmpfs/aicache_bbmass ".
"--after='6 months ago' ".
$mass_check_args{$slavename}." ".
"ham:detect:/export/home/bbmass/uploadedcorpora/*/ham/* ".
"spam:detect:/export/home/bbmass/uploadedcorpora/*/spam/*";
exit;
# ---------------------------------------------------------------------------
sub run {
my ($cmd, $ignoreexit) = @_;
print "[$cmd]\n";
system ($cmd);
if (!$ignoreexit) {
die "command '$cmd' failed with status $?" if (($? >> 8) != 0);
} else {
return ($? >> 8);
}
}