# $NetBSD$

DISTNAME=	Mail-SpamAssassin-${_SA_CVS_VER}
PKGNAME=	spamassassin-cvs-${_SA_CVS_DATE}
PKGREVISION=	2
CATEGORIES=	mail
MASTER_SITES=	http://www.spamassassin.org/devel/		\
		http://eu.spamassassin.org/devel/		\
		http://au.spamassassin.org/devel/

MAINTAINER=	tom@replic8.net
HOMEPAGE=	http://spamassassin.apache.org/
COMMENT=	Mail filter to identify spam (CVS snapshot)

DEPENDS+=	p5-Net-DNS>=0.29:../../net/p5-Net-DNS
DEPENDS+=	p5-HTML-Parser>=3.29:../../www/p5-HTML-Parser
DEPENDS+=	p5-Digest-SHA1-[0-9]*:../../security/p5-Digest-SHA1
DEPENDS+=	p5-MIME-Base64>=2.11:../../converters/p5-MIME-Base64
DEPENDS+=	p5-DB_File-[0-9]*:../../databases/p5-DB_File

CONFLICTS=	p5-Mail-SpamAssassin-[1-9]*			\
		spamassassin-[1-9]*

PKG_DESTDIR_SUPPORT=	none

EXTRACT_SUFX?=	.tar.bz2
NO_CHECKSUM=	YES

.include "../../mk/bsd.prefs.mk"

# which version of SA is current in CVS
_SA_CVS_VER?=	3.000000-cvs
_SA_CVS_DATE!=	${DATE} +%Y%m%d

