From a3fce5aa83016c4bd16d56a82b4ef00433225423 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Mon, 5 Sep 2016 13:47:53 -0400 Subject: mail-filter/spamassassin: new revision with correct build dependencies. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The existing dependencies for spamassassin were all thrown into DEPEND and then propagated to RDEPEND -- even the ones that were obviously only needed at runtime. Marcin Mirosław helped track down the correct value of DEPEND, and the rest of the optional dependencies were moved to RDEPEND. The required and optional dependencies are now stored in REQDEPEND/OPTDEPEND variables to eliminate duplication. This is primarily useful with USE=test, which makes DEPEND a superset of RDEPEND, since the other inclusion alreads holds normally. Once the test suite had the correct dependencies, the RESTRICT=test was removed, and problematic spamc/spamd tests were disabled. The test suite should pass now. Gentoo-Bug: 592682 Package-Manager: portage-2.2.28 --- .../spamassassin/spamassassin-3.4.1-r7.ebuild | 216 ------------------ .../spamassassin/spamassassin-3.4.1-r8.ebuild | 241 +++++++++++++++++++++ 2 files changed, 241 insertions(+), 216 deletions(-) delete mode 100644 mail-filter/spamassassin/spamassassin-3.4.1-r7.ebuild create mode 100644 mail-filter/spamassassin/spamassassin-3.4.1-r8.ebuild (limited to 'mail-filter') diff --git a/mail-filter/spamassassin/spamassassin-3.4.1-r7.ebuild b/mail-filter/spamassassin/spamassassin-3.4.1-r7.ebuild deleted file mode 100644 index 00838ba58fcd..000000000000 --- a/mail-filter/spamassassin/spamassassin-3.4.1-r7.ebuild +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright 1999-2016 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=6 - -inherit toolchain-funcs systemd - -MY_P="Mail-SpamAssassin-${PV//_/-}" -S="${WORKDIR}/${MY_P}" -DESCRIPTION="An extensible mail filter which can identify and tag spam" -HOMEPAGE="http://spamassassin.apache.org/" -SRC_URI="mirror://apache/spamassassin/source/${MY_P}.tar.bz2" - -LICENSE="Apache-2.0 GPL-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x86-macos" -IUSE="+bayes berkdb cron ipv6 ldap libressl mysql postgres qmail sqlite ssl test" - -# You can do without a database unless you need the Bayes features. -REQUIRED_USE="bayes? ( || ( berkdb mysql postgres sqlite ) )" - -# SpamAssassin doesn't use libwww-perl except as a fallback for when -# curl/wget are missing, so we depend on one of those instead. Some -# mirrors use https, so we need those utilities to support SSL. -# -# re2c is needed to compile the rules (sa-compile). -# -DEPEND="app-crypt/gnupg - dev-lang/perl - dev-perl/Digest-SHA1 - dev-perl/Encode-Detect - dev-perl/Geo-IP - dev-perl/HTML-Parser - dev-perl/HTTP-Date - dev-perl/Mail-DKIM - dev-perl/Mail-SPF - dev-perl/Net-DNS - dev-perl/Net-Patricia - dev-perl/NetAddr-IP - dev-util/re2c - || ( net-misc/wget[ssl] net-misc/curl[ssl] ) - virtual/perl-Archive-Tar - virtual/perl-IO-Zlib - virtual/perl-MIME-Base64 - virtual/perl-Pod-Parser - virtual/perl-Time-HiRes - berkdb? ( virtual/perl-DB_File ) - ipv6? ( dev-perl/IO-Socket-INET6 ) - ldap? ( dev-perl/perl-ldap ) - mysql? ( - dev-perl/DBI - dev-perl/DBD-mysql - ) - postgres? ( - dev-perl/DBI - dev-perl/DBD-Pg - ) - sqlite? ( - dev-perl/DBI - dev-perl/DBD-SQLite - ) - ssl? ( - dev-perl/IO-Socket-SSL - !libressl? ( dev-libs/openssl:0 ) - libressl? ( dev-libs/libressl ) - )" - -RDEPEND="${DEPEND} - dev-perl/Net-CIDR-Lite" - -# Some spamd tests fail, and it looks like the whole suite eventually -# hangs. -RESTRICT=test - -PATCHES=( - "${FILESDIR}/spamassassin-3.4.1-bug_7199.patch" - "${FILESDIR}/spamassassin-3.4.1-bug_7223.patch" - "${FILESDIR}/spamassassin-3.4.1-bug_7231.patch" - "${FILESDIR}/spamassassin-3.4.1-bug_7265.patch" -) - -src_configure() { - # spamc can be built with ssl support. - local use_ssl="no" - if use ssl; then - use_ssl="yes" - fi - - # Set SYSCONFDIR explicitly so we can't get bitten by bug 48205 again - # (just to be sure, nobody knows how it could happen in the first place). - # - # We also set the path to the perl executable explictly. This will be - # used to create the initial shebang line in the scripts (bug 62276). - perl Makefile.PL \ - PREFIX="${EPREFIX}/usr" \ - INSTALLDIRS=vendor \ - SYSCONFDIR="${EPREFIX}/etc" \ - DATADIR="${EPREFIX}/usr/share/spamassassin" \ - PERL_BIN="${EPREFIX}/usr/bin/perl" \ - ENABLE_SSL="${use_ssl}" \ - DESTDIR="${D}" \ - || die "Unable to build!" - - # Now configure spamc. - emake CC="$(tc-getCC)" LDFLAGS="${LDFLAGS}" spamc/Makefile -} - -src_compile() { - PERL_MM_USE_DEFAULT=1 emake - - if use qmail; then - emake spamc/qmail-spamc - fi -} - -src_install () { - emake install - einstalldocs - - # Create the stub dir used by sa-update and friends - keepdir /var/lib/spamassassin - - # Move spamd to sbin where it belongs. - dodir /usr/sbin - mv "${ED}"/usr/bin/spamd "${ED}"/usr/sbin/spamd || die "move spamd failed" - - if use qmail; then - dobin spamc/qmail-spamc - fi - - ln -s mail/spamassassin "${ED}"/etc/spamassassin || die - - # Disable plugin by default - sed -i -e 's/^loadplugin/\#loadplugin/g' \ - "${ED}"/etc/mail/spamassassin/init.pre \ - || die "failed to disable plugins by default" - - # Add the init and config scripts. - newinitd "${FILESDIR}"/3.4.1-spamd.init 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 - - dodoc NOTICE TRADEMARK CREDITS UPGRADE USAGE sql/README.bayes \ - sql/README.awl procmailrc.example sample-nonspam.txt \ - sample-spam.txt spamd/PROTOCOL spamd/README.vpopmail \ - spamd-apache2/README.apache - - # Rename some files so that they don't clash with others. - newdoc spamd/README README.spamd - newdoc sql/README README.sql - newdoc ldap/README README.ldap - - if use qmail; then - dodoc spamc/README.qmail - fi - - insinto /etc/mail/spamassassin/ - insopts -m0400 - newins "${FILESDIR}"/secrets.cf secrets.cf.example - - # Create the directory where sa-update stores its GPG key (if you - # choose to import one). If this directory does not exist, the - # import will fail. This is bug 396307. We expect that the import - # will be performed as root, and making the directory accessible - # only to root prevents a warning on the command-line. - diropts -m0700 - dodir /etc/mail/spamassassin/sa-update-keys - - if use cron; then - # Install the cron job if they want it. - exeinto /etc/cron.daily - newexe "${FILESDIR}/update-spamassassin-rules.cron" \ - update-spamassassin-rules - fi -} - -pkg_postinst() { - elog - elog 'No rules are installed by default. You will need to run sa-update' - elog 'at least once, and most likely configure SpamAssassin before it' - elog 'will work.' - - if ! use cron; then - elog - elog 'You should consider a cron job for sa-update. One is provided' - elog 'for daily updates if you enable the "cron" USE flag.' - fi - elog - elog 'Configuration and update help can be found on the wiki:' - elog - elog ' https://wiki.gentoo.org/wiki/SpamAssassin' - elog -} diff --git a/mail-filter/spamassassin/spamassassin-3.4.1-r8.ebuild b/mail-filter/spamassassin/spamassassin-3.4.1-r8.ebuild new file mode 100644 index 000000000000..78eb6b5d3e72 --- /dev/null +++ b/mail-filter/spamassassin/spamassassin-3.4.1-r8.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit perl-functions systemd toolchain-funcs + +MY_P="Mail-SpamAssassin-${PV//_/-}" +S="${WORKDIR}/${MY_P}" +DESCRIPTION="An extensible mail filter which can identify and tag spam" +HOMEPAGE="http://spamassassin.apache.org/" +SRC_URI="mirror://apache/spamassassin/source/${MY_P}.tar.bz2" + +LICENSE="Apache-2.0 GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x86-macos" +IUSE="+bayes berkdb cron ipv6 ldap libressl mysql postgres qmail sqlite ssl test" + +# You can do without a database unless you need the Bayes features. +REQUIRED_USE="bayes? ( || ( berkdb mysql postgres sqlite ) )" + +# The Makefile.PL script checks for dependencies, but only fails if a +# required (i.e. not optional) dependency is missing. We therefore +# require most of the optional modules only at runtime. +REQDEPEND="dev-lang/perl + dev-perl/HTML-Parser + dev-perl/Net-DNS + dev-perl/NetAddr-IP + virtual/perl-Archive-Tar + virtual/perl-Digest-SHA + virtual/perl-IO-Zlib + virtual/perl-Time-HiRes + ssl? ( + !libressl? ( dev-libs/openssl:0 ) + libressl? ( dev-libs/libressl ) + )" + +# SpamAssassin doesn't use libwww-perl except as a fallback for when +# curl/wget are missing, so we depend on one of those instead. Some +# mirrors use https, so we need those utilities to support SSL. +# +# re2c is needed to compile the rules (sa-compile). +# +# We still need the old Digest-SHA1 because razor2 has not been ported +# to Digest-SHA. +OPTDEPEND="app-crypt/gnupg + dev-perl/Digest-SHA1 + dev-perl/Encode-Detect + dev-perl/Geo-IP + dev-perl/HTTP-Date + dev-perl/Mail-DKIM + dev-perl/Mail-SPF + dev-perl/Net-Patricia + dev-perl/Net-CIDR-Lite + dev-util/re2c + || ( net-misc/wget[ssl] net-misc/curl[ssl] ) + virtual/perl-MIME-Base64 + virtual/perl-Pod-Parser + berkdb? ( virtual/perl-DB_File ) + ipv6? ( dev-perl/IO-Socket-INET6 ) + ldap? ( dev-perl/perl-ldap ) + mysql? ( + dev-perl/DBI + dev-perl/DBD-mysql + ) + postgres? ( + dev-perl/DBI + dev-perl/DBD-Pg + ) + sqlite? ( + dev-perl/DBI + dev-perl/DBD-SQLite + ) + ssl? ( dev-perl/IO-Socket-SSL )" + +DEPEND="${REQDEPEND} + test? ( + ${OPTDEPEND} + virtual/perl-Test-Harness + )" +RDEPEND="${REQDEPEND} ${OPTDEPEND}" + +PATCHES=( + "${FILESDIR}/spamassassin-3.4.1-bug_7199.patch" + "${FILESDIR}/spamassassin-3.4.1-bug_7223.patch" + "${FILESDIR}/spamassassin-3.4.1-bug_7231.patch" + "${FILESDIR}/spamassassin-3.4.1-bug_7265.patch" +) + +src_prepare() { + default + + # The sa_compile test does some weird stuff like hopping around in + # the directory tree and calling "make" to create a dist tarball + # from ${S}. It fails, and is more trouble than it's worth... + perl_rm_files t/sa_compile.t || die 'failed to remove sa_compile test' + + # The spamc tests (which need the networked spamd daemon) fail for + # irrelevant reasons. It's too hard to disable them (unlike the + # spamd tests themselves -- see src_test), so use a crude + # workaround. + perl_rm_files t/spamc_*.t || die 'failed to remove spamc tests' +} + +src_configure() { + # Set SYSCONFDIR explicitly so we can't get bitten by bug 48205 again + # (just to be sure, nobody knows how it could happen in the first place). + # + # We also set the path to the perl executable explictly. This will be + # used to create the initial shebang line in the scripts (bug 62276). + perl Makefile.PL \ + PREFIX="${EPREFIX}/usr" \ + INSTALLDIRS=vendor \ + SYSCONFDIR="${EPREFIX}/etc" \ + DATADIR="${EPREFIX}/usr/share/spamassassin" \ + PERL_BIN="${EPREFIX}/usr/bin/perl" \ + ENABLE_SSL="$(usex ssl)" \ + DESTDIR="${D}" \ + || die 'failed to create a Makefile using Makefile.PL' + + # Now configure spamc. + emake CC="$(tc-getCC)" LDFLAGS="${LDFLAGS}" spamc/Makefile +} + +src_compile() { + PERL_MM_USE_DEFAULT=1 emake + + if use qmail; then + emake spamc/qmail-spamc + fi +} + +src_install () { + emake install + einstalldocs + + # Create the stub dir used by sa-update and friends + keepdir /var/lib/spamassassin + + # Move spamd to sbin where it belongs. + dodir /usr/sbin + mv "${ED}"/usr/bin/spamd "${ED}"/usr/sbin/spamd || die "move spamd failed" + + if use qmail; then + dobin spamc/qmail-spamc + fi + + ln -s mail/spamassassin "${ED}"/etc/spamassassin || die + + # Disable plugin by default + sed -i -e 's/^loadplugin/\#loadplugin/g' \ + "${ED}/etc/mail/spamassassin/init.pre" \ + || die "failed to disable plugins by default" + + # Add the init and config scripts. + newinitd "${FILESDIR}/3.4.1-spamd.init" 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 + + dodoc NOTICE TRADEMARK CREDITS UPGRADE USAGE sql/README.bayes \ + sql/README.awl procmailrc.example sample-nonspam.txt \ + sample-spam.txt spamd/PROTOCOL spamd/README.vpopmail \ + spamd-apache2/README.apache + + # Rename some files so that they don't clash with others. + newdoc spamd/README README.spamd + newdoc sql/README README.sql + newdoc ldap/README README.ldap + + if use qmail; then + dodoc spamc/README.qmail + fi + + insinto /etc/mail/spamassassin/ + insopts -m0400 + newins "${FILESDIR}"/secrets.cf secrets.cf.example + + # Create the directory where sa-update stores its GPG key (if you + # choose to import one). If this directory does not exist, the + # import will fail. This is bug 396307. We expect that the import + # will be performed as root, and making the directory accessible + # only to root prevents a warning on the command-line. + diropts -m0700 + dodir /etc/mail/spamassassin/sa-update-keys + + if use cron; then + # Install the cron job if they want it. + exeinto /etc/cron.daily + newexe "${FILESDIR}/update-spamassassin-rules.cron" \ + update-spamassassin-rules + fi +} + +src_test() { + # Trick the test suite into skipping the spamd tests. Setting + # SPAMD_HOST to a non-localhost value causes SKIP_SPAMD_TESTS to be + # set in SATest.pm. + export SPAMD_HOST=disabled + default +} + +pkg_postinst() { + elog + elog 'No rules are installed by default. You will need to run sa-update' + elog 'at least once, and most likely configure SpamAssassin before it' + elog 'will work.' + + if ! use cron; then + elog + elog 'You should consider a cron job for sa-update. One is provided' + elog 'for daily updates if you enable the "cron" USE flag.' + fi + elog + elog 'Configuration and update help can be found on the wiki:' + elog + elog ' https://wiki.gentoo.org/wiki/SpamAssassin' + elog +} -- cgit v1.2.3-65-gdbad