# $NetBSD: Makefile,v 1.11 2007/09/04 20:54:29 joerg Exp $
#

DISTNAME=		MailScanner-4.30.3-2
PKGNAME=		mailscanner-4.30.3.2
PKGREVISION=		3
CATEGORIES=		mail
MASTER_SITES=		http://www.sng.ecs.soton.ac.uk/mailscanner/files/4/tar/

MAINTAINER=		grant@NetBSD.org
HOMEPAGE=		http://www.mailscanner.info/
COMMENT=		Powerful spam/virus filter with many options

WRKSRC=			${WRKDIR}/MailScanner-4.30.3

PKG_SYSCONFSUBDIR=	MailScanner

DEPENDS+=		p5-Archive-Zip-[0-9]*:../../archivers/p5-Archive-Zip
DEPENDS+=		p5-Convert-BinHex-[0-9]*:../../converters/p5-Convert-BinHex
DEPENDS+=		p5-Net-CIDR>=0.09:../../devel/p5-Net-CIDR
DEPENDS+=		p5-MIME-tools>=0:../../mail/p5-MIME-tools
DEPENDS+=		tnef>=1.0:../../mail/tnef

NO_BUILD=		YES
USE_TOOLS+=		perl:run bash:run
REPLACE_BASH+=		 bin/update_virus_scanners
REPLACE_PERL+=		bin/MailScanner
REPLACE_PERL+=		lib/panda-wrapper lib/rav-wrapper lib/*-autoupdate

DOCSDIR=		${LOCALBASE}/share/doc/MailScanner
EGDIR=			${LOCALBASE}/share/examples/MailScanner
LIBDIR=			${LOCALBASE}/lib/MailScanner
LIBEXECDIR=		${LOCALBASE}/libexec/MailScanner

OWN_DIRS=		${PKG_SYSCONFDIR}/CustomFunctions
OWN_DIRS+=		${PKG_SYSCONFDIR}/rules

PLIST_SUBST+=		DOCSDIR=${DOCSDIR:Q}
PLIST_SUBST+=		EGDIR=${EGDIR:Q}
PLIST_SUBST+=		LIBDIR=${LIBDIR:Q}
PLIST_SUBST+=		LIBEXECDIR=${LIBEXECDIR:Q}

PLIST_SRC=		${WRKDIR}/PLIST_DYNAMIC

MS_CONFIG_FILES=	filename.rules.conf \
			filetype.rules.conf spam.assassin.prefs.conf \
			spam.lists.conf virus.scanners.conf \
			rules/bounce.rules rules/spam.whitelist.rules

CONF_FILES+=		${EGDIR}/MailScanner.conf ${PKG_SYSCONFDIR}/MailScanner.conf
.for _f_ in ${MS_CONFIG_FILES}
CONF_FILES+=		${EGDIR}/${_f_} ${PKG_SYSCONFDIR}/${_f_}
.endfor

RCD_SCRIPTS=		mailscanner

SUBST_CLASSES+=		paths
SUBST_STAGE.paths=	post-patch
SUBST_FILES.paths=	bin/MailScanner etc/MailScanner.conf
SUBST_FILES.paths+=	etc/virus.scanners.conf bin/update_virus_scanners
SUBST_FILES.paths+=	lib/MailScanner/ConfigDefs.pl
SUBST_SED.paths=	-e s,/opt/MailScanner/lib/MailScanner/CustomFunctions,${PKG_SYSCONFDIR}/CustomFunctions,g
SUBST_SED.paths+=	-e s,/opt/MailScanner/lib,${LIBDIR},g
SUBST_SED.paths+=	-e s,/opt/MailScanner/etc/reports,${EGDIR}/reports,g
SUBST_SED.paths+=	-e s,/opt/MailScanner/etc,${PKG_SYSCONFDIR},g
SUBST_SED.paths+=	-e s,/opt/MailScanner/var/MailScanner.pid,/var/run/MailScanner.pid,g
SUBST_SED.paths+=	-e s,/opt/MailScanner/bin,${PREFIX}/bin,g

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

# XXX this could use some improvement
.if ${OPSYS} == "NetBSD"
SUBST_CLASSES+=		sendmail
SUBST_STAGE.sendmail=	post-patch
SUBST_FILES.sendmail=	bin/MailScanner etc/MailScanner.conf
SUBST_FILES.sendmail+=	etc/virus.scanners.conf bin/update_virus_scanners
SUBST_FILES.sendmail+=	lib/MailScanner/ConfigDefs.pl
SUBST_SED.sendmail=	-e s,/usr/lib/sendmail,/usr/sbin/mailwrapper,g
.endif

SUBST_CLASSES+=		systemdefs
SUBST_STAGE.systemdefs=	post-patch
SUBST_FILES.systemdefs=	lib/MailScanner/SystemDefs.pm
SUBST_SED.systemdefs=	-e s,/bin/cat,${CAT},g
SUBST_SED.systemdefs=	-e s,/bin/cp,${CP},g
SUBST_SED.systemdefs=	-e s,/bin/rm,${RM},g
# we can't use sed from pkgsrc as it won't be registered as a
# dependency. XXX tools.mk needs a way to tell us about this dependency.
.if empty(SED:M${LOCALBASE}*)
SUBST_SED.systemdefs=	-e s,/bin/sed,${SED},g
.endif

INSTALLATION_DIRS=	bin ${PKGMANDIR}/man5 ${PKGMANDIR}/man8

# get rid of CVS backup files
post-extract:
	cd ${WRKSRC} && ${RM} -f */.#*

