1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-06 06:30:19 +00:00
freebsd-ports/mail/exim/Makefile
Eygene Ryabinkin b6afedf1c5 mail/exim: upgrade to 4.76
4.76 is the security release that fixes CVE-2011-1764, format string
attack and information leak, both inside the DKIM code.

List of changes (ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.76):

PP/01 The new ldap_require_cert option would segfault if used.  Fixed.

PP/02 Harmonised TLS library version reporting; only show if
      debugging.  Layout now matches that introduced for other
      libraries in 4.74 PP/03.

PP/03 New openssl_options items: no_sslv2 no_sslv3 no_ticket no_tlsv1

PP/04 New "dns_use_edns0" global option.

PP/05 Don't segfault on misconfiguration of ref:name exim-user as uid.
      Bugzilla 1098.

PP/06 Extra paranoia around buffer usage at the STARTTLS transition.
      nb: Exim is not vulnerable to http://www.kb.cert.org/vuls/id/555316

TK/01 Updated PolarSSL code to 0.14.2.
      Bugzilla 1097. Patch from Andreas Metzler.

PP/07 Catch divide-by-zero in ${eval:...}.
      Fixes bugzilla 1102.

PP/08 Condition negation of bool{}/bool_lax{} did not negate.  Fixed.
      Bugzilla 1104.

TK/02 Bugzilla 1106: CVE-2011-1764 - DKIM log line was subject to a
      format-string attack -- SECURITY: remote arbitrary code execution.

TK/03 SECURITY - DKIM signature header parsing was double-expanded,
      second time unintentionally subject to list matching rules,
      letting the header cause arbitrary Exim lookups (of items which can
      occur in lists, *not* arbitrary string expansion). This allowed for
      information disclosure.

PP/09 Fix another SIGFPE (x86) in ${eval:...} expansion, this time related
      to INT_MIN/-1 -- value coerced to INT_MAX.

New stuff (ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.76):

 1. The global option "dns_use_edns0" may be set to coerce EDNS0 usage
    on or off in the resolver library.

And I am also adding patch for exiqgrep that was taken from
  http://bugs.exim.org/show_bug.cgi?id=1103 [1].

PR: ports/156903 [2], ports/156872 [3]
Reported-by: Oliver Brandmueller <ob@e-gitt.net> [1], admin@anes.su [2], Alexander Wittig <alexander@wittig.name> [3]
Approved-by: erwin (mentor)
Feature-safe: yes
2011-05-11 11:30:17 +00:00

623 lines
18 KiB
Makefile

