ports/www/apache24/Makefile
Stefan Eßer bcaf25a8c8 Fix CONFLICTS entries of multiple ports
There have been lots of missing CONFLICTS_INSTALL entries, either
because conflicting ports were added without updating existing ports,
due to name changes of generated packages, due to mis-understanding
the format and semantics of the conflicts entries, or just due to
typoes in package names.

This patch is the result of a comparison of all files contained in
the official packages with each other. This comparison was based on
packages built with default options and may therefore have missed
further conflicts with optionally installed files.

Where possible, version numbers in conflicts entries have been
generalized, some times taking advantage of the fact that a port
cannot conflict with itself (due to logic in bsd.port.mk that
supresses the pattern match result in that case).

A few ports that set the conflicts variables depending on complex
conditions (e.g. port options), have been left unmodified, despite
probably containing outdated package names.

These changes should only affect the installation of locally built
ports, not the package building with poudriere. They should give an
early indication of the install conflict in cases where currently
the pkg command aborts an installation when it detects that an
existing file would be overwritten,

Approved by:	portmgr (implicit)
2022-01-10 16:15:39 +01:00

240 lines
7.8 KiB
Makefile

PORTNAME= apache24
PORTVERSION= 2.4.52
CATEGORIES= www
MASTER_SITES= APACHE_HTTPD
DISTNAME= httpd-${PORTVERSION}
DIST_SUBDIR= apache24
MAINTAINER= apache@FreeBSD.org
COMMENT= Version 2.4.x of Apache web server
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libexpat.so:textproc/expat2 \
libapr-1.so:devel/apr1 \
libpcre.so:devel/pcre
USES= apache:server,2.4 autoreconf compiler:c11 cpe iconv libtool perl5 tar:bzip2
USE_PERL5= run
USE_RC_SUBR= apache24 htcacheclean
GNU_CONFIGURE= yes
CONFLICTS_INSTALL= py*-circuits # bin/htpasswd
CPE_VENDOR= apache
CPE_PRODUCT= http_server
PORTDOCS= *
SUB_FILES= pkg-install pkg-deinstall
# Fallback MPM after switching from static to modular MPM
SUB_LIST+= MPMF="000_mpm_prefork_fallback.conf"
USERS= www
GROUPS= www
.include "${.CURDIR}/Makefile.options"
.include "${.CURDIR}/Makefile.options.desc"
OPTIONS_SUB= yes
# IMPLIES
AUTHN_DBD_IMPLIES= DBD
HEARTBEAT_IMPLIES= WATCHDOG STATUS
HEARTMONITOR_IMPLIES= WATCHDOG STATUS
LBMETHOD_HEARTBEAT_IMPLIES= WATCHDOG STATUS HEARTMONITOR
PROXY_HCHECK_IMPLIES= WATCHDOG
PROXY_HTTP2_IMPLIES= PROXY_BALANCER
.for module in ${PROXY_ENABLED_MODULES:NPROXY} ${PROXY_DISABLED_MODULES}
${module}_IMPLIES= PROXY
.endfor
.for module in ${SESSION_ENABLED_MODULES:NSESSION} ${SESSION_DISABLED_MODULES}
${module}_IMPLIES= SESSION
.endfor
# Multi-Processing Modules options handling
MPM_PREFORK_CONFIGURE_ON= --with-mpm=prefork
MPM_WORKER_CONFIGURE_ON= --with-mpm=worker
MPM_EVENT_CONFIGURE_ON= --with-mpm=event
MPM_SHARED_CONFIGURE_ON= --enable-mpms-shared=all
MPM_SHARED_SUB_LIST= MPM_FALLBACK_CHECK=""
MPM_SHARED_SUB_LIST_OFF= MPM_FALLBACK_CHECK="\#"
AUTHNZ_LDAP_CONFIGURE_ON= --enable-authnz-ldap
BROTLI_CONFIGURE_WITH= brotli=${LOCALBASE}
BROTLI_LIB_DEPENDS= libbrotlicommon.so:archivers/brotli
HTTP2_CONFIGURE_ON= --with-nghttp2=${LOCALBASE} \
--with-ssl=${OPENSSLBASE}
HTTP2_LIB_DEPENDS= libnghttp2.so:www/libnghttp2
HTTP2_USES= ssl
IPV4_MAPPED_CONFIGURE_ENABLE= v4-mapped
LDAP_CONFIGURE_ON= --enable-ldap=shared
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit
LUA_CONFIGURE_ENV= LUA_CFLAGS="-I${LUA_INCDIR}" \
LUA_LIBS="-L${LUA_LIBDIR} -llua-${LUA_VER}"
LUA_CONFIGURE_WITH= lua=${LOCALBASE}
LUA_USES= lua
MD_CONFIGURE_ON= --with-curl=${LOCALBASE} \
--with-jansson=${LOCALBASE} \
--with-ssl=${OPENSSLBASE}
MD_LIB_DEPENDS= libcurl.so:ftp/curl \
libjansson.so:devel/jansson
MD_USES= ssl
PROXY_HTML_USE= GNOME=libxml2
PROXY_HTML_USES= gnome
PROXY_HTTP2_CONFIGURE_ON= --with-nghttp2=${LOCALBASE}
PROXY_HTTP2_LIB_DEPENDS= libnghttp2.so:www/libnghttp2
SOCACHE_DC_CONFIGURE_ON= --with-distcache=${LOCALBASE}
SOCACHE_DC_LIB_DEPENDS= libdistcache.so:security/distcache
# Note: OpenSSL version (base/ports) depends how devel/apr1 was built
# apu-1-config --(includes|ldflags) and apr_rules.mk
SSL_CONFIGURE_ON= --with-ssl=${OPENSSLBASE}
SSL_USES= ssl
SUEXEC_SYSLOG_CONFIGURE_ON= --without-suexec-logfile --with-suexec-syslog
XML2ENC_USE= GNOME=libxml2
XML2ENC_USES= gnome
ETC_SUBDIRS= Includes envvars.d extra modules.d
APR_CONFIG?= ${LOCALBASE}/bin/apr-1-config
APU_CONFIG?= ${LOCALBASE}/bin/apu-1-config
APU_LDAP?= ${LOCALBASE}/lib/apr-util-1/apr_ldap.so
APU_CRYPTO_OPENSSL?= ${LOCALBASE}/lib/apr-util-1/apr_crypto_openssl.so
APU_CRYPTO_NSS?= ${LOCALBASE}/lib/apr-util-1/apr_crypto_nss.so
.include <bsd.port.pre.mk>
PREFIX_RELDEST= ${PREFIX:S,^${DESTDIR},,}
CONFIGURE_ARGS+=--prefix=${PREFIX_RELDEST} \
--enable-layout=FreeBSD \
--enable-http \
--with-pcre=${LOCALBASE} \
--with-apr=${APR_CONFIG} \
--with-apr-util=${APU_CONFIG}
CONFIGURE_ENV+= LOCALBASE="${LOCALBASE}" \
CONFIG_SHELL="${SH}"
MAKE_ENV+= EXPR_COMPAT=yes \
INSTALL_MAN="${INSTALL_MAN}" \
DATADIR=${DATADIR}
.for module in ${ALL_MODULES}
.if ${PORT_OPTIONS:M${module}}
CONFIGURE_ARGS+= --enable-${module:S/_/-/g:tl}=shared
.else
CONFIGURE_ARGS+= --disable-${module:S/_/-/g:tl}
.endif
.endfor
#=====================================================
# here we do only OPTIONS fixups
# Check for APR-util module exists
.if exists(${APU_CONFIG})
. if (${PORT_OPTIONS:MLDAP} || ${PORT_OPTIONS:MAUTHNZ_LDAP}) && !exists(${APU_LDAP})
IGNORE= LDAP and AUTHNZ_LDAP requires APR-util to have LDAP support built in.\
Please rebuild APR with LDAP support
. endif
. if ${PORT_OPTIONS:MSESSION_CRYPTO} && \
!(exists(${APU_CRYPTO_OPENSSL}) || exists(${APU_CRYPTO_NSS}))
IGNORE= SESSION_CRYPTO requires APR-util to have crypto openssl support built in.\
Please rebuild APR with crypto openssl support
. endif
.endif # exists APU_CONFIG
.if ( ${PORT_OPTIONS:MAUTH_BASIC} || ${PORT_OPTIONS:MAUTH_DIGEST} ) && \
empty(PORT_OPTIONS:MAUTHN*)
IGNORE= AUTH_BASIC and AUTH_DIGEST need at least one AUTHN provider
.endif
.if ${PORT_OPTIONS:MAUTH_BASIC} && empty(PORT_OPTIONS:MAUTHZ*)
IGNORE= AUTH_BASIC needs at least one AUTHZ provider
.endif
# Non options-NG option handling
.if ${PORT_OPTIONS:MXML2ENC} || ${PORT_OPTIONS:MPROXY_HTML}
CONFIGURE_ARGS+= --with-libxml2=${LOCALBASE}/include/libxml2
.else
CONFIGURE_ARGS+= --without-libxml2
.endif
# WITH_STATIC_SUPPORT, WITH_DEBUG, WITH_EXCEPTION_HOOK
# Only to be used for special builds
.if defined(WITH_STATIC_SUPPORT)
CONFIGURE_ARGS+= --enable-static-support
.endif
.if defined(WITH_DEBUG)
# debug overrides CFLAGS
DEBUG_FLAGS?= -O0 -g -ggdb3
CFLAGS= ${DEBUG_FLAGS}
CONFIGURE_ARGS+= --enable-maintainer-mode
WITH_EXCEPTION_HOOK= yes
.else
CONFIGURE_ENV+= INSTALL_PROG_FLAGS="-s"
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-server_buildmark.c
.endif
.if defined(WITH_EXCEPTION_HOOK)
CONFIGURE_ARGS+= --enable-exception-hook
.endif
pre-extract-SUEXEC-on:
@${ECHO_CMD} ""
@${ECHO_CMD} "suexec builds with user '${USERS}' and docroot '${PREFIX}/www' by default,"
@${ECHO_CMD} "use SUEXEC_DOCROOT and SUEXEC_USERDIR in /etc/make.conf to adjust."
@${ECHO_CMD} ""
post-extract:
# make sure the configure script contains our patches, preserve the original script for comparsion
-${MV} -v ${WRKSRC}/configure ${WRKSRC}/configure.upstream
# make stage-qa script happy, it complains on empty dirs even 'PORTDOCS=*' is set
# use RMDIR in case upstream ever place some files into this directories
.for d in xsl/util xsl lang
-${RMDIR} ${WRKSRC}/docs/manual/style/${d}
.endfor
post-patch:
${REINPLACE_CMD} -e 's," PLATFORM ",FreeBSD,' ${WRKSRC}/server/core.c
${REINPLACE_CMD} -e 's|logs/error_log|/var/log/httpd-error.log|' \
${WRKSRC}/include/httpd.h
${REINPLACE_CMD} -e 's|perlbin=.*|perlbin=${PERL}|' \
${WRKSRC}/configure.in
${RM} ${WRKSRC}/docs/docroot/*.bak
${INSTALL_DATA} ${WRKSRC}/NOTICE ${WRKSRC}/docs/manual
pre-configure::
# silence autotools
-@${MV} -v ${WRKSRC}/configure.in ${WRKSRC}/configure.ac 2>/dev/null
post-configure:
@FTPUSERS=`${EGREP} -v '^#' /etc/ftpusers| ${TR} -s "\n" " "` ;\
${REINPLACE_CMD} -e "s,%%FTPUSERS%%,$${FTPUSERS}," \
${WRKSRC}/docs/conf/extra/httpd-userdir.conf
${REINPLACE_CMD} -e "/EXTRA_LDFLAGS/s|-L/usr/lib||g" ${WRKSRC}/build/config_vars.mk
${REINPLACE_CMD} -e "s,%%WWWOWN%%,${WWWOWN}," -e "s,%%WWWGRP%%,${WWWGRP}," \
${WRKSRC}/docs/conf/httpd.conf
${REINPLACE_CMD} -e "s,%%PREFIX%%,${PREFIX}," ${WRKSRC}/support/envvars-std
post-install:
@${MKDIR} ${ETC_SUBDIRS:S|^|${STAGEDIR}${ETCDIR}/|}
${INSTALL_DATA} ${FILESDIR}/no-accf.conf ${STAGEDIR}${ETCDIR}/Includes/
${INSTALL_DATA} ${FILESDIR}/README_modules.d ${STAGEDIR}${ETCDIR}/modules.d/
-${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/apache24/mod_*.so
# Remove files left behind by strip
${RM} ${STAGEDIR}${DATADIR}/build/ecp.???????? 2>/dev/null
post-install-LOG_FORENSIC-on:
${INSTALL_SCRIPT} ${WRKSRC}/support/check_forensic ${STAGEDIR}${PREFIX}/sbin
# maintainer only, check for new modules
modlist: extract
@${AWK} '/: checking whether to enable mod_/ \
{printf "%%%%%s%%%%libexec/apache24/%s.so\n", \
toupper($$8), $$8}' ${WRKSRC}/configure.upstream \
| ${TR} -d '"' \
| ${SORT} -u \
| ${GREP} -E -v '^%%MOD_(HTTP|ISAPI|LOG_CONFIG|PRIVILEGES|SO|UNIXD)%%'
.include <bsd.port.post.mk>