commit:     52480637e8a4cd42cb671c02fdf1c122e387a3fe
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 13 22:08:00 2017 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Sun Aug 20 14:32:43 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=52480637

mail-filter/spamassassin: new revision to fix tests and improve init script.

This commit adds an upstream patch to fix a test suite crash with
newer versions of perl. It also largely rewrites the init script:

  * Don't conditionally "use mysql" or "use postgres" in the
    OpenRC init script. Even if SpamAssassin is installed without
    e.g. MySQL support, if MySQL is present on the system, a user
    might store his SpamAssassin data in it.

  * Use a declarative style and drop the custom start() and stop()
    functions.

  * Run the spamd daemon as the "spamd" user.

  * Use /run/spamd.pid for the PID file to avoid a "checkpath".

Some updates were made to the ebuild to facilitate those changes:

  * Don't modify the init script for USE=mysql or USE=postgres.

  * Create a "spamd" user in pkg_preinst().

Package-Manager: Portage-2.3.6, Repoman-2.3.1

 mail-filter/spamassassin/files/3.4.1-spamd.init-r1 | 34 ++++++++++++++++++++++
 .../files/spamassassin-3.4.1-bug_7404.patch        | 23 +++++++++++++++
 ....1-r12.ebuild => spamassassin-3.4.1-r13.ebuild} | 32 +++++++-------------
 3 files changed, 68 insertions(+), 21 deletions(-)

diff --git a/mail-filter/spamassassin/files/3.4.1-spamd.init-r1 
b/mail-filter/spamassassin/files/3.4.1-spamd.init-r1
new file mode 100755
index 00000000000..5f981d8e2c3
--- /dev/null
+++ b/mail-filter/spamassassin/files/3.4.1-spamd.init-r1
@@ -0,0 +1,34 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/sbin/spamd"
+pidfile="/run/spamd.pid"
+command_args="--username=spamd
+              --groupname=spamd
+              --pidfile=${pidfile}
+              ${SPAMD_OPTS}"
+command_args_background="--daemonize"
+
+: ${SPAMD_NICELEVEL:=0}
+start_stop_daemon_args="--nicelevel ${SPAMD_NICELEVEL}"
+
+# Retry after SPAMD_TIMEOUT seconds because spamd can take a
+# while to kill off all of its children. This was bug 322025.
+: ${SPAMD_TIMEOUT:=15}
+retry="${SPAMD_TIMEOUT}"
+
+extra_started_commands="reload"
+
+depend() {
+    before mta
+    use logger mysql postgres
+}
+
+reload() {
+       ebegin "Reloading configuration"
+       # Warning: reload causes the PID of the spamd process to
+       # change, but spamd does update its PID file afterwards.
+       start-stop-daemon --signal HUP --pidfile "${pidfile}"
+       eend $?
+}

diff --git a/mail-filter/spamassassin/files/spamassassin-3.4.1-bug_7404.patch 
b/mail-filter/spamassassin/files/spamassassin-3.4.1-bug_7404.patch
new file mode 100644
index 00000000000..563110fcb1f
--- /dev/null
+++ b/mail-filter/spamassassin/files/spamassassin-3.4.1-bug_7404.patch
@@ -0,0 +1,23 @@
+--- a/lib/Mail/SpamAssassin/PerMsgStatus.pm    (revision 1790817)
++++ b/lib/Mail/SpamAssassin/PerMsgStatus.pm    (working copy)
+@@ -896,16 +896,16 @@ 
+     $str .= shift @{$ary};
+   }
+   undef $ary;
+-  chomp ($str); $str .= " [...]\n";
+ 
+   # in case the last line was huge, trim it back to around 200 chars
+   local $1;
+-  $str =~ s/^(.{,200}).*$/$1/gs;
++  $str =~ s/^(.{200}).+$/$1 [...]/gm;
++  chomp ($str); $str .= "\n";
+ 
+   # now, some tidy-ups that make things look a bit prettier
+-  $str =~ s/-----Original Message-----.*$//gs;
++  $str =~ s/-----Original Message-----.*$//gm;
+   $str =~ s/This is a multi-part message in MIME format\.//gs;
+-  $str =~ s/[-_\*\.]{10,}//gs;
++  $str =~ s/[-_*.]{10,}//gs;
+   $str =~ s/\s+/ /gs;
+ 
+   # add "Content preview:" ourselves, so that the text aligns

