freebsd-ports/mail/postfix/Makefile
Stefan Eßer b7f05445c0 Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.

Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.

There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.

This commit implements such a proposal and moves one of the WWW: entries
of each pkg-descr file into the respective port's Makefile. A heuristic
attempts to identify the most relevant URL in case there is more than
one WWW: entry in some pkg-descr file. URLs that are not moved into the
Makefile are prefixed with "See also:" instead of "WWW:" in the pkg-descr
files in order to preserve them.

There are 1256 ports that had no WWW: entries in pkg-descr files. These
ports will not be touched in this commit.

The portlint port has been adjusted to expect a WWW entry in each port
Makefile, and to flag any remaining "WWW:" lines in pkg-descr files as
deprecated.

Approved by:		portmgr (tcberner)
2022-09-07 23:10:59 +02:00

408 lines
13 KiB
Makefile

PORTNAME= postfix
DISTVERSION= 3.7.2
PORTREVISION?= 1
PORTEPOCH= 1
CATEGORIES= mail
MASTER_SITES= http://ftp.porcupine.org/mirrors/postfix-release/ \
http://de.postfix.org/ftpmirror/ \
http://cdn.postfix.johnriley.me/mirrors/postfix-release/ \
http://www.artfiles.org/postfix.org/postfix-release/ \
http://mirror.lhsolutions.nl/postfix-release/ \
ftp://postfix.mirrors.pair.com/
MASTER_SITES:= ${MASTER_SITES:S|$|official/|}
DIST_SUBDIR= ${PORTNAME}
MAINTAINER= otis@FreeBSD.org
COMMENT= Secure alternative to widely-used Sendmail ${COMMENT_${FLAVOR}}
WWW= https://www.postfix.org/
LICENSE= EPL IPL10
LICENSE_COMB= multi
LICENSE_NAME_IPL10= IBM PUBLIC LICENSE VERSION 1.0
LICENSE_FILE= ${WRKSRC}/LICENSE
LICENSE_PERMS_IPL10= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
FLAVORS= default ldap sasl
default_CONFLICTS_INSTALL= postfix-base-ldap postfix-base-sasl \
postfix-ldap postfix-sasl
ldap_PKGNAMESUFFIX= -ldap
ldap_CONFLICTS_INSTALL= postfix postfix-base \
postfix-base-sasl postfix-sasl
sasl_PKGNAMESUFFIX= -sasl
sasl_CONFLICTS_INSTALL= postfix postfix-base \
postfix-base-ldap postfix-ldap
COMMENT_ldap= (with OpenLDAP and Cyrus SASL support)
COMMENT_sasl= (with Cyrus SASL support)
USES= cpe shebangfix ssl
USE_RC_SUBR= postfix
USE_SUBMAKE= yes
SHEBANG_FILES= auxiliary/qshape/qshape.pl
SCRIPTS_ENV+= POSTFIX_DEFAULT_MTA="${POSTFIX_DEFAULT_MTA}"
CONFLICTS_INSTALL= courier-0.* opensmtpd opensmtpd-devel \
postfix-current sendmail sendmail-devel
PORTSCOUT= limit:^3\.7\.
USERS= postfix
GROUPS= mail maildrop postfix
OPTIONS_DEFINE= BDB BLACKLISTD CDB DOCS EAI INST_BASE LDAP LMDB MYSQL \
NIS PCRE2 PGSQL SASL SQLITE TEST TLS
OPTIONS_DEFAULT?= BLACKLISTD EAI PCRE2 TLS
OPTIONS_RADIO= RG1
OPTIONS_RADIO_RG1= SASLKMIT SASLKRB5
.if ${FLAVOR:U} == ldap
OPTIONS_SLAVE= LDAP
.elif ${FLAVOR:U} == sasl
OPTIONS_SLAVE= SASL
.endif
OPTIONS_SUB= yes
.if !empty(FLAVOR) && ${FLAVOR:U} != default
OPTIONS_FILE= ${PORT_DBDIR}/${OPTIONS_NAME}/${FLAVOR}-options
.endif
BLACKLISTD_DESC= Enable blacklistd support
CDB_DESC= CDB maps lookups
EAI_DESC= Email Address Internationalization (SMTPUTF8) support
INST_BASE_DESC= Install into /usr and /etc/postfix
LDAP_DESC= LDAP maps (uses WITH_OPENLDAP_VER)
LMDB_DESC= LMDB maps
PCRE2_DESC= Use Perl Compatible Regular Expressions, version 2
RG1_DESC= Kerberos network authentication protocol type
SASLKMIT_DESC= If your SASL req. MIT Kerberos5, select this
SASLKRB5_DESC= If your SASL req. Kerberos5, select this
SASL_DESC= Cyrus SASL support (Dovecot SASL is always built in)
TEST_DESC= SMTP/LMTP test server and generator
BDB_USES= bdb
BLACKLISTD_EXTRA_PATCHES= ${FILESDIR}/extra-patch-blacklistd
CDB_LIB_DEPENDS= libcdb.so:databases/tinycdb
EAI_LIB_DEPENDS= libicuuc.so:devel/icu
LDAP_USE= OPENLDAP=yes
LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb
MYSQL_USES?= mysql
PCRE2_LIB_DEPENDS= libpcre2-8.so:devel/pcre2
PGSQL_USES= pgsql
SASLKMIT_LIB_DEPENDS= libkrb5.so:security/krb5
SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
SQLITE_USES= sqlite
.include <bsd.port.options.mk>
HTML1= body_checks.5.html bounce.5.html postfix-power.png \
scache.8.html tlsmgr.8.html
STRIP_LIBEXEC= anvil bounce cleanup discard dnsblog error flush lmtp local \
master nqmgr oqmgr pickup pipe postlogd postscreen proxymap \
qmgr qmqpd scache showq smtp smtpd spawn tlsmgr tlsproxy \
trivial-rewrite verify virtual
.if !defined(DEBUG)
MAKEFILEFLAGS+= DEBUG=
.endif
MAKEFILEFLAGS+= pie=yes CC="${CC}" OPT="${CFLAGS}"
.if ${SSL_DEFAULT} == libressl
BROKEN= error: OpenSSL-1.1.1 is the minimum supported version. LibreSSL is not supported
.endif
.if ${PORT_OPTIONS:MINST_BASE}
.if ${FLAVOR:U} == ldap
PKGNAMESUFFIX= -base-ldap
.elif ${FLAVOR:U} == sasl
PKGNAMESUFFIX= -base-sasl
.else
PKGNAMESUFFIX= -base
.endif
PREFIX= /usr
ETCDIR= /etc/postfix
PLIST_SUB+= BMAN="share/"
.else
PLIST_SUB+= BMAN=""
.endif
PLIST_SUB+= PFETC=${ETCDIR}
# check if mailwrapper supports $LOCALBASE
.if ${OPSYS} == FreeBSD
SUB_LIST+= MC_PREFIX="${LOCALBASE}" \
USE_LOCALBASE_MAILER_CONF="yes"
.else
SUB_LIST+= MC_PREFIX="" \
USE_LOCALBASE_MAILER_CONF="no"
.endif
.if ${PORT_OPTIONS:MDOCS}
PORTDOCS= *
READMEDIR= ${DOCSDIR}
.else
READMEDIR= no
.endif
# dynamic direcory location
DAEMONDIR= ${PREFIX}/libexec/postfix
SHLIB_DIRECTORY= ${PREFIX}/lib/postfix
# new proposed location is ETCDIR (see README_FILES/INSTALL)
# keep compatiblity with Postfix 2.6 .. 2.11 and use DAEMOMDIR
META_DIRECTORY= ${DAEMONDIR}
SUB_LIST+= DAEMONDIR="${DAEMONDIR}" \
META_DIRECTORY="${META_DIRECTORY}" \
READMEDIR="${READMEDIR}" \
REQUIRE="${_REQUIRE}"
SUB_FILES+= mailer.conf.postfix pkg-install pkg-message
POSTFIX_CCARGS+= -DDEF_CONFIG_DIR=\\\"${ETCDIR}\\\" \
-DDEF_DAEMON_DIR=\\\"${DAEMONDIR}\\\" \
-DDEF_META_DIR=\\\"${META_DIRECTORY}\\\" \
-DDEF_COMMAND_DIR=\\\"${PREFIX}/sbin\\\" \
-DDEF_SENDMAIL_PATH=\\\"${PREFIX}/sbin/sendmail\\\" \
-DDEF_NEWALIAS_PATH=\\\"${PREFIX}/bin/newaliases\\\" \
-DDEF_MAILQ_PATH=\\\"${PREFIX}/bin/mailq\\\" \
-DDEF_MANPAGE_DIR=\\\"${MANPREFIX}/man\\\" \
-DDEF_README_DIR=\\\"${READMEDIR}\\\" \
-DDEF_HTML_DIR=\\\"${READMEDIR}\\\" \
-DDEF_QUEUE_DIR=\\\"/var/spool/postfix\\\" \
-DDEF_DATA_DIR=\\\"/var/db/postfix\\\" \
-DDEF_MAIL_OWNER=\\\"postfix\\\" \
-DDEF_SGID_GROUP=\\\"maildrop\\\" \
-Wmissing-prototypes -Wformat -Wno-comment
# Default requirement for postfix rc script
_REQUIRE= LOGIN cleanvar dovecot
# always build with Dovecot SASL support, Cyrus is optional
# see Postfix HISTORY 20051222
POSTFIX_CCARGS+= -DUSE_SASL_AUTH
# Email Address Internationalization (EAI, RFC 6531..6533)
.if ${PORT_OPTIONS:MEAI}
POSTFIX_CCARGS+= -DHAS_EAI -I${LOCALBASE}/include
POSTFIX_AUXLIBS+= -L${LOCALBASE}/lib -licuuc
.else
POSTFIX_CCARGS+= -DNO_EAI
.endif
.if ${PORT_OPTIONS:MPCRE2}
DYN_EXT+= pcre
POSTFIX_CCARGS+= -DHAS_PCRE=2 -I${LOCALBASE}/include
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_PCRE=`${LOCALBASE}/bin/pcre2-config --libs8`"
.else
POSTFIX_CCARGS+= -DNO_PCRE
.endif
.if ${PORT_OPTIONS:MSASL}
POSTFIX_CCARGS+= -DUSE_CYRUS_SASL -I${LOCALBASE}/include \
-I${LOCALBASE}/include/sasl
POSTFIX_AUXLIBS+= -L${LOCALBASE}/lib -lsasl2 -lpam -lcrypt
.else
POSTFIX_CCARGS+= -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"
.endif
.if ${PORT_OPTIONS:MSASLKRB5}
POSTFIX_AUXLIBS+= -lkrb5 -lhx509 -lcrypto -lcrypt -lcom_err -lasn1 \
-lroken
.endif
.if ${PORT_OPTIONS:MSASLKMIT}
POSTFIX_AUXLIBS+= -Wl,--rpath,$${KRB5_HOME:-${LOCALBASE}}/lib -lkrb5 \
-lcrypto -lcrypt -lcom_err
.endif
.if ${PORT_OPTIONS:MTLS}
POSTFIX_CCARGS+= -DUSE_TLS -I${OPENSSLINC}
# XXX LDFLAGS possible breaks dynamic building
POSTFIX_AUXLIBS+= -L${OPENSSLLIB} ${LDFLAGS} -lssl -lcrypto
.else
POSTFIX_CCARGS+= -DNO_TLS
.endif
.if ${PORT_OPTIONS:MBDB}
POSTFIX_CCARGS+= -I${BDB_INCLUDE_DIR}
POSTFIX_AUXLIBS+= -L${BDB_LIB_DIR} -l${BDB_LIB_NAME}
.endif
.if ${PORT_OPTIONS:MBLACKLISTD}
. if ${OPSYS} == FreeBSD
POSTFIX_AUXLIBS+= -lblacklist
. else
IGNORE= blacklistd is only supported on FreeBSD
. endif
.endif
.if ${PORT_OPTIONS:MMYSQL}
DYN_EXT+= mysql
POSTFIX_CCARGS+= -DHAS_MYSQL -I${LOCALBASE}/include/mysql
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_MYSQL=-L${LOCALBASE}/lib/mysql -lmysqlclient -lz -lm"
_REQUIRE+= mysql
.endif
.if ${PORT_OPTIONS:MPGSQL}
DYN_EXT+= pgsql
POSTFIX_CCARGS+= -DHAS_PGSQL -I${LOCALBASE}/include
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_PGSQL=-L${LOCALBASE}/lib -lpq"
_REQUIRE+= postgresql
.endif
.if ${PORT_OPTIONS:MSQLITE}
DYN_EXT+= sqlite
POSTFIX_CCARGS+= -DHAS_SQLITE -I${LOCALBASE}/include
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_SQLITE=-L${LOCALBASE}/lib -lsqlite3 -lpthread"
.endif
.if ${PORT_OPTIONS:MLDAP}
DYN_EXT+= ldap
. if defined(WITH_OPENLDAP_VER)
WANT_OPENLDAP_VER= ${WITH_OPENLDAP_VER}
. endif
POSTFIX_CCARGS+= -DHAS_LDAP -I${LOCALBASE}/include \
-I${LOCALBASE}/include/sasl -DUSE_LDAP_SASL
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_LDAP=-L${LOCALBASE}/lib -lldap -L${LOCALBASE}/lib -llber"
_REQUIRE+= slapd
.endif
.if ${PORT_OPTIONS:MCDB}
DYN_EXT+= cdb
POSTFIX_CCARGS+= -DHAS_CDB -I${LOCALBASE}/include
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_CDB=-L${LOCALBASE}/lib -lcdb"
.endif
.if ${PORT_OPTIONS:MNIS}
POSTFIX_CCARGS+= -DHAS_NIS
_REQUIRE+= ypserv
.endif
.if ${PORT_OPTIONS:MTEST}
BINTEST= qmqp-sink qmqp-source smtp-sink smtp-source
MANTEST= qmqp-sink.1 qmqp-source.1 smtp-sink.1 smtp-source.1
.endif
.if ${PORT_OPTIONS:MLMDB}
DYN_EXT+= lmdb
POSTFIX_CCARGS+= -DHAS_LMDB -I${LOCALBASE}/include
POSTFIX_DYN_AUXLIBS+= "AUXLIBS_LMDB=-L${LOCALBASE}/lib -llmdb"
.endif
# sed script for files in ${WRKSRC}/README_FILES ${WRKSRC}/conf ${WRKSRC}/man
REINPLACE= s!^PATH=.*!PATH=/bin:/sbin:/usr/bin:/usr/sbin:${PREFIX}/bin:${PREFIX}/sbin!;\
s!(_directory = )/usr/!\1${PREFIX}/!g;\
s!^(data_directory = /var/)lib/!\1db/!g;\
s!^\#(mynetworks_style = host)!\1!g;\
s!^(sendmail_path =)!\1 ${PREFIX}/sbin/sendmail!g;\
s!^(newaliases_path =)!\1 ${PREFIX}/bin/newaliases!g;\
s!^(mailq_path =)!\1 ${PREFIX}/bin/mailq!g;\
s!^(setgid_group =)!\1 maildrop!g;\
s!^(manpage_directory =)!\1 ${MANPREFIX}/man!g;\
s!^((html|readme)_directory =)!\1 ${READMEDIR}!g;\
\!^\#alias_database = dbm:/etc/mail/aliases$$!d;\
s!(:|= )/etc/postfix!\1$$config_directory!g;\
s!/etc/postfix!${ETCDIR}!g;\
s!^(sample_directory =)!\1 ${ETCDIR}!g;\
s!($$config_directory/(access|aliases|canonical|generic|header_checks|relocated|transport|virtual):f:root:-:644:)p1!\1o!;
post-patch:
.if ${PORT_OPTIONS:MSASL} && ! ${PORT_OPTIONS:MMYSQL} && exists(${LOCALBASE}/lib/libsasl2.a)
@if /usr/bin/nm ${LOCALBASE}/lib/libsasl2.a | ${GREP} -wq "mysql_init"; then \
${ECHO_MSG}; \
${ECHO_MSG} "Your SASL library is compiled with MYSQL"; \
${ECHO_MSG} "If you use MYSQL in ${PORTNAME} consider CTRL+C and"; \
${ECHO_MSG} "select MYSQL OPTION in config menu."; \
${ECHO_MSG} "# make clean config"; \
${ECHO_MSG}; \
sleep 5; \
fi
.endif
@${ECHO_CMD} '<HTML><BODY>See <A HREF="header_checks.5.html">header_checks.5.html</A></BODY></HTML>' \
> ${WRKSRC}/html/body_checks.5.html
@${REINPLACE_CMD} -E -e 's!^(#define DEF_SGID_GROUP[^"]+)"postdrop"$$!\1"maildrop"!' \
${WRKSRC}/src/global/mail_params.h
@${FIND} -X ${WRKSRC}/README_FILES ${WRKSRC}/conf ${WRKSRC}/man \
-type f -a ! \( -name INSTALL -o -name aliases \) | ${XARGS} \
${REINPLACE_CMD} -i '' -E -e '${REINPLACE}'
.for f in ${HTML1}
@${ECHO_CMD} '$$html_directory/$f:f:root:-:644' \
>> ${WRKSRC}/conf/postfix-files
.endfor
@${ECHO_CMD} '$$manpage_directory/man1/posttls-finger.1:f:root:-:644' \
>> ${WRKSRC}/conf/postfix-files
@${ECHO_CMD} '$$command_directory/posttls-finger:f:root:-:755' \
>> ${WRKSRC}/conf/postfix-files
do-configure:
(cd ${WRKSRC} && ${MAKE} -f Makefile.init makefiles \
${MAKEFILEFLAGS} CCARGS="${POSTFIX_CCARGS}" \
shared=yes shlib_directory=${SHLIB_DIRECTORY} \
dynamicmaps=yes \
${POSTFIX_DYN_AUXLIBS} \
AUXLIBS="${POSTFIX_AUXLIBS}" && \
${ECHO_CMD} "all: default" >> Makefile)
pre-install-INST_BASE-on:
${MKDIR} ${STAGEDIR}/etc/rc.d
do-install:
@(cd ${WRKSRC} && ${MAKE} non-interactive-package \
install_root=${STAGEDIR} tempdir=${WRKDIR} \
shlib_directory=${SHLIB_DIRECTORY} \
config_directory=${ETCDIR} \
command_directory=${PREFIX}/sbin \
daemon_directory=${DAEMONDIR} \
meta_directory=${META_DIRECTORY} \
html_directory=${READMEDIR} \
mailq_path=${PREFIX}/bin/mailq \
manpage_directory=${MANPREFIX}/man \
newaliases_path=${PREFIX}/bin/newaliases \
readme_directory=${READMEDIR} \
sendmail_path=${PREFIX}/sbin/sendmail )
${INSTALL_SCRIPT} ${WRKSRC}/auxiliary/rmail/rmail ${STAGEDIR}${PREFIX}/bin/rmail
${INSTALL_SCRIPT} ${WRKSRC}/auxiliary/qshape/qshape.pl ${STAGEDIR}${PREFIX}/bin/qshape
${INSTALL_MAN} ${WRKSRC}/man/man1/qshape.1 ${STAGEDIR}${MANPREFIX}/man/man1
# == do not overwrite existing config
${MV} ${STAGEDIR}${ETCDIR}/main.cf ${STAGEDIR}${ETCDIR}/main.cf.sample
${MV} ${STAGEDIR}${ETCDIR}/master.cf ${STAGEDIR}${ETCDIR}/master.cf.sample
${MKDIR} ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKDIR}/mailer.conf.postfix ${STAGEDIR}${DATADIR}
.for SAMPLEFILE in access aliases canonical generic header_checks relocated transport virtual
${MV} ${STAGEDIR}${ETCDIR}/${SAMPLEFILE} ${STAGEDIR}${ETCDIR}/${SAMPLEFILE}.sample
.endfor
# == chop dynamicmaps.cf entries into dedicated .cf files
# for future sub-packages support
.for f in ${DYN_EXT}
# adjust dynamicmaps.cf
${GREP} -e "^#" -e "^${f}" ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf \
> ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf.d/${f}.cf && \
${SED} -i '' -e '/${f}/d' ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf
# adjust / generate postfix-files for dynamic modules
${SED} -i '' -e '/postfix-${f}.so/d' ${STAGEDIR}${META_DIRECTORY}/postfix-files && \
${PRINTF} '# Do not edit this file.\
\n$$shlib_directory/postfix-${f}.so:f:root:-:755\
\n$$meta_directory/postfix-files.d/${f}-files:f:root:-:644\
\n$$meta_directory/dynamicmaps.cf.d/${f}.cf:f:root:-:644\n' \
> ${STAGEDIR}${META_DIRECTORY}/postfix-files.d/${f}-files
.endfor
# Fix compressed man pages and strip executables
${SED} -i '' -E -e "s|(man[158]/.*.[158]):|\1.gz:|g" ${STAGEDIR}${META_DIRECTORY}/postfix-files
-@${STRIP_CMD} ${STRIP_LIBEXEC:S|^|${STAGEDIR}${DAEMONDIR}/|}
-@${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/*
-@${STRIP_CMD} ${STAGEDIR}${SHLIB_DIRECTORY}/*.so
do-install-TEST-on:
${INSTALL_PROGRAM} ${BINTEST:S|^|${WRKSRC}/bin/|} ${STAGEDIR}${PREFIX}/bin
${INSTALL_MAN} ${MANTEST:S|^|${WRKSRC}/man/man1/|} ${STAGEDIR}${MANPREFIX}/man/man1
.include <bsd.port.mk>