freebsd-ports/security/amavisd-new/Makefile
Kyle Evans 5fb9edd6bd Multiple ports: improve regex compliance
These changes largely fall into just two categories:

1. Need textproc/gsed for GNU extensions
2. Extraneous escapes that can go away

For #1, there's a further subdivision into those that require autoconf magic
and those that can get away with BINARY_ALIAS=sed=${LOCALBASE}/bin/gsed.
-CURRENT will soon gain GNU extensions, but these will take longer to get to
all supported releases; we must switch them to gsed to ensure we're actually
properly building them as intended.

For #2, I've fixed these as I can and we should upstream these fixes.

PORTREVISION is bumped for all of the above, because we will almost
certainly build these differently when the replacements actually start
working.

These were all detected by the below-referenced exp-run [1]. The patch
included forbids many ordinary characters from being escaped, since we'll
later imbue those with special meanings. This has had the nice side effect
of picking up various things that we didn't handle properly, e.g. \t and \r
for tab and carriage return.

PR:		229925 [1]
Approved by:	koobs (mentor)
Approved by:	portmgr (blanket: trivial build fixes)
MFH:		no (invasive risk)
Differential Revision:	https://reviews.freebsd.org/D25185
2020-06-08 04:41:31 +00:00

257 lines
7.7 KiB
Makefile

