summaryrefslogtreecommitdiff
blob: 4e31284b2065dd647598cb92829bd3cea186a44e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/mail-filter/spamassassin/spamassassin-3.0.4.ebuild,v 1.1 2005/06/08 12:18:17 mcummings Exp $

inherit perl-module

MY_P=Mail-SpamAssassin-${PV//_/-}
S=${WORKDIR}/${MY_P}
DESCRIPTION="SpamAssassin is an extensible email filter which is used to identify spam."
HOMEPAGE="http://spamassassin.apache.org/"
SRC_URI="mirror://apache/spamassassin/source/${MY_P}.tar.bz2"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~x86 ~ppc ~sparc ~alpha ~hppa ~ia64 ~amd64 ~ppc64"
IUSE="berkdb qmail ssl doc"

# To consider (not all may be in tree at this time - mcummings):
# dev-perl/Net-SMTP
# dev-perl/Mail-SPF-Query
# dev-perl/IP-Country-Fast
# dev-perl/Net-Ident
# perl-core/Time-HiRes
# DB support? mysql, postgres, etc.

DEPEND=">=dev-lang/perl-5.8.2-r1
	>=dev-perl/PodParser-1.22
	perl-core/MIME-Base64
	perl-core/Storable
	>=dev-perl/HTML-Parser-3.31
	>=dev-perl/Net-DNS-0.34
	dev-perl/Digest-SHA1
	ssl? (
		dev-perl/IO-Socket-SSL
		dev-libs/openssl
	)
	berkdb? (
		perl-core/DB_File
	)"

src_move_doc() {
	echo "Renaming $1 to $2"
	mv $1 $2 || die failed to move documentation
}

src_append_doc() {
	echo "Appending $1 to $2"
	cat $1 >> $2 || die failed to append documentation
}

src_compile() {
	# - 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).
	myconf="SYSCONFDIR=/etc DATADIR=/usr/share/spamassassin"

	# If ssl is enabled, spamc can be built with ssl support
	if use ssl; then
		myconf="${myconf} ENABLE_SSL=yes"
	else
		myconf="${myconf} ENABLE_SSL=no"
	fi

	# Set the path to the Perl executable explictly.  This will be used to
	# create the initial sharpbang line in the scripts and might cause
	# a versioned app name end in there, see
	# <http://bugs.gentoo.org/show_bug.cgi?id=62276>
	myconf="${myconf} PERL_BIN=/usr/bin/perl"

	# If you are going to enable taint mode, make sure that the bug where
	# spamd doesn't start when the PATH contains . is addressed, and make
	# sure you deal with versions of razor <2.36-r1 not being taint-safe.
	# <http://bugzilla.spamassassin.org/show_bug.cgi?id=2511> and
	# <http://spamassassin.org/released/Razor2.patch>.
	myconf="${myconf} PERL_TAINT=no"

	# No settings needed for 'make all'.
	mymake=""

	# Neither for 'make install'.
	myinst=""

	# Some more files to be installed (README* and Changes are already
	# included per default)
	mydoc="NOTICE
		TRADEMARK
		LICENSE
		CREDITS
		INSTALL
		UPGRADE
		BUGS
		USAGE
		README.spamd
		README.sql
		README.ldap
		procmailrc.example
		sample-nonspam.txt
		sample-spam.txt
		STATISTICS.set0
		STATISTICS.set1
		STATISTICS.set2
		STATISTICS.set3"

	use qmail && mydoc="${mydoc} README.qmail"

	# Add Gentoo tag to make it easier for the upstream devs to spot
	# possible modifications or patches.
	version_tag="g${PV:6}${PR}"
	version_str="${PV//_/-}-${version_tag}"

	# Create the Gentoo config file before Makefile.PL is called so it
	# is copied later on.
	echo "version_tag ${version_tag}" > rules/11_gentoo.cf

	# Setting the following env var ensures that no questions are asked.
	export PERL_MM_USE_DEFAULT=1
	perl-module_src_prep
	# Run the autoconf stuff now, just to make the build sequence look more
	# familiar to the user :)  Plus feeding the VERSION_STRING skips some
	# calls to Perl.
	make spamc/Makefile VERSION_STRING="${version_str}"

	# Now compile all the stuff selected.
	perl-module_src_compile
	if use qmail; then
		make spamc/qmail-spamc || die building qmail-spamc failed
	fi

	# Rename some docu files so they don't clash with others
	src_move_doc   spamd/README              README.spamd
	src_move_doc   spamc/README.qmail        README.qmail
	src_move_doc   sql/README                README.sql
	src_append_doc sql/README.bayes          README.sql
	src_append_doc sql/README.awl            README.sql
	src_move_doc   ldap/README               README.ldap
	src_move_doc   rules/STATISTICS.txt      STATISTICS.set0
	src_move_doc   rules/STATISTICS-set1.txt STATISTICS.set1
	src_move_doc   rules/STATISTICS-set2.txt STATISTICS.set2
	src_move_doc   rules/STATISTICS-set3.txt STATISTICS.set3
	# Remove the MANIFEST files as they aren't docu files
	rm -f MANIFEST*

	if use doc; then
		make text_html_doc
	fi

}

src_install () {
	perl-module_src_install

	# Move spamd to sbin where it belongs.
	dodir /usr/sbin
	mv "${D}"/usr/bin/spamd "${D}"/usr/sbin/spamd  || die

	if use qmail; then
		dobin spamc/qmail-spamc
	fi

	dosym /etc/mail/spamassassin /etc/spamassassin

	# Add the init and config scripts.
	newinitd "${FILESDIR}"/3.0.0-spamd.init spamd
	newconfd "${FILESDIR}"/3.0.0-spamd.conf spamd

	if use doc; then
		dodoc spamd/PROTOCOL
		dohtml doc/*.html
	fi
}

pkg_postinst() {
	perl-module_pkg_postinst

	if ! has_version "perl-core/DB_File"; then
		einfo "The Bayes backend requires the Berkeley DB to store its data. You"
		einfo "need to emerge perl-core/DB_File or USE=berkdb to make it available."
	fi

	if has_version "mail-filter/razor"; then
		if ! has_version ">=mail-filter/razor-2.61"; then
				ewarn "You have $(best_version mail-filter/razor) installed but SpamAssassin"
				if has_version "<mail-filter/razor-2.40"; then
					ewarn "requires at least version 2.40, version 2.61 or later is recommended."
				else
					ewarn "recommends at least version 2.61."
				fi
		fi
	fi

	einfo
	einfo "Please read the file"
	einfo "  /usr/share/doc/${PF}/INSTALL.gz"
	einfo "to find out which optional modules you need to install to enable"
	einfo "additional features which depend on them."
	einfo
	einfo "If upgraded from 2.x, please read the file"
	einfo "  /usr/share/doc/${PF}/UPGRADE.gz"
	einfo
	ewarn
	ewarn "spamd is not designed to listen to an untrusted network"
	ewarn "and is vulnerable to DoS attacks (and eternal doom) if"
	ewarn "configured to do so"
	ewarn
}