[packages/spamassassin] Up to 4.0.3 snap (just like Debian)

arekm arekm at pld-linux.org
Mon Aug 24 19:24:41 CEST 2026


commit 30c26020ed328bd1d61d5d72a9cd069878cf4d12
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Mon Aug 24 19:24:29 2026 +0200

    Up to 4.0.3 snap (just like Debian)

 ...assassin-neuralnetwork-test-optional-fann.patch | 19 ++++++
 spamassassin-spamd.init                            |  2 +-
 spamassassin.spec                                  | 74 ++++++++++++----------
 3 files changed, 59 insertions(+), 36 deletions(-)
---
diff --git a/spamassassin.spec b/spamassassin.spec
index 494e849..560bbf5 100644
--- a/spamassassin.spec
+++ b/spamassassin.spec
@@ -5,18 +5,18 @@
 # Conditional build:
 %bcond_without	tests		# do not perform "make test"
 
-%define		pdir	Mail
-%define		pnam	SpamAssassin
+%define		subver	svn1935691
+%define		snapver	4.0.2+%{subver}
 %define		sa_version %(printf %d.%03d%03d $(echo %{version} | tr '.' ' '))
 Summary:	A spam filter for email which can be invoked from mail delivery agents
 Summary(pl.UTF-8):	Filtr antyspamowy, przeznaczony dla programów dostarczających pocztę (MDA)
 Name:		spamassassin
-Version:	4.0.2
-Release:	0.1
+Version:	4.0.3
+Release:	0.%{subver}.1
 License:	Apache v2.0
 Group:		Applications/Mail
-Source0:	https://dlcdn.apache.org//spamassassin/source/%{pdir}-%{pnam}-%{version}.tar.bz2
-# Source0-md5:	78d04879aab9978c30f4086dd986075b
+Source0:	https://deb.debian.org/debian/pool/main/s/spamassassin/spamassassin_%{snapver}.orig.tar.xz
+# Source0-md5:	3758ce46810fb68483d4bfd1cee25087
 Source1:	%{name}.sysconfig
 Source2:	%{name}-spamd.init
 Source3:	%{name}-default.rc
@@ -27,50 +27,43 @@ Source7:	spamassassin-official.conf
 
 Source9:	cronjob-sa-update.service
 Source10:	cronjob-sa-update.timer
+Patch0:		%{name}-neuralnetwork-test-optional-fann.patch
 URL:		http://spamassassin.apache.org/
 BuildRequires:	openssl-devel >= 0.9.7d
 BuildRequires:	perl(ExtUtils::MakeMaker) >= 6.16
 BuildRequires:	perl-Archive-Tar
 BuildRequires:	perl-DBI
 BuildRequires:	perl-DB_File
-BuildRequires:	perl-Digest-SHA1 >= 2.10
 BuildRequires:	perl-Geo-IP
-BuildRequires:	perl-HTML-Parser >= 3
+BuildRequires:	perl-HTML-Parser >= 3.43
 BuildRequires:	perl-IO-Socket-INET6 >= 2.51
 BuildRequires:	perl-IO-Socket-SSL
 BuildRequires:	perl-IO-Zlib
 BuildRequires:	perl-IP-Country
-BuildRequires:	perl-Mail-SPF-Query
-BuildRequires:	perl-Net-DNS >= 0.65-3
-BuildRequires:	perl-Net-Ident
+BuildRequires:	perl-Net-DNS >= 1.10
 BuildRequires:	perl-Net-LibIDN
 BuildRequires:	perl-Net-LibIDN2
 BuildRequires:	perl-Net-Patricia
-BuildRequires:	perl-NetAddr-IP >= 4.000
-BuildRequires:	perl-Perl-Critic-Policy-Perlsecret
-#BuildRequires:	perl-Razor2
-BuildRequires:	perl-Text-Diff
+BuildRequires:	perl-NetAddr-IP >= 4.010
 BuildRequires:	perl-devel >= 1:5.8.0
 BuildRequires:	perl-libwww
 BuildRequires:	re2c
 BuildRequires:	rpm-perlprov >= 4.1-13
 BuildRequires:	rpmbuild(macros) >= 1.453
 %if %{with tests}
-# are these really needed?
 #BuildRequires:	perl-Compress-Zlib
 BuildRequires:	perl-Encode-Detect
 BuildRequires:	perl-MIME-Base64
-BuildRequires:	perl-MIME-tools
 BuildRequires:	perl-Mail-DKIM
-BuildRequires:	perl-Mail-DomainKeys
 BuildRequires:	perl-Mail-SPF