diff --git a/mail-filter/spamassassin/spamassassin-3.4.1-r12.ebuild 
b/mail-filter/spamassassin/spamassassin-3.4.1-r13.ebuild
similarity index 91%
rename from mail-filter/spamassassin/spamassassin-3.4.1-r12.ebuild
rename to mail-filter/spamassassin/spamassassin-3.4.1-r13.ebuild
index 02a2cce2c7e..dc35e32ce58 100644
--- a/mail-filter/spamassassin/spamassassin-3.4.1-r12.ebuild
+++ b/mail-filter/spamassassin/spamassassin-3.4.1-r13.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=6
 
-inherit perl-functions systemd toolchain-funcs
+inherit perl-functions systemd toolchain-funcs user
 
 MY_P="Mail-SpamAssassin-${PV//_/-}"
 S="${WORKDIR}/${MY_P}"
@@ -83,6 +83,7 @@ PATCHES=(
        "${FILESDIR}/spamassassin-3.4.1-bug_7231.patch"
        "${FILESDIR}/spamassassin-3.4.1-bug_7265.patch"
        "${FILESDIR}/spamassassin-3.4.1-bug_7231-extra.patch"
+       "${FILESDIR}/spamassassin-3.4.1-bug_7404.patch"
        "${FILESDIR}/spamassassin-3.4.1-perl526.patch"
 )
 
@@ -153,31 +154,14 @@ src_install () {
                || die "failed to disable plugins by default"
 
        # Add the init and config scripts.
-       newinitd "${FILESDIR}/3.4.1-spamd.init" spamd
+       newinitd "${FILESDIR}/3.4.1-spamd.init-r1" spamd
        newconfd "${FILESDIR}/3.4.1-spamd.conf" spamd
 
        systemd_newunit "${FILESDIR}/${PN}.service-r1" "${PN}.service"
        systemd_install_serviced "${FILESDIR}/${PN}.service.conf"
 
-       # The sed statements in the following conditionals alter the init
-       # script to depend (or not) on the database being running before
-       # spamd is started. The sed commands either enable the dependency,
-       # or delete the line entirely.
-       if use postgres; then
-               sed -i -e 's:@USEPOSTGRES@::' "${ED}/etc/init.d/spamd" || die
-
-               dodoc sql/*_pg.sql
-       else
-               sed -i -e '/@USEPOSTGRES@/d' "${ED}/etc/init.d/spamd" || die
-       fi
-
-       if use mysql; then
-               sed -i -e 's:@USEMYSQL@::' "${ED}/etc/init.d/spamd" || die
-
-               dodoc sql/*_mysql.sql
-       else
-               sed -i -e '/@USEMYSQL@/d' "${ED}/etc/init.d/spamd" || die
-       fi
+       use postgres && dodoc sql/*_pg.sql
+       use mysql && dodoc sql/*_mysql.sql
 
        dodoc NOTICE TRADEMARK CREDITS UPGRADE USAGE sql/README.bayes \
                sql/README.awl procmailrc.example sample-nonspam.txt \
@@ -232,6 +216,12 @@ src_test() {
        default
 }
 
+pkg_preinst() {
+       # The spamd daemon runs as this user. Use a real home directory so
+       # that it can hold SA configuration.
+       enewuser spamd -1 -1 /home/spamd
+}
+
 pkg_postinst() {
        elog
        elog 'No rules are installed by default. You will need to run sa-update'

Reply via email to