Update version, use parallel make, and replace Lempel-Ziv with

Tue, 28 Aug 2012 19:00:50 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 28 Aug 2012 19:00:50 +0200
changeset 629
27f852b7efd2
parent 628
10fbfbc9b548
child 630
561e962f5a6e

Update version, use parallel make, and replace Lempel-Ziv with
Burrows–Wheeler source compression. The version update implies
removal of all patch code as it was integrated in the release.

spamassassin/spamassassin.patch file | annotate | diff | comparison | revisions
spamassassin/spamassassin.spec file | annotate | diff | comparison | revisions
     1.1 --- a/spamassassin/spamassassin.patch	Tue Aug 28 19:00:40 2012 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,250 +0,0 @@
     1.4 -Index: lib/Mail/SpamAssassin/Dns.pm
     1.5 ---- lib/Mail/SpamAssassin/Dns.pm.orig	2010-03-16 15:49:21.000000000 +0100
     1.6 -+++ lib/Mail/SpamAssassin/Dns.pm	2011-02-08 16:03:06.000000000 +0100
     1.7 -@@ -754,7 +754,7 @@
     1.8 -   dbg("dns: entering helper-app run mode");
     1.9 -   $self->{old_slash} = $/;              # Razor pollutes this
    1.10 -   %{$self->{old_env}} = ();
    1.11 --  if ( defined %ENV ) {
    1.12 -+  if (%ENV) {
    1.13 -     # undefined values in %ENV can result due to autovivification elsewhere,
    1.14 -     # this prevents later possible warnings when we restore %ENV
    1.15 -     while (my ($key, $value) = each %ENV) {
    1.16 -Index: lib/Mail/SpamAssassin/HTML.pm
    1.17 ---- lib/Mail/SpamAssassin/HTML.pm.orig	2010-03-16 15:49:21.000000000 +0100
    1.18 -+++ lib/Mail/SpamAssassin/HTML.pm	2011-02-08 16:03:06.000000000 +0100
    1.19 -@@ -191,7 +191,7 @@
    1.20 -   my $self = shift;
    1.21 -   my %options = @_;
    1.22 - 
    1.23 --  return join('', @{ $self->{text} }) unless keys %options;
    1.24 -+  return join('', @{ $self->{text} }) unless %options;
    1.25 - 
    1.26 -   my $mask;
    1.27 -   while (my ($k, $v) = each %options) {
    1.28 -Index: lib/Mail/SpamAssassin/Plugin/AntiVirus.pm
    1.29 ---- lib/Mail/SpamAssassin/Plugin/AntiVirus.pm.orig	2010-03-16 15:49:21.000000000 +0100
    1.30 -+++ lib/Mail/SpamAssassin/Plugin/AntiVirus.pm	2011-02-08 16:04:30.000000000 +0100
    1.31 -@@ -98,9 +98,9 @@
    1.32 -     my ($ctype, $boundary, $charset, $name) =
    1.33 -       Mail::SpamAssassin::Util::parse_content_type($p->get_header('content-type'));
    1.34 - 
    1.35 --    $name = lc $name || '';
    1.36 -+    $name = lc($name || '');
    1.37 - 
    1.38 --    my $cte = lc $p->get_header('content-transfer-encoding') || '';
    1.39 -+    my $cte = lc($p->get_header('content-transfer-encoding') || '');
    1.40 -     $ctype = lc $ctype;
    1.41 - 
    1.42 -     if ($name && $name =~ /\.(?:ade|adp|asx|bas|bat|chm|cmd|com|cpl|crt|dll|exe|hlp|hta|inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdt|mdw|mdz|msc|msi|msp|mst|nws|ops|pcd|pif|prf|reg|scf|scr\??|sct|shb|shs|shm|swf|url|vb|vbe|vbs|vbx|vxd|wsc|wsf|wsh)$/)
    1.43 -Index: lib/Mail/SpamAssassin/Plugin/BodyEval.pm
    1.44 ---- lib/Mail/SpamAssassin/Plugin/BodyEval.pm.orig	2010-03-16 15:49:21.000000000 +0100
    1.45 -+++ lib/Mail/SpamAssassin/Plugin/BodyEval.pm	2011-02-08 16:03:06.000000000 +0100
    1.46 -@@ -119,7 +119,7 @@
    1.47 -         }
    1.48 - 
    1.49 - 	# If there are no words, mark if there's at least 1 image ...
    1.50 --	if (keys %html == 0 && exists $pms->{html}{inside}{img}) {
    1.51 -+	if (!%html && exists $pms->{html}{inside}{img}) {
    1.52 - 	  # Use "\n" as the mark since it can't ever occur normally
    1.53 - 	  $html{"\n"}=1;
    1.54 - 	}
    1.55 -Index: lib/Mail/SpamAssassin/Plugin/Check.pm
    1.56 ---- lib/Mail/SpamAssassin/Plugin/Check.pm.orig	2010-03-16 15:49:21.000000000 +0100
    1.57 -+++ lib/Mail/SpamAssassin/Plugin/Check.pm	2011-02-08 16:03:06.000000000 +0100
    1.58 -@@ -307,64 +307,51 @@
    1.59 -   my $package_name = __PACKAGE__;
    1.60 -   my $methodname = $package_name."::_".$ruletype."_tests_".$clean_priority;
    1.61 - 
    1.62 --  if (defined &{$methodname} && !$doing_user_rules) {
    1.63 --run_compiled_method:
    1.64 --  # dbg("rules: run_generic_tests - calling %s", $methodname);
    1.65 --    my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline });
    1.66 --    my $err = $t->run(sub {
    1.67 --      no strict "refs";
    1.68 --      $methodname->($pms, @{$opts{args}});
    1.69 --    });
    1.70 --    if ($t->timed_out() && $master_deadline && time > $master_deadline) {
    1.71 --      info("check: exceeded time limit in $methodname, skipping further tests");
    1.72 --      $pms->{deadline_exceeded} = 1;
    1.73 --    }
    1.74 --    return;
    1.75 --  }
    1.76 -+  if (!defined &{$methodname} || $doing_user_rules) {
    1.77 - 
    1.78 --  # use %nopts for named parameter-passing; it's more friendly to future-proof
    1.79 --  # subclassing, since new parameters can be added without breaking third-party
    1.80 --  # subclassed implementations of this plugin.
    1.81 --  my %nopts = (
    1.82 --    ruletype => $ruletype,
    1.83 --    doing_user_rules => $doing_user_rules,
    1.84 --    priority => $priority,
    1.85 --    clean_priority => $clean_priority
    1.86 --  );
    1.87 --
    1.88 --  # build up the eval string...
    1.89 --  $self->{evalstr_methodname} = $methodname;
    1.90 --  $self->{evalstr_chunk_current_methodname} = undef;
    1.91 --  $self->{evalstr_chunk_methodnames} = [];
    1.92 --  $self->{evalstr_chunk_prefix} = [];  # stack (array) of source code sections
    1.93 --  $self->{evalstr} = ''; $self->{evalstr_l} = 0;
    1.94 --  $self->{evalstr2} = '';
    1.95 --  $self->begin_evalstr_chunk($pms);
    1.96 --
    1.97 --  $self->push_evalstr_prefix($pms, '
    1.98 --      # start_rules_plugin_code '.$ruletype.' '.$priority.'
    1.99 --      my $scoresptr = $self->{conf}->{scores};
   1.100 --  ');
   1.101 --  if (defined $opts{pre_loop_body}) {
   1.102 --    $opts{pre_loop_body}->($self, $pms, $conf, %nopts);
   1.103 --  }
   1.104 --  $self->add_evalstr($pms,
   1.105 --                     $self->start_rules_plugin_code($ruletype, $priority) );
   1.106 --  while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) {
   1.107 --    $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts);
   1.108 --  }
   1.109 --  if (defined $opts{post_loop_body}) {
   1.110 --    $opts{post_loop_body}->($self, $pms, $conf, %nopts);
   1.111 --  }
   1.112 -+    # use %nopts for named parameter-passing; it's more friendly
   1.113 -+    # to future-proof subclassing, since new parameters can be added without
   1.114 -+    # breaking third-party subclassed implementations of this plugin.
   1.115 -+    my %nopts = (
   1.116 -+      ruletype => $ruletype,
   1.117 -+      doing_user_rules => $doing_user_rules,
   1.118 -+      priority => $priority,
   1.119 -+      clean_priority => $clean_priority
   1.120 -+    );
   1.121 -+
   1.122 -+    # build up the eval string...
   1.123 -+    $self->{evalstr_methodname} = $methodname;
   1.124 -+    $self->{evalstr_chunk_current_methodname} = undef;
   1.125 -+    $self->{evalstr_chunk_methodnames} = [];
   1.126 -+    $self->{evalstr_chunk_prefix} = []; # stack (array) of source code sections
   1.127 -+    $self->{evalstr} = ''; $self->{evalstr_l} = 0;
   1.128 -+    $self->{evalstr2} = '';
   1.129 -+    $self->begin_evalstr_chunk($pms);
   1.130 -+
   1.131 -+    $self->push_evalstr_prefix($pms, '
   1.132 -+        # start_rules_plugin_code '.$ruletype.' '.$priority.'
   1.133 -+        my $scoresptr = $self->{conf}->{scores};
   1.134 -+    ');
   1.135 -+    if (defined $opts{pre_loop_body}) {
   1.136 -+      $opts{pre_loop_body}->($self, $pms, $conf, %nopts);
   1.137 -+    }
   1.138 -+    $self->add_evalstr($pms,
   1.139 -+                       $self->start_rules_plugin_code($ruletype, $priority) );
   1.140 -+    while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) {
   1.141 -+      $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts);
   1.142 -+    }
   1.143 -+    if (defined $opts{post_loop_body}) {
   1.144 -+      $opts{post_loop_body}->($self, $pms, $conf, %nopts);
   1.145 -+    }
   1.146 - 
   1.147 --  $self->flush_evalstr($pms, 'run_generic_tests');
   1.148 --  $self->free_ruleset_source($pms, $ruletype, $priority);
   1.149 -+    $self->flush_evalstr($pms, 'run_generic_tests');
   1.150 -+    $self->free_ruleset_source($pms, $ruletype, $priority);
   1.151 - 
   1.152 --  # clear out a previous version of this method
   1.153 --  undef &{$methodname};
   1.154 -+    # clear out a previous version of this method
   1.155 -+    undef &{$methodname};
   1.156 - 
   1.157 --  # generate the loop that goes through each line...
   1.158 --  my $evalstr = <<"EOT";
   1.159 -+    # generate the loop that goes through each line...
   1.160 -+    my $evalstr = <<"EOT";
   1.161 -   {
   1.162 -     package $package_name;
   1.163 - 
   1.164 -@@ -373,40 +360,51 @@
   1.165 -     sub $methodname {
   1.166 - EOT
   1.167 - 
   1.168 --  for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) {
   1.169 --    $evalstr .= "      $chunk_methodname(\@_);\n";
   1.170 --  }
   1.171 -+    for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) {
   1.172 -+      $evalstr .= "      $chunk_methodname(\@_);\n";
   1.173 -+    }
   1.174 - 
   1.175 --  $evalstr .= <<"EOT";
   1.176 -+    $evalstr .= <<"EOT";
   1.177 -     }
   1.178 - 
   1.179 -     1;
   1.180 -   }
   1.181 - EOT
   1.182 - 
   1.183 --  delete $self->{evalstr};   # free up some RAM before we eval()
   1.184 --  delete $self->{evalstr2};
   1.185 --  delete $self->{evalstr_methodname};
   1.186 --  delete $self->{evalstr_chunk_current_methodname};
   1.187 --  delete $self->{evalstr_chunk_methodnames};
   1.188 --  delete $self->{evalstr_chunk_prefix};
   1.189 --
   1.190 --  dbg("rules: run_generic_tests - compiling eval code: %s, priority %s",
   1.191 --      $ruletype, $priority);
   1.192 --# dbg("rules: eval code to compile: $evalstr");
   1.193 --  my $eval_result;
   1.194 --  { my $timer = $self->{main}->time_method('compile_gen');
   1.195 --    $eval_result = eval($evalstr);
   1.196 --  }
   1.197 --  if (!$eval_result) {
   1.198 --    my $eval_stat = $@ ne '' ? $@ : "errno=$!";  chomp $eval_stat;
   1.199 --    warn "rules: failed to compile $ruletype tests, skipping:\n".
   1.200 --         "\t($eval_stat)\n";
   1.201 --    $pms->{rule_errors}++;
   1.202 --  }
   1.203 --  else {
   1.204 -+    delete $self->{evalstr};   # free up some RAM before we eval()
   1.205 -+    delete $self->{evalstr2};
   1.206 -+    delete $self->{evalstr_methodname};
   1.207 -+    delete $self->{evalstr_chunk_current_methodname};
   1.208 -+    delete $self->{evalstr_chunk_methodnames};
   1.209 -+    delete $self->{evalstr_chunk_prefix};
   1.210 -+
   1.211 -+    dbg("rules: run_generic_tests - compiling eval code: %s, priority %s",
   1.212 -+        $ruletype, $priority);
   1.213 -+  # dbg("rules: eval code to compile: $evalstr");
   1.214 -+    my $eval_result;
   1.215 -+    { my $timer = $self->{main}->time_method('compile_gen');
   1.216 -+      $eval_result = eval($evalstr);
   1.217 -+    }
   1.218 -+    if (!$eval_result) {
   1.219 -+      my $eval_stat = $@ ne '' ? $@ : "errno=$!";  chomp $eval_stat;
   1.220 -+      warn "rules: failed to compile $ruletype tests, skipping:\n".
   1.221 -+           "\t($eval_stat)\n";
   1.222 -+      $pms->{rule_errors}++;
   1.223 -+      return;
   1.224 -+    }
   1.225 -     dbg("rules: compiled $ruletype tests");
   1.226 --    goto run_compiled_method;
   1.227 -+  }
   1.228 -+
   1.229 -+#run_compiled_method:
   1.230 -+# dbg("rules: run_generic_tests - calling %s", $methodname);
   1.231 -+  my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline });
   1.232 -+  my $err = $t->run(sub {
   1.233 -+    no strict "refs";
   1.234 -+    $methodname->($pms, @{$opts{args}});
   1.235 -+  });
   1.236 -+  if ($t->timed_out() && $master_deadline && time > $master_deadline) {
   1.237 -+    info("check: exceeded time limit in $methodname, skipping further tests");
   1.238 -+    $pms->{deadline_exceeded} = 1;
   1.239 -   }
   1.240 - }
   1.241 - 
   1.242 -Index: lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
   1.243 ---- lib/Mail/SpamAssassin/Plugin/MIMEEval.pm.orig	2010-03-16 15:49:21.000000000 +0100
   1.244 -+++ lib/Mail/SpamAssassin/Plugin/MIMEEval.pm	2011-02-08 16:03:32.000000000 +0100
   1.245 -@@ -498,7 +498,7 @@
   1.246 -     # perhaps just limit to test, and image?
   1.247 -     next if ($ctype eq 'application/ics');
   1.248 - 
   1.249 --    my $cte = lc $p->get_header('content-transfer-encoding') || '';
   1.250 -+    my $cte = lc($p->get_header('content-transfer-encoding') || '');
   1.251 -     next if ($cte !~ /^base64$/);
   1.252 -     foreach my $l ( @{$p->raw()} ) {
   1.253 -       my $len = length $l;
     2.1 --- a/spamassassin/spamassassin.spec	Tue Aug 28 19:00:40 2012 +0200
     2.2 +++ b/spamassassin/spamassassin.spec	Tue Aug 28 19:00:50 2012 +0200
     2.3 @@ -22,9 +22,9 @@
     2.4  ##
     2.5  
     2.6  #   package version
     2.7 -%define       V_real 3.3.1
     2.8 -%define       V_here 3.3.1
     2.9 -%define       V_sdir 3.3.1
    2.10 +%define       V_real 3.3.2
    2.11 +%define       V_here 3.3.2
    2.12 +%define       V_sdir 3.3.2
    2.13  
    2.14  #   package information
    2.15  Name:         spamassassin
    2.16 @@ -37,31 +37,26 @@
    2.17  Group:        Mail
    2.18  License:      ASF
    2.19  Version:      %{V_here}
    2.20 -Release:      20110914
    2.21 +Release:      20120800
    2.22  
    2.23  #   package options
    2.24  %option       with_fsl  yes
    2.25  
    2.26  #   list of sources
    2.27 -Source0:      http://www.apache.org/dist/spamassassin/source/Mail-SpamAssassin-%{V_real}.tar.gz
    2.28 +Source0:      http://www.apache.org/dist/spamassassin/source/Mail-SpamAssassin-%{V_real}.tar.bz2
    2.29  Source1:      rc.spamassassin
    2.30  Source2:      local.cf
    2.31  Source3:      fsl.spamassassin
    2.32 -Patch0:       spamassassin.patch
    2.33  
    2.34  #   build information
    2.35 -Prefix:       %{l_prefix}
    2.36 -BuildRoot:    %{l_buildroot}
    2.37 -BuildPreReq:  OpenPKG, openpkg >= 20060823, perl, perl-openpkg >= 5.8.4, make
    2.38 -PreReq:       OpenPKG, openpkg >= 20060823, perl, gnupg
    2.39 +BuildPreReq:  OpenPKG, openpkg >= 20100101, perl, perl-openpkg >= 5.8.4, make
    2.40 +PreReq:       OpenPKG, openpkg >= 20100101, perl, gnupg
    2.41  BuildPreReq:  perl-db, perl-crypto, perl-xml, perl-dns, perl-locale, perl-www
    2.42  PreReq:       perl-db, perl-crypto, perl-xml, perl-dns, perl-locale, perl-www
    2.43  %if "%{with_fsl}" == "yes"
    2.44  BuildPreReq:  fsl
    2.45  PreReq:       fsl
    2.46  %endif
    2.47 -AutoReq:      no
    2.48 -AutoReqProv:  no
    2.49  
    2.50  %description
    2.51      SpamAssassin provides you with a way to reduce if not completely
    2.52 @@ -76,12 +71,11 @@
    2.53      prog spamassassin = {
    2.54          version   = %{V_real}
    2.55          url       = http://www.apache.org/dist/spamassassin/source/
    2.56 -        regex     = Mail-SpamAssassin-(\d+\.\d+\.\d+)\.tar\.gz
    2.57 +        regex     = Mail-SpamAssassin-(\d+\.\d+\.\d+)\.tar\.bz2
    2.58      }
    2.59  
    2.60  %prep
    2.61      %setup -q -n Mail-SpamAssassin-%{V_sdir}
    2.62 -    %patch -p0
    2.63  
    2.64  %build
    2.65      #   configure package
    2.66 @@ -99,11 +93,9 @@
    2.67          -A PERL_BIN="%{l_prefix}/bin/perl"
    2.68  
    2.69      #   build package
    2.70 -    %{l_make} %{l_mflags}
    2.71 +    %{l_make} %{l_mflags -O}
    2.72  
    2.73  %install
    2.74 -    rm -rf $RPM_BUILD_ROOT
    2.75 -
    2.76      #   install package
    2.77      %{l_make} %{l_mflags} install
    2.78  
    2.79 @@ -151,7 +143,6 @@
    2.80  %files -f files
    2.81  
    2.82  %clean
    2.83 -    rm -rf $RPM_BUILD_ROOT
    2.84  
    2.85  %post
    2.86      #   after upgrade, restart service

mercurial