# New ports collection makefile for: exim
# Date created: 23 June 1996
# Whom: markm@FreeBSD.org
#
# $FreeBSD$
#
PORTNAME= exim
PORTVERSION?= ${EXIM_VERSION}
CATEGORIES= mail ipv6
MASTER_SITES= ${MASTER_SITE_EXIM:S/$/:exim/}
MASTER_SITE_SUBDIR= exim4/:exim
DISTNAME= ${PORTNAME}-${EXIM_VERSION}
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:exim
DIST_SUBDIR= exim
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= rea@FreeBSD.org
COMMENT?= High performance MTA for Unix systems on the Internet
.include "Makefile.options"
USE_BZIP2= yes
WANT_GNOME= yes
WANT_PERL= yes
MAKE_JOBS_UNSAFE= yes
# One can tune the following "hidden" knobs:
# - EXIM_USER: user exim is running as;
# - EXIM_GROUP: ditto for the group;
# - LOGDIR: where Exim logs will be put;
# - LOG_FILE_PATH: path where '%s' will be substituted with
# the target name (main, reject, etc);
# - CONFIG_FILE_PATH: path to the default configuration file;
# - ALT_CONFIG_PREFIX: path to the default prefix for all
# configuration files, excluding the main one;
# will be effective only when WITH_ALT_CONFIG_PREFIX
# will be set via OPTIONS.
.if make(makesum) && !defined(FETCH_ALL)
.error "You forgot to define FETCH_ALL to create the sane distinfo"
.endif
.include <bsd.port.pre.mk>
.if defined(WITH_SA_EXIM)
.if defined(WITH_KAS)
IGNORE= You cannot select both SA_EXIM and KAS options
.endif
.if defined(WITH_SO_1024)
IGNORE= You cannot select both SA_EXIM and SO_1024 options
.endif
.endif
.if defined(WITH_KAS)
.if defined(WITH_SO_1024)
IGNORE= You cannot select both SA_KAS and SO_1024 options
.endif
.endif
.if defined(WITH_SA_EXIM) || defined(FETCH_ALL)
MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \
SF/sa-exim/sa-exim/${SA_EXIM_VERSION}:sa_exim
MASTER_SITE_SUBDIR+= sa-exim/:sa_exim
DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim
.endif
.if defined(WITH_SO_1024) || defined(FETCH_ALL)
MASTER_SITES+= ftp://ftp.renatasystems.org/pub/FreeBSD/ports/distfiles/:so_1024
DISTFILES+= spamooborona1024-src-${SO_1024_VERSION}.tar.gz:so_1024
.endif
.if defined(WITH_SO_1024)
LDFLAGS+= -lz
PLIST_SUB+= SO_1024=""
.else
PLIST_SUB+= SO_1024="@comment "
.endif
EXIM_VERSION= 4.76
SA_EXIM_VERSION=4.2
SO_1024_VERSION=3.2
.if !defined(EXIMON_ONLY)
.if defined(PKGNAMESUFFIX)
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-4.*
.endif
.for suffix in -ldap2 -mysql -postgresql -sa-exim -sqlite
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != ${suffix}
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}${suffix}-4.*
.endif
.endfor
.if defined(WITH_EXIMON)
CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-monitor-4.*
.endif
.else
WITH_EXIMON= yes
.endif
.if defined(WITH_EXIMON)
USE_XORG= x11 xaw xt
.endif
.if !defined(EXIMON_ONLY)
MAN8= exim.8
.else
NO_INSTALL_MANPAGES= yes
.endif
PORTDOC_BASE= ACKNOWLEDGMENTS NOTICE README.UPDATING
PORTDOC_FILES= ChangeLog Exim3.upgrade Exim4.upgrade NewStuff \
OptionLists.txt README README.SIEVE dbm.discuss.txt \
experimental-spec.txt filter.txt pcrepattern.txt \
pcretest.txt spec.txt
PORT_EXAMPLES= convert4r3 convert4r4 transport-filter.pl
DAILY_SCRIPTS= 150.exim-tidydb 460.exim-mail-rejects
PKGINSTALL= ${WRKDIR}/pkg-install
.if defined(NOPORTDOCS) && !defined(EXIMON_ONLY)
PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES
.else
PKGMESSAGE= ${WRKDIR}/pkg-message
.endif
MAKE_ENV+= OSTYPE="${OPSYS}" ARCHTYPE="${ARCH}" DUMMY_LDFLAGS="${DUMMY_LDFLAGS}"
.if defined(EXIMON_ONLY)
MAKE_ENV+= INSTALL_ARG="eximon eximon.bin"
.elif defined(WITHOUT_SUID)
MAKE_ENV+= INSTALL_ARG="-no_chown"
.endif
EXIM_USER?= mailnull
EXIM_GROUP?= mail
LOGDIR?= /var/log/exim
LOG_FILE_PATH?= ${LOGDIR}/%slog
CONFIG_FILE_PATH?= ${PREFIX}/etc/exim/configure
ALT_CONFIG_PREFIX?= ${PREFIX}/etc/exim/
SED_SCRIPT= -e 's,%%PREFIX%%,${PREFIX},g' \
-e 's,%%DOCSDIR%%,${DOCSDIR},g' \
-e 's,%%EXAMPLESDIR%%,${EXAMPLESDIR},g' \
-e 's,%%EXIM_USER%%,${EXIM_USER},g' \
-e 's,%%EXIM_GROUP%%,${EXIM_GROUP},g' \
-e 's,%%LOGDIR%%,${LOGDIR},g'
PLIST_SUB+= EXIM_VERSION="${EXIM_VERSION}-${PORTREVISION}" \
EXIM_USER=${EXIM_USER} \
EXIM_GROUP=${EXIM_GROUP} \
LOGDIR="${LOGDIR}"
# Exim refuses to run local deliveries as root by default. You can
# add other users to this colon-separated list that cannot be
# overridden at runtime below, but are advised not to remove "root".
#WITH_FIXED_NEVER_USERS= root:daemon:bin
# When Exim is decoding MIME "words" in header lines it converts any foreign
# character sets to the one that is set in the headers_charset option.
# The default setting is defined by this setting:
WITH_DEFAULT_CHARSET?= ISO-8859-1
# You should not need to fiddle with anything below this point.
LIB_DEPENDS+= pcre.0:${PORTSDIR}/devel/pcre
.if defined(WITH_DCC)
SEDLIST+= -e 's,^\# (EXPERIMENTAL_DCC=),\1,'
.endif
.if defined(WITH_XCLIENT)
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-xclient
.endif
.if defined(WITH_KAS)
BUILD_DEPENDS+= libspamtest>=0:${PORTSDIR}/mail/libspamtest
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-kas
.endif
.if defined(WITH_WISHLIST)
EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'`
.endif
SEDLIST+= -e 's,XX_CFLAGS_XX,${CFLAGS},' \
-e 's,XX_PREFIX_XX,${PREFIX},' \
-e 's,XX_LOCALBASE_XX,${LOCALBASE},' \
-e 's,XX_LOG_FILE_PATH_XX,${LOG_FILE_PATH},' \
-e 's,XX_CONFIG_FILE_PATH_XX,${CONFIG_FILE_PATH},' \
-e 's,XX_ALT_CONFIG_PREFIX_XX,${ALT_CONFIG_PREFIX},' \
-e 's,XX_EXIM_USER_XX,${EXIM_USER},' \
-e 's,XX_EXIM_GROUP_XX,${EXIM_GROUP},' \
-e 's,XX_DEFAULT_CHARSET_XX,${WITH_DEFAULT_CHARSET},'
.if defined(WITH_FIXED_NEVER_USERS)
SEDLIST+= -e 's,^(FIXED_NEVER_USERS=).*,\1${WITH_FIXED_NEVER_USERS},'
.endif
.if defined(WITH_EXIMON)
SEDLIST+= -e 's,^\# (EXIM_MONITOR=),\1,'
PLIST_SUB+= EXIMON=""
.else
PLIST_SUB+= EXIMON="@comment "
.endif
.if !defined(WITHOUT_TLS)
.include "${PORTSDIR}/Mk/bsd.openssl.mk"
SEDLIST+= -e 's,^\# (SUPPORT_TLS=),\1,'
.else
SEDLIST+= -e 's,^(TLS_LIBS=),\# \1,'
.endif
.if !defined(WITHOUT_EMBEDDED_PERL)
USE_PERL5= yes
SEDLIST+= -e 's,^\# (EXIM_PERL=),\1,'
.endif
.if defined(WITH_TCP_WRAPPERS)
SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,-lwrap,' \
-e 's,^\# (USE_TCP_WRAPPERS=),\1,'
.else
SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,,'
.endif
.if !defined(WITHOUT_ICONV)
USE_ICONV= yes
SEDLIST+= -e 's,XX_ICONV_LIBS_XX,-L${LOCALBASE}/lib -liconv,' \
-e 's,^\# (HAVE_ICONV=),\1,'
.else
SEDLIST+= -e 's,XX_ICONV_LIBS_XX,,'
.endif
.if defined(WITH_LDAP) || defined(LDAP_LIB_TYPE) \
|| defined(WITH_OPENLDAP1) || defined(WITH_OPENLDAP2) \
|| defined(WITH_OPENLDAP20) || defined(WITH_OPENLDAP21)
BROKEN= deprecated LDAP option defined, use WITH_OPENLDAP or WITH_OPENLDAP_VER
.endif
.if defined(WITH_OPENLDAP_VER) && ${WITH_OPENLDAP_VER:L} != "auto"
WANT_OPENLDAP_VER= ${WITH_OPENLDAP_VER}
.endif
.if defined(WITH_OPENLDAP)
USE_OPENLDAP= yes
LDAP_LIB_TYPE= OPENLDAP2
SEDLIST+= -e 's,XX_LDAP_LIBS_XX,-L${LOCALBASE}/lib -llber -lldap,' \
-e 's,XX_LDAP_INCLUDE_XX,-I${LOCALBASE}/include,' \
-e 's,XX_LDAP_TYPE_XX,${LDAP_LIB_TYPE},' \
-e 's,^\# (LOOKUP_LDAP=),\1,'
.else
SEDLIST+= -e 's,XX_LDAP_[^ ]*_XX,,' \
-e 's,^(LDAP_LIB_TYPE=),\# \1,'
.endif
.if defined(DB_LIB_VERSION)
BROKEN= deprecated option DB_LIB_VERSION used, use WITH_BDB_VER
.endif
.if defined(WITH_BDB_VER)
.if ${WITH_BDB_VER} > 1
WITH_BDB= yes
.endif
.endif
.if defined(WITH_BDB)
USE_BDB= yes
INVALID_BDB_VER= 2 3
DB_LIBS= -L${BDB_LIB_DIR} -l${BDB_LIB_NAME}
DB_INCLUDES= -I${BDB_INCLUDE_DIR}
.else
DB_LIBS=
DB_INCLUDES=
SEDLIST+= -e 's,^(DBMLIB=),\# \1,'
.endif
SEDLIST+= -e 's,XX_DB_LIBS_XX,${DB_LIBS},' \
-e 's,XX_DB_INCLUDES_XX,${DB_INCLUDES},'
.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER:L} != "auto"
WANT_MYSQL_VER= ${WITH_MYSQL_VER}
.else
.undef WITH_MYSQL_VER
.endif
.if defined(WITH_MYSQL)
USE_MYSQL= yes
SEDLIST+= -e 's,XX_MYSQL_LIBS_XX,-L${LOCALBASE}/lib/mysql -lmysqlclient,' \
-e 's,XX_MYSQL_INCLUDE_XX,-I${LOCALBASE}/include/mysql,' \
-e 's,^\# (LOOKUP_MYSQL=),\1,'
.else
SEDLIST+= -e 's,XX_MYSQL_[^ ]*_XX,,'
.endif
.if defined(WITH_SASLAUTHD)
RUN_DEPENDS+= ${LOCALBASE}/sbin/saslauthd:${PORTSDIR}/security/cyrus-sasl2-saslauthd
SASLAUTHD_SOCKET?= /var/run/saslauthd/mux
SEDLIST+= -e 's,^\# (CYRUS_SASLAUTHD_SOCKET=).*,\1${SASLAUTHD_SOCKET},'
.endif
.if !defined(WITHOUT_PAM)
SEDLIST+= -e 's,XX_PAM_LIBS_XX,-lpam,' \
-e 's,^\# (SUPPORT_PAM=),\1,'
.else
SEDLIST+= -e 's,XX_PAM_LIBS_XX,,'
.endif
.if !defined(WITHOUT_AUTH_CRAM_MD5)
SEDLIST+= -e 's,^\# (AUTH_CRAM_MD5=),\1,'
.endif
.if !defined(WITHOUT_AUTH_PLAINTEXT)
SEDLIST+= -e 's,^\# (AUTH_PLAINTEXT=),\1,'
.endif
.if !defined(WITHOUT_AUTH_DOVECOT)
SEDLIST+= -e 's,^\# (AUTH_DOVECOT=),\1,'
.endif
.if !defined(WITHOUT_AUTH_SPA)
SEDLIST+= -e 's,^\# (AUTH_SPA=),\1,'
.endif
.if defined(WITH_AUTH_SASL)
LIB_DEPENDS+= sasl2.2:${PORTSDIR}/security/cyrus-sasl2
SEDLIST+= -e 's,^\# (AUTH_CYRUS_SASL=),\1,' \
-e 's,^\# (AUTH_LIBS=),\1,'
.endif
.if defined(WITH_AUTH_RADIUS)
WITH_RADIUS_TYPE?= RADLIB
.if ${WITH_RADIUS_TYPE:L} == radlib
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-lradius,' \
-e 's,^\# (RADIUS_CONFIG_FILE=).*,\1/etc/radius.conf,' \
-e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADLIB,'
.elif ${WITH_RADIUS_TYPE:L} == radiusclient
LIB_DEPENDS+= radiusclient-ng.2:${PORTSDIR}/net/radiusclient
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-L${LOCALBASE}/lib -lradiusclient-ng,' \
-e 's,^\# (RADIUS_CONFIG_FILE=).*,\1${LOCALBASE}/etc/radiusclient-ng/radiusclient.conf,' \
-e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADIUSCLIENTNEW,'
.else
IGNORE= the variable WITH_RADIUS_TYPE must be either RADLIB or RADIUSCLIENT
.endif
.else
SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,,'
.endif
.if defined(WITH_PGSQL)
USE_PGSQL= yes
SEDLIST+= -e 's,XX_PGSQL_LIBS_XX,-L${LOCALBASE}/lib -lpq,' \
-e 's,XX_PGSQL_INCLUDE_XX,-I${LOCALBASE}/include/pgsql,' \
-e 's,^\# (LOOKUP_PGSQL=),\1,'
.else
SEDLIST+= -e 's,XX_PGSQL_[^ ]*_XX,,'
.endif
.if !defined(WITH_PGSQL) && !defined(WITH_MYSQL) && !defined(LDAP_LIB_TYPE) && \
!defined(WITH_BDB)
SEDLIST+= -e 's,^(LOOKUP_LIBS=),\# \1,' \
-e 's,^(LOOKUP_INCLUDE=),\# \1,'
.endif
.if !defined(WITH_DNSDB)
SEDLIST+= -e 's,^(LOOKUP_DNSDB=),\# \1,'
.endif
.if !defined(WITHOUT_MAILDIR)
SEDLIST+= -e 's,^\# (SUPPORT_MAILDIR=),\1,'
.endif
.if !defined(WITHOUT_MAILSTORE)
SEDLIST+= -e 's,^\# (SUPPORT_MAILSTORE=),\1,'
.endif
.if !defined(WITHOUT_MBX)
SEDLIST+= -e 's,^\# (SUPPORT_MBX=),\1,'
.endif
.if !defined(WITHOUT_CDB)
SEDLIST+= -e 's,^\# (LOOKUP_CDB=),\1,'
.endif
.if !defined(WITHOUT_DSEARCH)
SEDLIST+= -e 's,^\# (LOOKUP_DSEARCH=),\1,'
.endif
.if defined(WITHOUT_LSEARCH)
SEDLIST+= -e 's,^(LOOKUP_LSEARCH=),\# \1,'
.endif
.if !defined(WITHOUT_NIS)
SEDLIST+= -e 's,^\# (LOOKUP_NIS=),\1,'
.endif
.if !defined(WITHOUT_PASSWD)
SEDLIST+= -e 's,^\# (LOOKUP_PASSWD=),\1,'
.endif
.if defined(WITH_SQLITE)
USE_SQLITE= yes
USE_GNOME= pkgconfig
SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,`pkg-config --static --libs sqlite3`,' \
-e 's,XX_SQLITE_FLAGS_XX,`pkg-config --cflags sqlite3`,' \
-e 's,^\# (LOOKUP_SQLITE=),\1,'
.else
SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,,' \
-e 's,XX_SQLITE_FLAGS_XX,,'
.endif
.if !defined(WITHOUT_LMTP)
SEDLIST+= -e 's,^\# (TRANSPORT_LMTP=),\1,'
.endif
.if defined(WITHOUT_ALT_CONFIG_PREFIX)
SEDLIST+= -e 's,^(ALT_CONFIG_PREFIX=),\# \1,'
.endif
.if defined(WITH_SPF)
LIB_DEPENDS+= spf2.3:${PORTSDIR}/mail/libspf2
SEDLIST+= -e 's,XX_SPF_FLAGS_XX,-DSPF,' \
-e 's,XX_SPF_LIBS_XX,-lspf2 ${PTHREAD_LIBS},' \
-e 's,^\# (EXPERIMENTAL_SPF=),\1,'
.else
SEDLIST+= -e 's,XX_SPF_FLAGS_XX,,' \
-e 's,XX_SPF_LIBS_XX,,'
.endif
.if defined(WITH_SRS)
LIB_DEPENDS+= srs2.0:${PORTSDIR}/mail/libsrs2
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DSRS,' \
-e 's,XX_SRS_LIBS_XX,-lsrs2,'
.elif defined(WITH_SRS_ALT)
LIB_DEPENDS+= srs_alt.1:${PORTSDIR}/mail/libsrs_alt
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DEXPERIMENTAL_SRS,' \
-e 's,XX_SRS_LIBS_XX,-lsrs_alt,'
.else
SEDLIST+= -e 's,XX_SRS_FLAGS_XX,,' \
-e 's,XX_SRS_LIBS_XX,,'
.endif
.if defined(WITH_SA_EXIM)
RUN_DEPENDS+= ${LOCALBASE}/bin/spamc:${PORTSDIR}/mail/p5-Mail-SpamAssassin
PLIST_SUB+= SA_EXIM=""
.else
PLIST_SUB+= SA_EXIM="@comment "
.endif
.if defined(WITH_READLINE)
SEDLIST+= -e 's,^\# (USE_READLINE=),\1,'
.endif
.if defined(WITH_CONTENT_SCAN)
SEDLIST+= -e 's,^\# (WITH_CONTENT_SCAN=),\1,'
.endif
.if !defined(WITHOUT_OLD_DEMIME)
SEDLIST+= -e 's,^\# (WITH_OLD_DEMIME=),\1,'
.endif
.if !defined(EXIMON_ONLY) && !defined(WITHOUT_DAEMON)
USE_RC_SUBR= exim.sh
PLIST_SUB+= DAEMON=""
SUB_LIST+= LOGDIR="${LOGDIR}"
.else
PLIST_SUB+= DAEMON="@comment "
.endif
.if defined(EXIMON_ONLY) && ${MASTERDIR} == ${PKGDIR}
.error EXIMON_ONLY is not user settable
.endif
.if !defined(WITHOUT_IPV6)
SEDLIST+= -e 's,^\# (HAVE_IPV6=),\1,'
.endif
.if defined(WITH_DISABLE_D_OPT)
SEDLIST+= -e 's,^\# (DISABLE_D_OPTION=),\1,'
.else
.if defined(WHITELIST_D_MACROS)
SEDLIST+= -e 's,^\# (WHITELIST_D_MACROS=).*$$,\1${WHITELIST_D_MACROS:S/,/\\,/g},'
.endif
.endif
.if defined(TRUSTED_CONFIG_LIST)
SEDLIST+= -e 's,^\# (TRUSTED_CONFIG_LIST=).*$$,\1${TRUSTED_CONFIG_LIST:S/,/\\,/g},'
.endif
DUMMY_LDFLAGS!= ${ECHO_CMD} ${LDFLAGS} | ${SED} -e 's|-Wl,-rpath|-Wl,-DUMMYrpath|g; s|-rpath|-Wl,-rpath|g; s|-DUMMYrpath|-rpath|g'
pre-everything::
@${ECHO} 'Exim now drops privileges when alternate configuration'
@${ECHO} 'files are used. You can set make variable TRUSTED_CONFIG_LIST'
@${ECHO} 'to specify the list of configuration files for which'
@${ECHO} 'root privileges will be retained.'
@${ECHO} ''
@${ECHO} 'You can whitelist some macros using the make variable'
@${ECHO} 'WHITELIST_D_MACROS. This is useful if you are running'
@${ECHO} 'with DISABLE_D_OPT set, but macros whitelisting will be'
@${ECHO} 'removed in some future Exim release, so it is better'
@${ECHO} 'to use TRUSTED_CONFIG_LIST to set the list of trusted'
@${ECHO} 'configuration files.'
.if empty(.MAKEFLAGS:M-s) && defined(WITH_WISHLIST)
@${ECHO} ''
@${ECHO} 'Included extra patches:'
@${FIND} ${PATCHDIR} -name 'wishlist-*.patch' \
-exec ${SED} -ne 's,^# , ,p' {} \;
@${ECHO} ''
.endif
post-extract:
.if defined(WITH_SA_EXIM)
@cd ${WRKDIR} && ${GZIP_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/sa-exim-${SA_EXIM_VERSION}.tar.gz ${EXTRACT_AFTER_ARGS}
.endif
.if defined(WITH_SO_1024)
@cd ${WRKDIR} && ${GZIP_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/spamooborona1024-src-${SO_1024_VERSION}.tar.gz ${EXTRACT_AFTER_ARGS}
.endif
do-configure:
@${MKDIR} ${WRKSRC}/Local
@${SED} -E ${SEDLIST} ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile
.if defined(WITH_EXIMON)
@${CP} ${WRKSRC}/exim_monitor/EDITME ${WRKSRC}/Local/eximon.conf
.endif
@[ ! -f ${PKGDIR}/pkg-install ] || ${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-install > ${PKGINSTALL}
@${REINPLACE_CMD} -E ${SEDLIST} ${WRKSRC}/src/configure.default
@${REINPLACE_CMD} -e 's!$$(LDFLAGS)!$$(DUMMY_LDFLAGS) -L$${LOCALBASE}/lib!' ${WRKSRC}/OS/Makefile-Base
@${REINPLACE_CMD} -e 's/"(Exim $$version_number)\\n\\t"/"(Exim $$version_number (${OPSYS}))\\n\\t"/' \
${WRKSRC}/src/globals.c
@${REINPLACE_CMD} -e 's/Exim version %s \(#%s \)\{0,1\}/&(${OPSYS} ${OSREL}) /' ${WRKSRC}/src/exim.c
@${REINPLACE_CMD} -e 's/^#include "cnumber\.h"$$/${PORTREVISION}/' ${WRKSRC}/src/version.c
@${REINPLACE_CMD} -E -e 's/^(PERL_COMMAND=).*/\1${PERL:S,/,\/,g}/' \
-e 's/^(CC=).*/\1${CC:S,/,\/,g}/' ${WRKSRC}/OS/Makefile-Default
.if defined(WITH_SA_EXIM)
@${REINPLACE_CMD} -E -e 's/^(LOCAL_SCAN_SOURCE=).*/\1Local\/sa-exim.c/' \
${WRKSRC}/OS/Makefile-Default
@${CP} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.c ${WRKSRC}/Local
@{ \
${ECHO_CMD} "char *version=\"${SA_EXIM_VERSION}\";"; \
${ECHO_CMD} "#define SPAMC_LOCATION \"${LOCALBASE}/bin/spamc\""; \
${ECHO_CMD} "#define SPAMASSASSIN_CONF \"${PREFIX}/etc/exim/sa-exim.conf\""; \
} > ${WRKSRC}/Local/sa-exim.h
@${REINPLACE_CMD} -e 's,/usr/bin/spamc,${LOCALBASE}/bin/spamc,' \
${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.conf
.endif
.if defined(WITH_SO_1024)
@${REINPLACE_CMD} -E -e 's/^(LOCAL_SCAN_SOURCE=).*/\1Local\/local_scan_1024.c/' \
${WRKSRC}/OS/Makefile-Default
@${CP} ${WRKDIR}/local_scan_1024.c ${WRKSRC}/Local
.endif
@${REINPLACE_CMD} -E -e 's/XX_STRIPCMD_XX/${STRIP_CMD:S,/,\/,g}/' \
${WRKSRC}/OS/Makefile-FreeBSD
@(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} configure)
post-build:
.for script in ${DAILY_SCRIPTS}
@${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh
.endfor
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > \
${WRKDIR}/POST-INSTALL-NOTES
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
@[ ! -f ${PKGDIR}/pkg-message ] || ${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-message > ${WRKDIR}/pkg-message
.if !defined(EXIMON_ONLY)
pre-install:
if ! /usr/sbin/pw groupshow ${EXIM_GROUP}; then /usr/sbin/pw groupadd ${EXIM_GROUP} -g 125; fi
if ! /usr/sbin/pw usershow ${EXIM_USER}; then /usr/sbin/pw useradd ${EXIM_USER} -g ${EXIM_GROUP} -u 125 \
-h - -d /var/spool/exim -s /nonexistent -c "Exim User"; fi
@[ -d "/etc" ] || ${MKDIR} "/etc"
@${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
post-install:
.if !defined(WITHOUT_DAEMON)
@${MKDIR} ${PREFIX}/etc/periodic/daily
.for script in ${DAILY_SCRIPTS}
@${INSTALL_SCRIPT} ${WRKDIR}/${script}.sh ${PREFIX}/etc/periodic/daily/${script}
.endfor
.endif
@[ -f ${PREFIX}/etc/exim/configure ] || \
${CP} ${PREFIX}/etc/exim/configure.default ${PREFIX}/etc/exim/configure
.for manfile in ${MAN8}
@${INSTALL_MAN} ${WRKSRC}/doc/${manfile} ${MAN8PREFIX}/man/man8
.endfor
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
@${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${DOCSDIR}
@${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${DOCSDIR}
.for docfile in ${PORTDOC_BASE}
@${INSTALL_DATA} ${WRKSRC}/${docfile} ${DOCSDIR}
.endfor
.for docfile in ${PORTDOC_FILES}
@${INSTALL_DATA} ${WRKSRC}/doc/${docfile} ${DOCSDIR}
.endfor
@${MKDIR} ${EXAMPLESDIR}
.for example in ${PORT_EXAMPLES}
@${INSTALL_SCRIPT} ${WRKSRC}/build-${OPSYS}-${ARCH}/${example} ${EXAMPLESDIR}
.endfor
.endif
.if defined(WITH_SA_EXIM)
@${INSTALL_DATA} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.conf \
${PREFIX}/etc/exim/sa-exim.conf.default
@[ -f ${PREFIX}/etc/exim/sa-exim.conf ] || \
${CP} ${PREFIX}/etc/exim/sa-exim.conf.default \
${PREFIX}/etc/exim/sa-exim.conf
.endif
.if defined(WITH_SO_1024)
.if !exists(/var/spool/spamooborona)
@${MKDIR} -m 750 /var/spool/spamooborona
@${CHOWN} ${EXIM_USER}:${EXIM_GROUP} /var/spool/spamooborona
.endif
.endif
@${CAT} ${PKGMESSAGE}
@${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.else
post-install:
@${CAT} ${PKGMESSAGE}
.endif
.include <bsd.port.post.mk>