-BuildRequires:	perl-MailTools
+BuildRequires:	perl-Perl-Critic-Policy-Perlsecret
 BuildRequires:	perl-Razor > 2.61
+BuildRequires:	perl-Text-Diff
 BuildRequires:  tesseract-data-lang-en
 %endif
 Requires:	perl-Mail-SpamAssassin = %{version}-%{release}
-Obsoletes:	SpamAssassin
-Obsoletes:	spamassassin-tools
+Obsoletes:	SpamAssassin < 2.31
+Obsoletes:	spamassassin-tools < 3.2.1
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define		_noautoreq	'perl(Razor2::Client::Agent)' 'perl(Razor::Agent)' 'perl(Razor::Client)' 'perl(DBI)' 'perl(Net::Ident)'
@@ -122,7 +115,6 @@ Suggests:	perl-Apache-Test
 Suggests:	perl-IO-Socket-INET6
 Suggests:	perl-IO-Socket-IP
 Suggests:	perl-IO-Socket-SSL
-Suggests:	perl-Net-Ident
 
 %description spamd
 The purpose of this program is to provide a daemonized version of the
@@ -183,7 +175,6 @@ Requires:	glibc-devel
 Requires:	make
 Requires:	perl-Mail-SpamAssassin = %{version}-%{release}
 Requires:	perl-devel
-Requires:	perl-devel
 Requires:	re2c >= 0.10
 
 %description compile
@@ -203,7 +194,6 @@ Summary(pl.UTF-8):	sa-update - automatyczne uaktualnianie regułek SpamAssassina
 Group:		Applications/Mail
 Requires:	cronjobs
 Requires:	gnupg
-Requires:	perl-Archive-Tar
 Requires:	perl-Mail-SpamAssassin = %{version}-%{release}
 Requires:	perl-libwww
 
@@ -229,9 +219,6 @@ podpisów GPG.
 Summary:	Mail::SpamAssassin - SpamAssassin e-mail filter libraries
 Summary(pl.UTF-8):	Mail::SpamAssassin - biblioteki filtra poczty SpamAssassin
 Group:		Development/Languages/Perl
-Requires:	perl-HTML-Parser >= 3
-# what for this one?
-#Requires: perl-Sys-Hostname-Long
 Suggests:	Razor
 Suggests:	perl-Cache-DB_File >= 0.2
 Suggests:	perl-DBD-mysql
@@ -240,10 +227,8 @@ Suggests:	perl-Geo-IP
 Suggests:	perl-IO-Socket-INET6 >= 2.51
 Suggests:	perl-IP-Country
 Suggests:	perl-Mail-DKIM
-#Suggests: perl-Mail-DomainKeys
-#Suggests: perl-Mail-SPF
-Suggests:	perl-Mail-SPF-Query
-Suggests:	perl-Net-DNS >= 0.34
+Suggests:	perl-Mail-SPF
+Suggests:	perl-Net-DNS >= 1.10
 Suggests:	perl-Net-Patricia
 Suggests:	spamassassin-compile
 Suggests:	spamassassin-plugin-fuzzyocr
@@ -267,7 +252,8 @@ oznaczona jako spam w celu późniejszego wyfiltrowania, np. przy użyciu
 aplikacji do czytania poczty.
 
 %prep
-%setup -q -n %{pdir}-%{pnam}-%{version}
+%setup -q -n %{name}-%{snapver}
+%patch -P0 -p1
 
 %build
 # for spamc/configure
@@ -282,7 +268,7 @@ export CFLAGS="%{rpmcflags}"
 	CC="%{__cc}" \
 	OPTIMIZE="%{rpmcflags}"
 