WRKSRC=		${WRKDIR}/${DISTNAME:S/-cvs//}

PERL5_REQD+=	5.6.1	# MakeMaker >= 5.45 needed, >= 6.16 recommended

PKG_SYSCONFSUBDIR=	spamassassin

# Set contact address (e-mail, URL, ...) for use in spam report messages
# See "perldoc Mail::SpamAssassin::Conf" for option "report_contact"
SPAMASSASSIN_CONTACT_ADDRESS?=		'postmaster'

# Use "NO" to turn off warnings and taint checks in spamd/spamassassin
SPAMASSASSIN_PERL_WARNINGS?=		YES
SPAMASSASSIN_PERL_TAINT_CHECKS?=	YES

# Enable test for Razor/Pyzor during 'make test'?
SPAMASSASSIN_NET_TESTS?=		NO

# Use "NO" to disable OpenSSL support
SPAMASSASSIN_USE_SSL?=			YES

# Enable MySQL support using p5-DBI/DBD?
SPAMASSASSIN_USE_MYSQL?=		NO

# Enable razor-agents support?
SPAMASSASSIN_USE_RAZOR?=		YES

# Enable pyzor support?
SPAMASSASSIN_USE_PYZOR?=		NO

.if !empty(SPAMASSASSIN_USE_SSL:M[yY][eE][sS])
.  include "../../security/openssl/buildlink3.mk"
DEPENDS+=		p5-IO-Socket-SSL>=0.92:../../security/p5-IO-Socket-SSL
CONFIGURE_ARGS+=	--enable-ssl
MAKE_PARAMS=		ENABLE_SSL=yes
SA_SSLCERTS=		${SSLCERTS}
.else
CONFIGURE_ARGS+=	--disable-ssl
MAKE_PARAMS=		ENABLE_SSL=no
SA_SSLCERTS=		'$$LOCAL_RULES_DIR/certs'
.endif

.if !empty(SPAMASSASSIN_USE_MYSQL:M[yY][eE][sS])
.include "../../databases/p5-DBI/buildlink3.mk"
DEPENDS+=		p5-DBI>=1.37:../../databases/p5-DBI
DEPENDS+=		p5-DBD-mysql>=2.1017:../../databases/p5-DBD-mysql
.endif

.if !empty(SPAMASSASSIN_USE_RAZOR:M[yY][eE][sS])
DEPENDS+=		p5-razor-agents>=2.36:../../mail/p5-razor-agents
SPAMASSASSIN_NET_TESTS?=	YES
.endif

.if !empty(SPAMASSASSIN_USE_PYZOR:M[yY][eE][sS])
#DEPENDS+=		pyzor>=0.4.0:../../mail/pyzor
DEPENDS+=		pyzor>=0.4.0:../../wip/pyzor
SPAMASSASSIN_NET_TESTS?=	YES
.endif

BUILD_DEFS+=		SPAMASSASSIN_USE_SSL
BUILD_DEFS+=		SPAMASSASSIN_USE_MYSQL
BUILD_DEFS+=		SPAMASSASSIN_USE_RAZOR
BUILD_DEFS+=		SPAMASSASSIN_USE_PYZOR
BUILD_DEFS+=		SPAMASSASSIN_CONTACT_ADDRESS
BUILD_DEFS+=		SPAMASSASSIN_PERL_WARNINGS
BUILD_DEFS+=		SPAMASSASSIN_PERL_TAINT_CHECKS

PLIST_ADD=		${WRKSRC}/.PLIST_ADD
PLIST_SRC=		${PKGDIR}/PLIST ${PLIST_ADD}
PERL5_PACKLIST=		${PERL5_SITEARCH}/auto/Mail/SpamAssassin/.packlist

#GNU_CONFIGURE=		YES
CONFIGURE_DIRS=		${WRKSRC}/spamd
PERL5_CONFIGURE=	NO # we need the default "do-configure" target
PERL5_CONFIGURE_DIRS=	${WRKSRC}

MAKE_PARAMS+=		SYSCONFDIR="${PKG_SYSCONFDIR}"
MAKE_PARAMS+=		LOCALRULESDIR="${PKG_SYSCONFDIR}"
MAKE_PARAMS+=		DEFRULESDIR="${RULESDIR}"
MAKE_PARAMS+=		RUN_NET_TESTS="${SPAMASSASSIN_NET_TESTS}"
MAKE_PARAMS+=		PERL_WARN="${SPAMASSASSIN_PERL_WARNINGS}"
MAKE_PARAMS+=		PERL_TAINT="${SPAMASSASSIN_PERL_TAINT_CHECKS}"

RCD_SCRIPTS=		spamd
RCD_SCRIPT_SRC.spamd=	${WRKSRC}/spamd/netbsd-rc-script.sh

EGDIR=			${PREFIX}/share/examples/spamassassin
DOCDIR=			${PREFIX}/share/doc/spamassassin
DOC_SUBDIR=		${DOCDIR:S,^${PREFIX}/,,}
HTMLDIR=		${PREFIX}/share/doc/html/spamassassin
RULESDIR=		${PREFIX}/share/spamassassin
RULE_SUBDIR=		${RULESDIR:S,^${PREFIX}/,,}

CONF_FILES+=		${EGDIR}/local.cf  ${PKG_SYSCONFDIR}/local.cf	\
			${RULESDIR}/user_prefs.template			\
		 	${PKG_SYSCONFDIR}/user_prefs.template
SUPPORT_FILES_PERMS+=	${EGDIR}/netbsd_lists.cf			\
			${PKG_SYSCONFDIR}/netbsd_lists.cf ${SHAREOWN}	\
			${SHAREGRP} ${SHAREMODE}

OWN_DIRS+=		${EGDIR} ${DOCDIR} ${DOCDIR}/spamd ${HTMLDIR}

SUBST_CLASSES+=		sa1 sa2 sa3

SUBST_STAGE.sa1=	post-patch
SUBST_FILES.sa1=	Makefile.PL
SUBST_SED.sa1=		-e s!@SA_CONTACT_ADDRESS@!${SPAMASSASSIN_CONTACT_ADDRESS}!

SUBST_STAGE.sa2=	post-patch
SUBST_FILES.sa2=	README spamd/spamd.raw
SUBST_SED.sa2=		-e s!@PREFIX@!${PREFIX}!g			\
			-e s!@PKG_SYSCONFDIR@!${PKG_SYSCONFDIR}!g	\
			-e s!@SA_SSLCERTS@!${SA_SSLCERTS}!g

SUBST_STAGE.sa3=	post-patch
SUBST_FILES.sa3=	INSTALL USAGE lib/Mail/SpamAssassin/Conf.pm	\
			spamd/README spamd/README.vpopmail	\
			sql/README sql/README.awl sql/README.bayes
SUBST_SED.sa3=		-e s!/usr/share!${PREFIX}/share!g		\
			-e s!/usr/bin!${PREFIX}/bin!g			\
			-e s!/usr/lib!${PREFIX}/lib!g			\
			-e s!/etc/mail/spamassassin!${PKG_SYSCONFDIR}!g

.if ${OPSYS} == "NetBSD"
#  the 'spamd' RCD_SCRIPT behaves differently if we run NetBSD 1.6 or later
.  if ${OS_VERSION:M1.[0-5]*}
INTERPRETER_SUPPORT=	NO
.  else
INTERPRETER_SUPPORT=	YES
.  endif
.endif

# These values are substituted into netbsd-rc-script.sh.
FILES_SUBST+=		INTERPRETER_SUPPORT=${INTERPRETER_SUPPORT:Q}
FILES_SUBST+=		OPSYS=${OPSYS:Q}

pre-configure: perl5-configure

pre-install:
	${FIND} ${WRKSRC} -name "*.orig" -print -o			\
		-name "*.subst.sav" -print | ${XARGS} ${RM} -f

post-install:
	@${TEST} -r ${PLIST_ADD} && ${RM} ${PLIST_ADD} ; :
	@ # ninja image is in the static PLIST
	@${INSTALL_DATA} ${WRKSRC}/ninjabutton.png ${HTMLDIR}/
.for f in COPYRIGHT INSTALL LICENSE README TRADEMARK USAGE		\
		CREDITS PACKAGING STATUS BUGS Changes			\
		sample-nonspam.txt sample-spam.txt spamd/README		\
		spamd/README.vpopmail
	@${INSTALL_DATA} ${WRKSRC}/${f} ${DOCDIR}/${f}
	@${ECHO} "${DOC_SUBDIR}/${f}" >> ${PLIST_ADD}
.endfor
.for f in STATISTICS.txt STATISTICS-set1.txt STATISTICS-set2.txt	\
		STATISTICS-set3.txt
	@${INSTALL_DATA} ${WRKSRC}/rules/${f} ${DOCDIR}/
	@${ECHO} "${DOC_SUBDIR}/${f}" >> ${PLIST_ADD}
.endfor
.for DIR in masses sql ldap tools
	@cd ${WRKSRC};							\
	for d in `${FIND} ${DIR} -type d -print`; do			\
		${INSTALL_DATA_DIR} ${DOCDIR}/$$d;			\
	done;								\
	for f in `${FIND} ${DIR} -type f -print`; do			\
		if ${TEST} -f $$f; then					\
			: ; 						\
		else							\
			continue;					\
		fi;							\
		if ${TEST} -x $$f ; then				\
			${SED} -e "1s,#!.*/bin/perl,#!${PERL5}," < $$f	\
				> $${f}.fixed &&			\
			${MV} $${f}.fixed $$f &&			\
			${CHMOD} +x $$f &&				\
			${INSTALL_SCRIPT} $$f ${DOCDIR}/$$f;		\
		else							\
			${INSTALL_DATA} $$f ${DOCDIR}/$$f;		\
		fi;							\
		${ECHO} "${DOC_SUBDIR}/$$f" >> ${PLIST_ADD};		\
	done;								\
	 | ${SORT} -r >> ${PLIST_ADD};
.endfor
	@cd ${WRKSRC}/rules;						\
	for f in [0-9]*.cf; do						\
		${ECHO} "${RULE_SUBDIR}/$$f" >> ${PLIST_ADD};		\
	done
	@# examples are in the static PLIST
	@${INSTALL_DATA} ${WRKSRC}/procmailrc.example ${EGDIR}/
	@${INSTALL_DATA} ${WRKSRC}/rules/local.cf ${EGDIR}/
	@${INSTALL_DATA} ${FILESDIR}/netbsd_lists.cf ${EGDIR}/
	@${CHOWN} ${SHAREOWN} ${RULESDIR}/*
	@${CHGRP} ${SHAREGRP} ${RULESDIR}/*
	@${CHMOD} a=r ${RULESDIR}/*

.include "../../lang/perl5/module.mk"
.include "../../mk/bsd.pkg.mk"
