| #!/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); |
| } |
| } |
| |