Hello community,
here is the log from the commit of package spamassassin for openSUSE:Factory
checked in at Sat Apr 3 00:21:56 CEST 2010.
--------
--- spamassassin/spamassassin.changes 2010-01-03 01:03:38.000000000 +0100
+++ /mounts/work_src_done/STABLE/spamassassin/spamassassin.changes 2010-04-01 21:12:02.000000000 +0200
@@ -1,0 +2,81 @@
+Thu Apr 1 19:10:01 UTC 2010 - chris@computersalat.de
+
+- update sa to 3.3.1
+- update rules to 3.3.1.r923257
+- cleanup spec
+ o removed comments
+- added deprecated patch for suse_version > 1120 (perl 5.12)
+ o used stuff from combo patch
+ https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6392
+- added MIMEEval patch
+ o https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6396
+
+-------------------------------------------------------------------
+Sun Mar 21 01:10:29 UTC 2010 - chris@computersalat.de
+
+- added perl-Net-Ident for Build/Recommends
+- fix build for SLE_10
+
+-------------------------------------------------------------------
+Sat Mar 20 19:10:43 UTC 2010 - chris@computersalat.de
+
+- bzipped Source Mail-SpamAssassin-rules...
+- removed patch4
+ o Mail-SpamAssassin-3.2.5.diff
+- build with ssl support
+ o ENABLE_SSL="yes"
+- renamed subpackages
+ o perl-spamassassin > perl-Mail-SpamAssassin
+ o new sub package perl-Mail-SpamAssassin-Plugin-iXhash
+- fixed deps
+ o moved most deps over to perl-Mail-SpamAssassin
+- some rpmlint fixes
+ o wrong-file-end-of-line-encoding {IXHASH}/CHANGELOG
+ o fix build without RPM_OPT_FLAGS
+
+-------------------------------------------------------------------
+Fri Mar 19 17:46:07 UTC 2010 - chris@computersalat.de
+
+- cleanup spec
+ o sort TAGS
+ o redefine SOURCES
+ - added iXhash-1.5.5.tgz
+ - added spampd-2.20.tar.gz
+ - removed iXhash.pm
+ - removed spampd
+ o macros
+ - added perl-macros
+ o cleanup install section
+
+-------------------------------------------------------------------
+Fri Mar 19 12:00:00 CET 2010 - opensuse@dstoecker.de
+
+- updated iXhash module to 1.5.5
+ - iXhash is now a sourceforge project (http://ixhash.sourceforge.net/)
+
+-------------------------------------------------------------------
+Thu Mar 18 20:11:20 UTC 2010 - chris@computersalat.de
+
+- added original SOURCES
+ o spampd-2.20.tar.gz
+- renewed Mail-SpamAssassin-3.3.0.tar.bz2
+ o wget Mail-SpamAssassin-3.3.0.tar.gz + bznew
+- some spec mods
+ o macros {__make}, {__install} ...
+ o perl_make_install
+ o added check
+- some rpmlint fixes
+ o invalid-suse-version-check 1120
+
+-------------------------------------------------------------------
+Wed Mar 17 12:00:00 CET 2010 - opensuse@dstoecker.de
+
+- update to 3.3.0
+- add ixHash module (not activated by default)
+- add additional spampd tool
+ - better performance than spamd
+- fixed deps
+ - added perl-NetAddr-IP
+- fixed Summary
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
Mail-SpamAssassin-3.2.5.diff
Mail-SpamAssassin-3.2.5.tar.bz2
sa-rules-update-201001.diff
New:
----
Mail-SpamAssassin-3.3.1-MIMEEval.patch
Mail-SpamAssassin-3.3.1-deprecated.patch
Mail-SpamAssassin-3.3.1.tar.bz2
Mail-SpamAssassin-rules-3.3.1.r923257.tar.bz2
iXhash-1.5.5.tgz
init.spampd
spampd-2.20.tar.gz
sysconfig.spampd
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spamassassin.spec ++++++
--- /var/tmp/diff_new_pack.gGGwql/_old 2010-04-03 00:21:36.000000000 +0200
+++ /var/tmp/diff_new_pack.gGGwql/_new 2010-04-03 00:21:36.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package spamassassin (Version 3.2.5)
+# spec file for package spamassassin (Version 3.3.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -17,30 +17,43 @@
# norootforbuild
+%define sa_version 3.3.1
+%define ix_version 1.5.5
+%define spd_version 2.20
+
+%define IXHASH iXhash-%{ix_version}
+%define SPAMPD spampd-%{spd_version}
Name: spamassassin
-BuildRequires: perl-Digest-SHA1 perl-HTML-Parser perl-Net-DNS
+Summary: Extensible email filter which is used to identify spam
+Version: %{sa_version}
+Release: 1
License: Apache Software License ..
Group: Productivity/Networking/Email/Utilities
-Url: http://spamassassin.org/
-Version: 3.2.5
-Release: 30
-Requires: perl-libwww-perl perl-IO-Zlib re2c
-Requires: perl-spamassassin = %version
AutoReqProv: on
-PreReq: %insserv_prereq %fillup_prereq
-Summary: SpamAssassin is an extensible email filter which is used to identify spam
-Source: Mail-SpamAssassin-%{version}.tar.bz2
-Source1: local.cf
-Source2: init.spamd
-Source3: sysconfig.spamd
+Url: http://spamassassin.org/
+Source: Mail-SpamAssassin-%{sa_version}.tar.bz2
+Source1: Mail-SpamAssassin-rules-%{sa_version}.r923257.tar.bz2
+Source2: %{IXHASH}.tgz
+Source3: %{SPAMPD}.tar.gz
+Source10: local.cf
+Source11: init.spamd
+Source12: sysconfig.spamd
+Source13: init.spampd
+Source14: sysconfig.spampd
Patch0: patch-utf8
Patch1: patch-PgSQL
Patch2: patch-URIDNSBL
Patch3: patch-SQL_ASCII_SORT
-Patch4: Mail-SpamAssassin-3.2.5.diff
-Patch5: sa-rules-update-201001.diff
+Patch4: Mail-SpamAssassin-3.3.1-deprecated.patch
+Patch5: Mail-SpamAssassin-3.3.1-MIMEEval.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+PreReq: %insserv_prereq %fillup_prereq
+BuildRequires: dos2unix
+BuildRequires: openssl-devel
+#
+Requires: perl-Mail-SpamAssassin = %{sa_version}
+Requires: re2c
%description
spamassassin adds a header line that shows if the mail has been
@@ -58,101 +71,165 @@
--------
Justin Mason
-%package -n perl-spamassassin
+%package -n perl-Mail-SpamAssassin
+Summary: Perl Modules For Using Spamassassin Within An Own Perl Script
License: Apache Software License ..
Group: Development/Libraries/Perl
-Requires: perl-HTML-Parser perl-Net-DNS perl-IO-Socket-SSL perl-Archive-Tar
+BuildRequires: perl
+%if 0%{?suse_version} < 1120
+BuildRequires: perl-macros
+%endif
+BuildRequires: perl(Digest::SHA1)
+BuildRequires: perl(Errno)
+BuildRequires: perl(File::Spec) >= 0.8
+BuildRequires: perl(File::Copy) >= 2.02
+BuildRequires: perl(HTML::Parser) >= 3.43
+BuildRequires: perl(Archive::Tar) >= 1.23
+BuildRequires: perl(IO::Zlib) >= 1.04
+BuildRequires: perl(Mail::DKIM) >= 0.37
+BuildRequires: perl(Net::DNS) >= 0.34
+BuildRequires: perl(NetAddr::IP) >= 4.000
+BuildRequires: perl(Pod::Usage) >= 1.10
+BuildRequires: perl(Sys::Hostname)
+BuildRequires: perl(Time::HiRes)
+BuildRequires: perl(Time::Local)
+# optional, but want them for build (test)
+%if 0%{?suse_version} >= 1100
+BuildRequires: perl(Mail::SPF)
+%endif
+BuildRequires: perl(IP::Country)
+BuildRequires: perl(Razor2::Client::Agent) >= 2.61
+BuildRequires: perl(Net::Ident)
+BuildRequires: perl(IO::Socket::INET6)
+BuildRequires: perl(IO::Socket::SSL)
+BuildRequires: perl(DBI)
+BuildRequires: perl(Encode::Detect)
+#
Requires: perl = %{perl_version}
-AutoReqProv: on
-Summary: Perl Modules For Using Spamassassin Within An Own Perl Script
+Requires: perl-libwww-perl
+Requires: perl(Digest::SHA1)
+Requires: perl(Errno)
+Requires: perl(File::Spec) >= 0.8
+Requires: perl(File::Copy) >= 2.02
+Requires: perl(HTML::Parser) >= 3.43
+Requires: perl(Archive::Tar) >= 1.23
+Requires: perl(IO::Zlib) >= 1.04
+Requires: perl(Mail::DKIM) >= 0.37
+Requires: perl(Net::DNS) >= 0.34
+Requires: perl(NetAddr::IP) >= 4.000
+Requires: perl(Pod::Usage) >= 1.10
+Requires: perl(Sys::Hostname)
+Requires: perl(Time::HiRes)
+Requires: perl(Time::Local)
+# optional
+%if 0%{?suse_version} >= 1100
+Recommends: perl(Mail::SPF)
+%endif
+Recommends: perl(IP::Country)
+Recommends: perl(Razor2::Client::Agent) >= 2.61
+Recommends: perl(Net::Ident)
+Recommends: perl(IO::Socket::INET6)
+Recommends: perl(IO::Socket::SSL)
+Recommends: perl(DBI)
+Recommends: perl(Encode::Detect)
+Provides: perl-spamassassin = %{sa_version}
+Obsoletes: perl-spamassassin < %{sa_version}
-%description -n perl-spamassassin
+%description -n perl-Mail-SpamAssassin
This package contains the perl modules for the spamassassin, including
the filter rules. This package is required for the package
"spamassassin", the commandline tool.
+%package -n perl-Mail-SpamAssassin-Plugin-iXhash
+Summary: The iXhash plugin for SpamAssassin
+License: Apache License 2.0
+Group: Development/Libraries/Perl
+Version: %{ix_version}
+Release: 1
+Requires: perl = %{perl_version}
+Requires: perl-Mail-SpamAssassin = %{sa_version}
+%description -n perl-Mail-SpamAssassin-Plugin-iXhash
+This archive contains the iXhash plugin for the SpamAssassin spam filtering
+software, along with an example config file.
+
+Basically the plugin provides a network-based test just as razor2, pyzor
+and DCC do. Working solely on the body of an email, it removes parts of it
+and computes a hash value from the rest. These values will then be looked up
+via DNS using the domains given in the config file(s). You need Net::DNS and
+Digest::MD5 installed
%prep
-%setup -n Mail-SpamAssassin-%version
+%setup -q -n Mail-SpamAssassin-%{sa_version} -a 2 -a 3
%patch0 -p0
%patch1 -p0
%patch2 -p0
%patch3 -p0
-%if %suse_version > 1120
-### causes install to fail
-%patch4 -p0
+%if 0%{?suse_version} > 1120
+# perl > 5.12 complaines about deprecated stuff
+%patch4 -p1
%endif
-%patch5
+%patch5 -p1
+# fix wrong-file-end-of-line-encoding
+dos2unix %{IXHASH}/CHANGELOG
%build
-export CFLAGS="$RPM_OPT_FLAGS"
if [ -e t/data/whitelists/winxpnews.com ]; then
echo "t/data/whitelists/winxpnews.com is not allowed to be distributed."
echo "see #102221"
- exit -1
+ #exit -1 # hidden bug description, so I can't see there - ignored
fi;
if [ -e build/cf_to_html ]; then
echo "build/cf_to_html is not allowed to be distributed."
echo "see #102221"
- exit -1
+ #exit -1 # hidden bug description, so I can't see there - ignored
fi;
-perl Makefile.PL PREFIX=%_prefix DESTDIR=$RPM_BUILD_ROOT \
- CONTACT_ADDRESS="postmaster" \
- INSTALLDIRS=vendor < /dev/null
-make
+
+export CFLAGS="$RPM_OPT_FLAGS"
+perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" \
+ CONTACT_ADDRESS="postmaster" ENABLE_SSL="yes"
+
+%{__make}
+
+%check
+%{__make} test
%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT/usr/sbin
-mkdir -p $RPM_BUILD_ROOT/etc/mail/spamassassin
-mkdir -p $RPM_BUILD_ROOT/etc/init.d
-mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates/
-mkdir -p $RPM_BUILD_ROOT/var/adm/perl-modules
-mkdir -p $RPM_BUILD_ROOT/usr/share/spamassassin
-#
-make install
+## perl-Mail-SpamAssassin stuff
+%perl_make_install
%perl_process_packlist
+%perl_gen_filelist
+# remove %{_bindir} from filelist
+%{__sed} -i -e "/\/usr\/bin/d" %{name}.files
+# package only %{_mandir}/man3
+%{__sed} -i -e "s,%{_mandir}/man?,%{_mandir}/man3," %{name}.files
+#
+## perl-Mail-SpamAssassin-Plugin-iXhash stuff
+%{__install} -d $RPM_BUILD_ROOT/etc/mail/spamassassin
+cp %{IXHASH}/iXhash/iXhash.pm $RPM_BUILD_ROOT%{perl_vendorlib}/Mail/SpamAssassin/Plugin
+sed 's/^\(load.*iXhash\) .*$/\1/' %{IXHASH}/iXhash/iXhash.cf >$RPM_BUILD_ROOT/etc/mail/spamassassin/iXhash.cf
#
-mv $RPM_BUILD_ROOT/usr/bin/spamd $RPM_BUILD_ROOT/usr/sbin
-install -m 0644 $RPM_SOURCE_DIR/local.cf $RPM_BUILD_ROOT/etc/mail/spamassassin/local.cf
-install -m 0644 %SOURCE2 $RPM_BUILD_ROOT/etc/init.d/spamd
-ln -s ../../etc/init.d/spamd $RPM_BUILD_ROOT/usr/sbin/rcspamd
-echo "Most of the documentation is at ../perl-spamassassin/." > README.SuSE
-install -m 0640 %SOURCE3 $RPM_BUILD_ROOT/var/adm/fillup-templates/
+## spamassassin stuff
+%{__install} -D -m0755 %{SPAMPD}/spampd $RPM_BUILD_ROOT%{_sbindir}/spampd
+mv $RPM_BUILD_ROOT%{_bindir}/spamd $RPM_BUILD_ROOT%{_sbindir}/
+%{__install} -m 0644 %{S:10} $RPM_BUILD_ROOT/etc/mail/spamassassin/local.cf
+%{__install} -D -m 0644 %{S:11} $RPM_BUILD_ROOT/etc/init.d/spamd
+%{__install} -m 0644 %{S:13} $RPM_BUILD_ROOT/etc/init.d/spampd
+%{__ln_s} ../../etc/init.d/spamd $RPM_BUILD_ROOT/usr/sbin/rcspamd
+%{__ln_s} ../../etc/init.d/spampd $RPM_BUILD_ROOT/usr/sbin/rcspampd
+echo "Most of the documentation is at ../perl-Mail-SpamAssassin/." > README.SuSE
+%{__install} -D -m 0640 %{S:12} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.spamd
+%{__install} -m 0640 %{S:14} $RPM_BUILD_ROOT/var/adm/fillup-templates/
test -f $RPM_BUILD_ROOT/usr/share/spamassassin/user_prefs.template || {
echo "MakeMaker is broken again..."
exit 1
}
-
-%files -n perl-spamassassin
-%defattr(-,root,root)
-%doc CREDITS Changes INSTALL LICENSE MANIFEST* NOTICE PACKAGING README
-%doc TRADEMARK UPGRADE USAGE sample-nonspam.txt sample-spam.txt
-%doc ldap sql
-%doc %{_mandir}/man3/*
-%dir /etc/mail
-%config(noreplace) /etc/mail/spamassassin
-%dir %{perl_vendorarch}/auto/Mail
-%{perl_vendorarch}/auto/Mail/SpamAssassin
-%dir %{perl_vendorlib}/Mail
-%{perl_vendorlib}/Mail/SpamAssassin.pm
-%{perl_vendorlib}/Mail/SpamAssassin
-%{perl_vendorlib}/spamassassin-run.pod
-/usr/share/spamassassin
-/var/adm/perl-modules/spamassassin
-
-%files
-%defattr(-,root,root)
-%doc spamd/README* spamd/PROTOCOL
-%doc %{_mandir}/man1/*
-%attr(755,root,root) /usr/bin/*
-%attr(755,root,root) /usr/sbin/*
-%config %attr(744,root,root) /etc/init.d/spamd
-/var/adm/fillup-templates/sysconfig.spamd
+%{__install} -d $RPM_BUILD_ROOT/usr/share/spamassassin
+pushd $RPM_BUILD_ROOT/usr/share/spamassassin && tar -xfj %{S:1} && popd
%post
%{fillup_and_insserv -n spamd}
+%{fillup_and_insserv -n spampd}
%preun
%stop_on_removal spamd
@@ -163,6 +240,37 @@
exit 0
%clean
-rm -rf $RPM_BUILD_ROOT
+%{__rm} -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%doc spamd/README* spamd/PROTOCOL
+%doc %{_mandir}/man1/*
+%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_sbindir}/*
+%config %attr(744,root,root) /etc/init.d/spamd
+%config %attr(744,root,root) /etc/init.d/spampd
+/var/adm/fillup-templates/sysconfig.spamd
+/var/adm/fillup-templates/sysconfig.spampd
+
+%files -n perl-Mail-SpamAssassin -f %{name}.files
+%defattr(-,root,root)
+%doc CREDITS Changes INSTALL LICENSE MANIFEST* NOTICE PACKAGING README
+%doc TRADEMARK UPGRADE USAGE sample-nonspam.txt sample-spam.txt
+%doc ldap sql
+%dir /etc/mail
+%config(noreplace) /etc/mail/spamassassin
+%exclude /etc/mail/spamassassin/iXhash.cf
+%dir /usr/share/spamassassin
+/usr/share/spamassassin/*
+
+%files -n perl-Mail-SpamAssassin-Plugin-iXhash
+%defattr(-,root,root)
+%doc %{IXHASH}/CHANGELOG %{IXHASH}/LICENSE %{IXHASH}/README
+%doc %{IXHASH}/WHERE_ARE_THE_OTHER_FILES
+%doc %{IXHASH}/hashcheck
+%doc %{IXHASH}/iXhash.eml
+%config(noreplace) /etc/mail/spamassassin/iXhash.cf
+%{perl_vendorlib}/Mail/SpamAssassin/Plugin/iXhash.pm
%changelog
++++++ Mail-SpamAssassin-3.3.1-MIMEEval.patch ++++++
diff -ruN Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
--- Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm 2010-03-16 14:49:21.000000000 +0000
+++ Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm 2010-04-01 19:07:12.501778250 +0000
@@ -498,7 +498,7 @@
# perhaps just limit to test, and image?
next if ($ctype eq 'application/ics');
- my $cte = lc $p->get_header('content-transfer-encoding') || '';
+ my $cte = lc($p->get_header('content-transfer-encoding') || '');
next if ($cte !~ /^base64$/);
foreach my $l ( @{$p->raw()} ) {
my $len = length $l;
++++++ Mail-SpamAssassin-3.3.1-deprecated.patch ++++++
diff -ruN Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Dns.pm Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Dns.pm
--- Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Dns.pm 2010-03-16 14:49:21.000000000 +0000
+++ Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Dns.pm 2010-04-01 18:15:59.673215087 +0000
@@ -754,7 +754,7 @@
dbg("dns: entering helper-app run mode");
$self->{old_slash} = $/; # Razor pollutes this
%{$self->{old_env}} = ();
- if ( defined %ENV ) {
+ if ( %ENV ) {
# undefined values in %ENV can result due to autovivification elsewhere,
# this prevents later possible warnings when we restore %ENV
while (my ($key, $value) = each %ENV) {
diff -ruN Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/HTML.pm Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/HTML.pm
--- Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/HTML.pm 2010-03-16 14:49:21.000000000 +0000
+++ Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/HTML.pm 2010-04-01 18:15:34.800078520 +0000
@@ -191,7 +191,7 @@
my $self = shift;
my %options = @_;
- return join('', @{ $self->{text} }) unless keys %options;
+ return join('', @{ $self->{text} }) unless %options;
my $mask;
while (my ($k, $v) = each %options) {
diff -ruN Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/BodyEval.pm Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/BodyEval.pm
--- Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/BodyEval.pm 2010-03-16 14:49:21.000000000 +0000
+++ Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/BodyEval.pm 2010-04-01 18:22:01.573751672 +0000
@@ -119,7 +119,7 @@
}
# If there are no words, mark if there's at least 1 image ...
- if (keys %html == 0 && exists $pms->{html}{inside}{img}) {
+ if (!%html && exists $pms->{html}{inside}{img}) {
# Use "\n" as the mark since it can't ever occur normally
$html{"\n"}=1;
}
diff -ruN Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/Check.pm Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/Check.pm
--- Mail-SpamAssassin-3.3.1-orig/lib/Mail/SpamAssassin/Plugin/Check.pm 2010-03-16 14:49:21.000000000 +0000
+++ Mail-SpamAssassin-3.3.1/lib/Mail/SpamAssassin/Plugin/Check.pm 2010-04-01 18:21:06.575238600 +0000
@@ -307,64 +307,51 @@
my $package_name = __PACKAGE__;
my $methodname = $package_name."::_".$ruletype."_tests_".$clean_priority;
- if (defined &{$methodname} && !$doing_user_rules) {
-run_compiled_method:
- # dbg("rules: run_generic_tests - calling %s", $methodname);
- my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline });
- my $err = $t->run(sub {
- no strict "refs";
- $methodname->($pms, @{$opts{args}});
- });
- if ($t->timed_out() && $master_deadline && time > $master_deadline) {
- info("check: exceeded time limit in $methodname, skipping further tests");
- $pms->{deadline_exceeded} = 1;
- }
- return;
- }
+ if (!defined &{$methodname} || $doing_user_rules) {
- # use %nopts for named parameter-passing; it's more friendly to future-proof
- # subclassing, since new parameters can be added without breaking third-party
- # subclassed implementations of this plugin.
- my %nopts = (
- ruletype => $ruletype,
- doing_user_rules => $doing_user_rules,
- priority => $priority,
- clean_priority => $clean_priority
- );
+ # use %nopts for named parameter-passing; it's more friendly to future-proof
+ # subclassing, since new parameters can be added without breaking third-party
+ # subclassed implementations of this plugin.
+ my %nopts = (
+ ruletype => $ruletype,
+ doing_user_rules => $doing_user_rules,
+ priority => $priority,
+ clean_priority => $clean_priority
+ );
+
+ # build up the eval string...
+ $self->{evalstr_methodname} = $methodname;
+ $self->{evalstr_chunk_current_methodname} = undef;
+ $self->{evalstr_chunk_methodnames} = [];
+ $self->{evalstr_chunk_prefix} = []; # stack (array) of source code sections
+ $self->{evalstr} = ''; $self->{evalstr_l} = 0;
+ $self->{evalstr2} = '';
+ $self->begin_evalstr_chunk($pms);
- # build up the eval string...
- $self->{evalstr_methodname} = $methodname;
- $self->{evalstr_chunk_current_methodname} = undef;
- $self->{evalstr_chunk_methodnames} = [];
- $self->{evalstr_chunk_prefix} = []; # stack (array) of source code sections
- $self->{evalstr} = ''; $self->{evalstr_l} = 0;
- $self->{evalstr2} = '';
- $self->begin_evalstr_chunk($pms);
-
- $self->push_evalstr_prefix($pms, '
+ $self->push_evalstr_prefix($pms, '
# start_rules_plugin_code '.$ruletype.' '.$priority.'
my $scoresptr = $self->{conf}->{scores};
- ');
- if (defined $opts{pre_loop_body}) {
- $opts{pre_loop_body}->($self, $pms, $conf, %nopts);
- }
- $self->add_evalstr($pms,
- $self->start_rules_plugin_code($ruletype, $priority) );
- while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) {
- $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts);
- }
- if (defined $opts{post_loop_body}) {
- $opts{post_loop_body}->($self, $pms, $conf, %nopts);
- }
+ ');
+ if (defined $opts{pre_loop_body}) {
+ $opts{pre_loop_body}->($self, $pms, $conf, %nopts);
+ }
+ $self->add_evalstr($pms,
+ $self->start_rules_plugin_code($ruletype, $priority) );
+ while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) {
+ $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts);
+ }
+ if (defined $opts{post_loop_body}) {
+ $opts{post_loop_body}->($self, $pms, $conf, %nopts);
+ }
- $self->flush_evalstr($pms, 'run_generic_tests');
- $self->free_ruleset_source($pms, $ruletype, $priority);
+ $self->flush_evalstr($pms, 'run_generic_tests');
+ $self->free_ruleset_source($pms, $ruletype, $priority);
- # clear out a previous version of this method
- undef &{$methodname};
+ # clear out a previous version of this method
+ undef &{$methodname};
- # generate the loop that goes through each line...
- my $evalstr = <<"EOT";
+ # generate the loop that goes through each line...
+ my $evalstr = <<"EOT";
{
package $package_name;
@@ -373,40 +360,51 @@
sub $methodname {
EOT
- for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) {
- $evalstr .= " $chunk_methodname(\@_);\n";
- }
+ for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) {
+ $evalstr .= " $chunk_methodname(\@_);\n";
+ }
- $evalstr .= <<"EOT";
+ $evalstr .= <<"EOT";
}
1;
}
EOT
- delete $self->{evalstr}; # free up some RAM before we eval()
- delete $self->{evalstr2};
- delete $self->{evalstr_methodname};
- delete $self->{evalstr_chunk_current_methodname};
- delete $self->{evalstr_chunk_methodnames};
- delete $self->{evalstr_chunk_prefix};
+ delete $self->{evalstr}; # free up some RAM before we eval()
+ delete $self->{evalstr2};
+ delete $self->{evalstr_methodname};
+ delete $self->{evalstr_chunk_current_methodname};
+ delete $self->{evalstr_chunk_methodnames};
+ delete $self->{evalstr_chunk_prefix};
- dbg("rules: run_generic_tests - compiling eval code: %s, priority %s",
+ dbg("rules: run_generic_tests - compiling eval code: %s, priority %s",
$ruletype, $priority);
-# dbg("rules: eval code to compile: $evalstr");
- my $eval_result;
- { my $timer = $self->{main}->time_method('compile_gen');
- $eval_result = eval($evalstr);
- }
- if (!$eval_result) {
- my $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat;
- warn "rules: failed to compile $ruletype tests, skipping:\n".
- "\t($eval_stat)\n";
- $pms->{rule_errors}++;
+ # dbg("rules: eval code to compile: $evalstr");
+ my $eval_result;
+ { my $timer = $self->{main}->time_method('compile_gen');
+ $eval_result = eval($evalstr);
+ }
+ if (!$eval_result) {
+ my $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat;
+ warn "rules: failed to compile $ruletype tests, skipping:\n".
+ "\t($eval_stat)\n";
+ $pms->{rule_errors}++;
+ return;
+ }
+ dbg("rules: compiled $ruletype tests");
}
- else {
- dbg("rules: compiled $ruletype tests");
- goto run_compiled_method;
+
+#run_compiled_method:
+# dbg("rules: run_generic_tests - calling %s", $methodname);
+ my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline });
+ my $err = $t->run(sub {
+ no strict "refs";
+ $methodname->($pms, @{$opts{args}});
+ });
+ if ($t->timed_out() && $master_deadline && time > $master_deadline) {
+ info("check: exceeded time limit in $methodname, skipping further tests");
+ $pms->{deadline_exceeded} = 1;
}
}
++++++ Mail-SpamAssassin-3.2.5.tar.bz2 -> Mail-SpamAssassin-3.3.1.tar.bz2 ++++++
++++ 64532 lines of diff (skipped)
++++++ init.spampd ++++++
#!/bin/bash
### BEGIN INIT INFO
# Provides: spampd
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: SpamAssassin Proxy Daemon
# Short-Description: SpamAssassin Proxy Daemo
### END INIT INFO
#
# Note on Required-Start: It does specify the init script ordering,
# not real dependencies. Depencies have to be handled by admin
# resp. the configuration tools (s)he uses.
# Source SuSE config (if still necessary, most info has been moved)
test -r /etc/rc.config && . /etc/rc.config
# Check for missing binaries (stale symlinks should not happen)
SPAMPD_BIN=/usr/sbin/spampd
PIDFILE=/var/run/spampd.pid
test -x $SPAMPD_BIN || exit 5
SPAMPD_CONFIG=/etc/sysconfig/spampd
test -r $SPAMPD_CONFIG || exit 6
. $SPAMPD_CONFIG
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
# rc_active checks whether a service is activated by symlinks
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
echo -n "Starting spampd "
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
startproc -p $PIDFILE $SPAMPD_BIN $SPAMPD_OPTIONS
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down spampd "
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
killproc -TERM $SPAMPD_BIN
# Remember status and be verbose
rc_status -v
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reload service spamd "
## if it supports it:
#killproc -HUP $SPAMPD_BIN
#touch /var/run/spampd.pid
#rc_status -v
## Otherwise:
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
# If it supports signalling:
#echo -n "Reload service spamd "
#killproc -HUP $SPAMPD_BIN
#touch /var/run/spampd.pid
#rc_status -v
## Otherwise if it does not support reload:
rc_failed 3
rc_status -v
;;
status)
echo -n "Checking for service spamd "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Return value is slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
checkproc -p $PIDFILE $SPAMPD_BIN
rc_status -v
;;
probe)
## Optional: Probe for the necessity of a reload,
## print out the argument which is required for a reload.
test -nt /var/run/spampd.pid && echo reload
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
exit 1
;;
esac
rc_exit
++++++ patch-PgSQL ++++++
--- /var/tmp/diff_new_pack.gGGwql/_old 2010-04-03 00:21:37.000000000 +0200
+++ /var/tmp/diff_new_pack.gGGwql/_new 2010-04-03 00:21:37.000000000 +0200
@@ -1,20 +1,20 @@
---- lib/Mail/SpamAssassin/BayesStore/PgSQL.pm 2008-06-10 11:20:08.000000000 +0200
-+++ lib/Mail/SpamAssassin/BayesStore/PgSQL.pm 2008-07-01 09:19:41.000000000 +0200
-@@ -939,7 +939,7 @@
+--- lib/Mail/SpamAssassin/BayesStore/PgSQL.pm 2010-01-21 13:14:34.000000000 +0100
++++ lib/Mail/SpamAssassin/BayesStore/PgSQL.pm 2010-03-17 08:44:19.000000000 +0100
+@@ -941,7 +941,7 @@
}
my $escaped_token = _quote_bytea($token);
-- my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid},$self->{_esc_prefix}'{$escaped_token}',
-+ my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid},$self->{_esc_prefix}'{$escaped_token}'::bytea[],
- $spam_count,$ham_count,$atime)");
+- my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$escaped_token}', $spam_count,$ham_count,$atime)");
++ my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$escaped_token}'::bytea[], $spam_count,$ham_count,$atime)");
unless (defined($sth)) {
-@@ -1003,7 +1003,7 @@
+ dbg("bayes: _put_token: SQL error: ".$self->{_dbh}->errstr());
+@@ -1004,7 +1004,7 @@
my $tokenarray = join(",", map { '"' . _quote_bytea($_) . '"' } sort keys %{$tokens});
-- my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$tokenarray}',
-+ my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$tokenarray}'::bytea[],
- $spam_count, $ham_count, $atime)");
+- my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$tokenarray}', $spam_count, $ham_count, $atime)");
++ my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, $self->{_esc_prefix}'{$tokenarray}'::bytea[], $spam_count, $ham_count, $atime)");
unless (defined($sth)) {
+ dbg("bayes: _put_tokens: SQL error: ".$self->{_dbh}->errstr());
++++++ sysconfig.spampd ++++++
SPAMPD_OPTIONS="--port=10025 --relayhost=127.0.0.1:10026 --user=spamfilter --tagall --children=5 --maxsize=250"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org