# $FreeBSD$
PORTNAME= amavisd-new
PORTVERSION= 2.12.0
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= security
MASTER_SITES= https://gitlab.com/amavis/amavis/-/archive/v${PORTVERSION}/
DISTNAME= amavis-v${PORTVERSION}
MAINTAINER= flo@FreeBSD.org
COMMENT= Mail scanner interface between mailer and content checkers
LICENSE= GPLv2
RUN_DEPENDS= p5-Unix-Syslog>=0:sysutils/p5-Unix-Syslog \
p5-MIME-Tools>=0:mail/p5-MIME-Tools \
p5-Convert-TNEF>=0:converters/p5-Convert-TNEF \
p5-Convert-UUlib>=1.08,1:converters/p5-Convert-UUlib \
p5-Archive-Zip>=1.14:archivers/p5-Archive-Zip \
p5-Net-Server>=2.0:net/p5-Net-Server \
p5-Mail-DKIM>=0.33:mail/p5-Mail-DKIM \
p5-Net-LibIDN>=0:dns/p5-Net-LibIDN
USES= perl5 shebangfix tar:bz2
USE_PERL5= run
SHEBANG_FILES= amavisd-agent amavisd-nanny amavisd-release p0f-analyzer.pl \
amavisd-snmp-subagent amavisd
NO_BUILD= yes
DOCS= AAAREADME.first AMAVIS-MIB.txt INSTALL LDAP.schema LICENSE \
RELEASE_NOTES README_FILES/README.* README_FILES/screen.css \
README_FILES/amavisd-new-docs.html
AMAVISUSER?= vscan
AMAVISGROUP?= vscan
USERS= ${AMAVISUSER}
GROUPS= ${AMAVISGROUP}
AMAVISDIR?= /var/amavis
AMAVISQUARANTINE?= /var/virusmails
DAEMON?= /usr/sbin/daemon -p
OPTIONS_DEFINE= IPV6 BDB SNMP SQLITE MYSQL PGSQL LDAP SASL SPAMASSASSIN P0F \
FILE RAR UNRAR ARJ UNARJ LHA ARC NOMARCH CAB RPM ZOO UNZOO LZOP \
P7ZIP MSWORD TNEF DOCS
OPTIONS_DEFAULT= BDB SPAMASSASSIN FILE UNRAR ARJ LHA ARC CAB RPM ZOO LZOP \
P7ZIP MSWORD
BDB_DESC= Use BerkeleyDB for nanny/cache/snmp
SNMP_DESC= Install amavisd snmp subagent
SQLITE_DESC= Use SQLite for lookups
MYSQL_DESC= Use MySQL for lookups/logging/quarantine
PGSQL_DESC= Use PgSQL for lookups/logging/quarantine
LDAP_DESC= Use LDAP for lookups
SASL_DESC= Use SASL authentication
SPAMASSASSIN_DESC= Use mail/spamassassin
P0F_DESC= Passive operating system fingerprinting
FILE_DESC= Use newer file(1) utility from ports
RAR_DESC= RAR support with archivers/rar
UNRAR_DESC= RAR support with archivers/unrar
ARJ_DESC= ARJ support with archivers/arj
UNARJ_DESC= ARJ support with archivers/unarj
LHA_DESC= LHA support with archivers/lha
ARC_DESC= ARC support with archivers/arc
NOMARCH_DESC= ARC support with archivers/nomarch
CAB_DESC= CAB support with archivers/cabextract
RPM_DESC= RPM support with archivers/rpm2cpio
ZOO_DESC= ZOO support with archivers/zoo
UNZOO_DESC= ZOO support with archivers/unzoo
LZOP_DESC= LZOP support with archivers/lzop
P7ZIP_DESC= P7ZIP support with archivers/p7zip
MSWORD_DESC= Ms Word support with textproc/ripole
TNEF_DESC= Add external tnef decoder converters/tnef
SUB_FILES= pkg-deinstall pkg-message
SUB_LIST+= AMAVISUSER=${AMAVISUSER} \
AMAVISGROUP=${AMAVISGROUP} \
AMAVISDIR=${AMAVISDIR} \
AMAVISQUARANTINE=${AMAVISQUARANTINE} \
DAEMON="${DAEMON}" \
PERL=${PERL}
PLIST_SUB+= AMAVISUSER=${AMAVISUSER} \
AMAVISGROUP=${AMAVISGROUP} \
AMAVISDIR=${AMAVISDIR} \
AMAVISQUARANTINE=${AMAVISQUARANTINE} \
AMAVIS_NOP0F=${AMAVIS_NOP0F}
.include <bsd.port.options.mk>
USE_RC_SUBR+= amavisd
.if ${PORT_OPTIONS:MIPV6}
RUN_DEPENDS+= p5-IO-Socket-INET6>=0:net/p5-IO-Socket-INET6
.endif
.if ${PORT_OPTIONS:MSNMP} && ${PORT_OPTIONS:MBDB}
USE_RC_SUBR+= amavisd-snmp
RUN_DEPENDS+= p5-Net-SNMP>=0:net-mgmt/p5-Net-SNMP
.endif
.if ${PORT_OPTIONS:MBDB}
RUN_DEPENDS+= p5-BerkeleyDB>=0:databases/p5-BerkeleyDB
.endif
.if ${PORT_OPTIONS:MSQLITE}
RUN_DEPENDS+= p5-DBD-SQLite>=0:databases/p5-DBD-SQLite
.endif
.if ${PORT_OPTIONS:MMYSQL}
RUN_DEPENDS+= p5-DBD-mysql>=0:databases/p5-DBD-mysql
.endif
.if ${PORT_OPTIONS:MPGSQL}
RUN_DEPENDS+= p5-DBD-Pg>=0:databases/p5-DBD-Pg
.endif
.if ${PORT_OPTIONS:MLDAP}
RUN_DEPENDS+= p5-perl-ldap>=0:net/p5-perl-ldap
.endif
.if ${PORT_OPTIONS:MSASL}
RUN_DEPENDS+= p5-Authen-SASL>=0:security/p5-Authen-SASL
.endif
.if ${PORT_OPTIONS:MSPAMASSASSIN}
RUN_DEPENDS+= spamassassin>=0:mail/spamassassin
.endif
.if ${PORT_OPTIONS:MP0F}
RUN_DEPENDS+= ${LOCALBASE}/bin/p0f:net-mgmt/p0f
USE_RC_SUBR+= amavis-p0fanalyzer
.else
AMAVIS_NOP0F= "@comment "
.endif
.if ${PORT_OPTIONS:MFILE}
# security fix, file >= 4.21 needed
RUN_DEPENDS+= file>=4.21:sysutils/file
.endif
# archivers/rar is a 32-bit binary port, we don't want the install to fail
# at that port, therefore we will block instantly here if the platform does
# not suit rar.
.if ${PORT_OPTIONS:MRAR}
.if ${ARCH} == "i386"
RUN_DEPENDS+= ${LOCALBASE}/bin/rar:archivers/rar
.else
IGNORE= archivers/rar is a 32-bit binary port and is not compatible with ${ARCH}
.endif
.endif
.if ${PORT_OPTIONS:MUNRAR}
RUN_DEPENDS+= ${LOCALBASE}/bin/unrar:archivers/unrar
.endif
.if ${PORT_OPTIONS:MARJ}
RUN_DEPENDS+= ${LOCALBASE}/bin/arj:archivers/arj
.endif
.if ${PORT_OPTIONS:MUNARJ}
RUN_DEPENDS+= ${LOCALBASE}/bin/unarj:archivers/unarj
.endif
.if ${PORT_OPTIONS:MLHA}
RUN_DEPENDS+= ${LOCALBASE}/bin/lha:archivers/lha
.endif
.if ${PORT_OPTIONS:MARC}
RUN_DEPENDS+= ${LOCALBASE}/bin/arc:archivers/arc
.endif
.if ${PORT_OPTIONS:MNOMARCH}
RUN_DEPENDS+= ${LOCALBASE}/bin/nomarch:archivers/nomarch
.endif
.if ${PORT_OPTIONS:MCAB}
RUN_DEPENDS+= ${LOCALBASE}/bin/cabextract:archivers/cabextract
.endif
.if ${PORT_OPTIONS:MRPM}
RUN_DEPENDS+= ${LOCALBASE}/bin/rpm2cpio.pl:archivers/rpm2cpio
.endif
.if ${PORT_OPTIONS:MZOO}
# DOS condition in 2.10.1_2
RUN_DEPENDS+= zoo>=2.10.1_2:archivers/zoo
.endif
.if ${PORT_OPTIONS:MUNZOO}
RUN_DEPENDS+= unzoo>=4.4_1:archivers/unzoo
.endif
.if ${PORT_OPTIONS:MLZOP}
RUN_DEPENDS+= ${LOCALBASE}/bin/lzop:archivers/lzop
.endif
.if ${PORT_OPTIONS:MP7ZIP}
RUN_DEPENDS+= ${LOCALBASE}/bin/7zr:archivers/p7zip
.endif
.if ${PORT_OPTIONS:MMSWORD}
RUN_DEPENDS+= ${LOCALBASE}/bin/ripole:textproc/ripole
.endif
.if ${PORT_OPTIONS:MTNEF}
RUN_DEPENDS+= ${LOCALBASE}/bin/tnef:converters/tnef
.endif
.include <bsd.port.pre.mk>
post-patch:
@${REINPLACE_CMD} -e "s|$$daemon_user = 'vscan';|$$daemon_user = '${AMAVISUSER}';|" \
-e "s|$$daemon_group = 'vscan';|$$daemon_group = '${AMAVISGROUP}';|" \
-e "s|/var/amavis|${AMAVISDIR}|" \
-e "s|/var/lib/amavis|${AMAVISDIR}|" \
-e "s|/var/virusmails|${AMAVISQUARANTINE}|" \
-e 's|$$localhost_name = .localhost.;|$$localhost_name = $$myhostname;|' \
-e 's|/var/run/clamav/clamd|/var/run/clamav/clamd|g' \
${WRKSRC}/amavisd.conf
@${REINPLACE_CMD} "s|/var/amavis/db|${AMAVISDIR}/db|" ${WRKSRC}/amavisd-agent
@${REINPLACE_CMD} "s|/var/amavis/db|${AMAVISDIR}/db|" ${WRKSRC}/amavisd-nanny
@${REINPLACE_CMD} -e "s|/var/amavis/db|${AMAVISDIR}/db|" \
${WRKSRC}/amavisd-snmp-subagent
@${REINPLACE_CMD} "s|/var/amavis/amavisd.sock|${AMAVISDIR}/amavisd.sock|" \
${WRKSRC}/amavisd-release
@${REINPLACE_CMD} -e "s|/etc/amavisd.conf|${PREFIX}/etc/amavisd.conf|" \
-e "s|/var/amavis|${AMAVISDIR}|g" \
-e 's|$$localhost_name = .localhost.;|$$localhost_name = $$myhostname;|' \
${WRKSRC}/amavisd
do-install:
.for i in amavisd amavisd-agent amavisd-nanny amavisd-release amavisd-snmp-subagent
${INSTALL_SCRIPT} ${WRKSRC}/${i} ${STAGEDIR}${PREFIX}/sbin
.endfor
${INSTALL_SCRIPT} ${WRKSRC}/amavisd.conf ${STAGEDIR}${PREFIX}/etc/amavisd.conf.sample
${INSTALL_SCRIPT} ${WRKSRC}/amavisd.conf-default ${STAGEDIR}${PREFIX}/etc/amavisd.conf-default
${INSTALL_SCRIPT} ${WRKSRC}/amavisd-custom.conf ${STAGEDIR}${PREFIX}/etc/amavisd-custom.conf.sample
${LN} -s ${PREFIX}/sbin/amavisd-release ${STAGEDIR}${PREFIX}/sbin/amavisd-requeue
${MKDIR} ${STAGEDIR}${AMAVISDIR}/var
${MKDIR} ${STAGEDIR}${AMAVISDIR}/tmp
${MKDIR} ${STAGEDIR}${AMAVISDIR}/db
${MKDIR} ${STAGEDIR}${AMAVISQUARANTINE}
do-install-P0F-on:
${INSTALL_SCRIPT} ${WRKSRC}/p0f-analyzer.pl ${STAGEDIR}${PREFIX}/sbin
do-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}/images
.for i in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
.endfor
@${CP} -pr ${WRKSRC}/README_FILES/images/ ${STAGEDIR}${DOCSDIR}/images
.include <bsd.port.post.mk>