-%{?with_tests:%{__make} -j1 TEST_VERBOSE=1 test}
+%{?with_tests:%{__make} -j1 test}
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -291,6 +277,13 @@ install -d $RPM_BUILD_ROOT{/etc/{cron.d,sysconfig,rc.d/init.d},%{_sysconfdir}/ma
 %{__make} install \
 	DESTDIR=$RPM_BUILD_ROOT
 
+# upstream's make install ships no rules at all; install the ruleset regenerated
+# from rulesrc/ during %build, minus the unvetted sandbox rules the sa-update
+# channel also withholds. sa-update output in /var/lib/spamassassin/%{sa_version}
+# takes precedence over these (Mail::SpamAssassin @default_rules_path).
+cp -p rules/*.cf $RPM_BUILD_ROOT%{_datadir}/spamassassin
+%{__rm} $RPM_BUILD_ROOT%{_datadir}/spamassassin/{70_sandbox,local,regression_tests}.cf
+
 cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/spamd
 cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/spamd
 cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/mail/spamassassin
@@ -303,7 +296,7 @@ cp -p %{SOURCE9} $RPM_BUILD_ROOT%{systemdunitdir}/cronjob-sa-update.service
 cp -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdunitdir}/cronjob-sa-update.timer
 
 # sa-update, sa-compile
-install -d $RPM_BUILD_ROOT/var/lib/spamassassin/{%{sa_version},compiled/%{sa_version}}
+install -d $RPM_BUILD_ROOT/var/lib/spamassassin/{%{sa_version},compiled}
 install -d $RPM_BUILD_ROOT%{_sysconfdir}/mail/spamassassin/sa-update-keys
 touch $RPM_BUILD_ROOT%{_sysconfdir}/mail/spamassassin/sa-update-keys/{pubring,secring,trustdb}.gpg
 
@@ -326,6 +319,15 @@ if [ "$1" = "0" ]; then
 	/sbin/chkconfig --del spamd
 fi
 
+%post update
+%systemd_post cronjob-sa-update.timer
+
+%preun update
+%systemd_preun cronjob-sa-update.timer
+
+%postun update
+%systemd_reload
+
 %triggerpostun spamd -- spamassassin-spamd < 3.1.0-5.3
 # temp hack, should we care of the dead link?
 ln -s spamd /etc/rc.d/init.d/spamassassin
@@ -371,8 +373,9 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/sa-compile
 %{_mandir}/man1/sa-compile.1*
+# sa-compile picks compiled/<perl major ver>/<sa version> from $] at runtime,
+# so the leaf dirs cannot be owned here - it creates them itself
 %dir /var/lib/spamassassin/compiled
-%dir /var/lib/spamassassin/compiled/%{sa_version}
 
 %files update
 %defattr(644,root,root,755)
@@ -398,6 +401,7 @@ fi
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/spamassassin/*.cf
 %exclude %{_sysconfdir}/mail/spamassassin/sa-update-keys
 %dir %{_datadir}/spamassassin
+%{_datadir}/spamassassin/*.cf
 %config(noreplace) %{_datadir}/spamassassin/languages
 %config(noreplace) %{_datadir}/spamassassin/user_prefs.template
 %exclude %{_datadir}/spamassassin/sa-update-pubkey.txt
diff --git a/spamassassin-neuralnetwork-test-optional-fann.patch b/spamassassin-neuralnetwork-test-optional-fann.patch
new file mode 100644
index 0000000..7486a44
--- /dev/null
+++ b/spamassassin-neuralnetwork-test-optional-fann.patch
@@ -0,0 +1,19 @@
+The NeuralNetwork plugin is optional - AI::FANN is listed as an optional module
+by Makefile.PL and the loadplugin line in rules/v403.pre is commented out - but
+its test declares a fixed plan and only guards DBD::SQLite, so without AI::FANN
+14 of 18 subtests fail instead of the test being skipped. Guard it the way every
+other optional-module test under t/ does.
+
+--- spamassassin-4.0.2+svn1935691/t/neuralnetwork.t.orig
++++ spamassassin-4.0.2+svn1935691/t/neuralnetwork.t
+@@ -8,8 +8,10 @@
+ use Storable qw(retrieve);
+ use Test::More;
+ 
++use constant HAS_FANN => eval { require AI::FANN; 1 };
+ use constant HAS_SQLITE => eval { require DBD::SQLite; 1 };
+ 
++plan skip_all => "Needs AI::FANN" unless HAS_FANN;
+ plan tests => 18;
+ 
+ sub nn_reinit {
diff --git a/spamassassin-spamd.init b/spamassassin-spamd.init
index 07c17c0..d88bbfa 100644
--- a/spamassassin-spamd.init
+++ b/spamassassin-spamd.init
@@ -36,7 +36,7 @@ start() {
 	fi
 
 	# Check if database is installed.
-	if [ "$(find /var/lib/spamassassin/ -name '*.cf' | head -n1 | wc -l)" -eq 0 ]; then
+	if [ "$(find /var/lib/spamassassin/ /usr/share/spamassassin/ -name '*.cf' | head -n1 | wc -l)" -eq 0 ]; then
 		show 'Spamassassin database not found. Run sa-update first.'; fail
 		return 1
 	fi
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/spamassassin.git/commitdiff/30c26020ed328bd1d61d5d72a9cd069878cf4d12



More information about the pld-cvs-commit mailing list