do-install:
	${INSTALL_DATA_DIR} ${EGDIR}
	${INSTALL_DATA_DIR} ${EGDIR}/rules
	${INSTALL_SCRIPT} ${WRKSRC}/bin/MailScanner ${PREFIX}/bin

	${INSTALL_LIB_DIR} ${LIBEXECDIR}
	${INSTALL_SCRIPT} ${WRKSRC}/bin/update_virus_scanners ${LIBEXECDIR}
	cd ${WRKSRC}/lib && ${FIND} . -name "*-autoupdate" -exec ${INSTALL_SCRIPT} '{}' ${LIBEXECDIR} \;
	cd ${WRKSRC}/lib && ${FIND} . -name "*-wrapper" -exec ${INSTALL_SCRIPT} '{}' ${LIBEXECDIR} \;

	${INSTALL_DATA} ${WRKSRC}/etc/MailScanner.conf ${EGDIR}/MailScanner.conf
.for _f_ in ${MS_CONFIG_FILES}
	${INSTALL_DATA} ${WRKSRC}/etc/${_f_} ${EGDIR}
.endfor
	cd ${WRKSRC}/etc/rules && ${INSTALL_DATA} \
		EXAMPLES README spam.whitelist.rules bounce.rules \
		${EGDIR}/rules
	cd ${WRKSRC}/etc && ${FIND} reports -type d -exec ${INSTALL_DATA_DIR} ${EGDIR}/'{}' \;
	cd ${WRKSRC}/etc && ${FIND} reports -type f ! -name "*.orig" -exec ${INSTALL_DATA} '{}' ${EGDIR}/'{}' \;

	${INSTALL_LIB_DIR} ${LIBDIR}
	${INSTALL_LIB_DIR} ${LIBDIR}/MailScanner
	${INSTALL_SCRIPT} ${WRKSRC}/lib/MailScanner.pm ${LIBDIR}
	cd ${WRKSRC}/lib/MailScanner && ${FIND} . -name "*.pm" -exec ${INSTALL_DATA} '{}' ${LIBDIR}/MailScanner \;
	cd ${WRKSRC}/lib/MailScanner && ${FIND} . -name "*.pl" -exec ${INSTALL_DATA} '{}' ${LIBDIR}/MailScanner \;

	${INSTALL_DATA_DIR} ${DOCSDIR}
	cd ${WRKSRC}/docs && ${FIND} * -type d -exec ${INSTALL_DATA_DIR} ${DOCSDIR}'/{}' \;
	cd ${WRKSRC}/docs && ${FIND} * -type f -exec ${INSTALL_DATA} '{}' ${DOCSDIR} \;
	cd ${WRKSRC}/docs/man && ${INSTALL_MAN} MailScanner.conf.5 ${PREFIX}/${PKGMANDIR}/man5
	cd ${WRKSRC}/docs/man && ${INSTALL_MAN} MailScanner.8 ${PREFIX}/${PKGMANDIR}/man8

post-install:
	${CP} -f ${PKGDIR}/PLIST ${PLIST_SRC}
	${ECHO} bin/MailScanner >> ${PLIST_SRC}
	${ECHO} man/man5/MailScanner.conf.5 >> ${PLIST_SRC}
	${ECHO} man/man8/MailScanner.8 >> ${PLIST_SRC}
.for _dir_ in ${DOCSDIR} ${EGDIR} ${LIBDIR} ${LIBEXECDIR}
	${FIND} ${_dir_} \( -type f -o -type l \) -print \
		| ${SORT} | ${SED} -e "s,${PREFIX}/,,g" \
		>> ${PLIST_SRC}
.endfor
.for _dir_ in ${DOCSDIR} ${EGDIR} ${LIBDIR} ${LIBEXECDIR}
	${FIND} ${_dir_} -type d -print \
		| ${SORT} -r | ${SED} -e "s,${PREFIX}/,@dirrm ,g" \
		>> ${PLIST_SRC}
.endfor

.include "../../mk/bsd.pkg.mk"