freebsd-ports/Mk/bsd.apache.mk
Pav Lucistnik ac049a67f3 - Fix leftover httpd.conf for AP_GEN_PLIST using ports. The problem is that
apxs does not remove module line from httpd.conf, it merely comments it out.
  Later, on Apache deinstall, the file differs from stock httpd.conf and is not
  deleted.

Tested by:	pointyhat exprun
2007-06-28 15:50:53 +00:00

419 lines
12 KiB
Makefile

#-*- mode: makefile; tab-width: 4; -*-
# ex:ts=4
#
# $FreeBSD$
#
# bsd.apache.mk - Apache related macros.
# Author: Clement Laforet <clement@FreeBSD.org>
#
# Please view me with 4 column tabs!
##########################################################################
#
# Variables definition
# USE_APACHE: Call this script. Values can be:
# <version>: 1.3/13/2.0/20/2.1/2.2/1.3+/2.0+/2.1+/2.2+
# common*: common13, common20, common21 and common22
#
#
#
.if defined(APACHE_COMPAT)
USE_APACHE=yes
.endif
# Print warnings
_ERROR_MSG= : Error from bsd.apache.mk.
APACHE_SUPPORTED_VERSION= 13 20 21 22
.if ${USE_APACHE:Mcommon*} != ""
AP_PORT_IS_SERVER= YES
.elif ${USE_APACHE:L} == apr
APR_DEPS= YES
.elif ${USE_APACHE:C/\.//:C/\+//:M[12][3210]} != ""
AP_PORT_IS_MODULE= YES
#### for backward compatibility
.elif ${USE_APACHE:L} == yes
. if defined(WITH_APACHE2)
APACHE_PORT?= www/apache20
. else
APACHE_PORT?= www/apache13
. endif
APXS?= ${LOCALBASE}/sbin/apxs
.if !defined(APACHE_COMPAT)
BUILD_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT}
RUN_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT}
.endif
#### End of backward compatibility
.else
IGNORE= ${_ERROR_MSG} Illegal use of USE_APACHE
.endif
.if defined(AP_PORT_IS_SERVER)
# For slave ports:
.if defined(SLAVE_DESIGNED_FOR) && ${PORTVERSION} != ${SLAVE_DESIGNED_FOR}
IGNORE= Sorry, ${SLAVENAME} and ${PORTNAME} versions are out of sync
.endif
.if defined(SLAVE_PORT_MODULES)
DEFAULT_MODULES_CATEGORIES+= SLAVE_PORT
ALL_MODULES_CATEGORIES+= SLAVE_PORT
.endif
# Module selection
.for category in ${DEFAULT_MODULES_CATEGORIES}
DEFAULT_MODULES+= ${${category}_MODULES}
WITH_${category}_MODULES= YES
.endfor
.for category in ${ALL_MODULES_CATEGORIES}
AVAILABLE_MODULES+= ${${category}_MODULES}
.endfor
# Setting "@comment " as default.
.for module in ${AVAILABLE_MODULES}
${module}_PLIST_SUB= "@comment "
.endfor
# Configure
# dirty hacks to make sure all modules are disabled before we select them
.if ${USE_APACHE} == common13
CONFIGURE_ARGS+= --disable-module="all"
.elif ${USE_APACHE} == common20
CONFIGURE_ARGS+= --disable-access --disable-auth \
--disable-charset-lite --disable-include \
--disable-log-config --disable-env --disable-setenvif \
--disable-mime --disable-status --disable-autoindex \
--disable-asis --disable-cgid --disable-cgi \
--disable-negotiation --disable-dir --disable-imap \
--disable-actions --disable-userdir --disable-alias
.elif ${USE_APACHE} == common21
CONFIGURE_ARGS+= --disable-authn-file --disable-authn-default \
--disable-authz-host --disable-authz-groupfile \
--disable-authz-user --disable-authz-default \
--disable-auth-basic --disable-charset-lite \
--disable-include --disable-log-config --disable-env \
--disable-setenvif --disable-mime --disable-status \
--disable-autoindex --disable-asis --disable-cgid \
--disable-cgi --disable-negotiation --disable-dir \
--disable-imagemap --disable-actions --disable-userdir \
--disable-alias --disable-filter \
--disable-proxy --disable-proxy-connect \
--disable-proxy-ftp --disable-proxy-http \
--disable-proxy-ajp --disable-proxy-balancer
.elif ${USE_APACHE} == common22
CONFIGURE_ARGS+= --disable-authn-file --disable-authn-default \
--disable-authz-host --disable-authz-groupfile \
--disable-authz-user --disable-authz-default \
--disable-auth-basic --disable-charset-lite \
--disable-include --disable-log-config --disable-env \
--disable-setenvif --disable-mime --disable-status \
--disable-autoindex --disable-asis --disable-cgid \
--disable-cgi --disable-negotiation --disable-dir \
--disable-imagemap --disable-actions --disable-userdir \
--disable-alias --disable-filter \
--disable-proxy --disable-proxy-connect \
--disable-proxy-ftp --disable-proxy-http \
--disable-proxy-ajp --disable-proxy-balancer
.endif
.if defined(WITH_MODULES)
_APACHE_MODULES+= ${WITH_MODULES}
.else
.for category in ${ALL_MODULES_CATEGORIES}
.if defined (WITHOUT_${category}_MODULES) || defined (WITH_CUSTOM_${category})
. if defined(WITH_${category}_MODULES})
. undef WITH_${category}_MODULES
. endif
. if defined (WITH_CUSTOM_${category})
_APACHE_MODULES+= ${WITH_CUSTOM_${category}}
. endif
.elif defined(WITH_${category}_MODULES)
_APACHE_MODULES+= ${${category}_MODULES}
.endif
.endfor
. if defined(WITH_EXTRA_MODULES)
_APACHE_MODULES+= ${WITH_EXTRA_MODULES}
. endif
.endif
.if !defined(WITH_STATIC_APACHE)
. if ${USE_APACHE:Mcommon2*} != ""
# FYI
#DYNAMIC_MODULES= so
CONFIGURE_ARGS+= --enable-so
. endif
.else
. if ${USE_APACHE:Mcommon2*} != ""
CONFIGURE_ARGS+= --disable-so
. endif
WITH_ALL_STATIC_MODULES= YES
.endif
.if defined(WITH_SUEXEC) || defined(WITH_SUEXEC_MODULES)
.if ${USE_APACHE} == common13
SUEXEC_CONFARGS= suexec
CONFIGURE_ARGS+= --enable-suexec
.elif ${USE_APACHE:Mcommon2*} != ""
_APACHE_MODULES+= ${SUEXEC_MODULES}
SUEXEC_CONFARGS= with-suexec
.endif
# From now we're defaulting to apache 2.*
SUEXEC_DOCROOT?= ${PREFIX}/www/data
SUEXEC_USERDIR?= public_html
SUEXEC_SAFEPATH?= ${PREFIX}/bin:${LOCALBASE}/bin:/usr/bin:/bin
SUEXEC_LOGFILE?= /var/log/httpd-suexec.log
SUEXEC_UIDMIN?= 1000
SUEXEC_GIDMIN?= 1000
SUEXEC_CALLER?= ${WWWOWN}
CONFIGURE_ARGS+= --${SUEXEC_CONFARGS}-caller=${SUEXEC_CALLER} \
--${SUEXEC_CONFARGS}-uidmin=${SUEXEC_UIDMIN} \
--${SUEXEC_CONFARGS}-gidmin=${SUEXEC_GIDMIN} \
--${SUEXEC_CONFARGS}-userdir="${SUEXEC_USERDIR}" \
--${SUEXEC_CONFARGS}-docroot="${SUEXEC_DOCROOT}" \
--${SUEXEC_CONFARGS}-safepath="${SUEXEC_SAFEPATH}" \
--${SUEXEC_CONFARGS}-logfile="${SUEXEC_LOGFILE}"
.if ${USE_APACHE:Mcommon2*} != ""
CONFIGURE_ARGS+= --${SUEXEC_CONFARGS}-bin="${PREFIX}/sbin/suexec"
.endif
. if defined(WITH_SUEXEC_UMASK)
CONFIGURE_ARGS+= --${SUEXEC_CONFARGS}-umask=${SUEXEC_UMASK}
. endif
.endif
.if !defined(WITHOUT_MODULES)
APACHE_MODULES= ${_APACHE_MODULES}
.else
APACHE_MODULES!= \
for module in ${_APACHE_MODULES}; do \
${ECHO_CMD} ${WITHOUT_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \
${ECHO_CMD} $${module}; \
done
.endif
.if defined(WITH_STATIC_MODULES)
. if ${USE_APACHE} == common13
STATIC_MODULE_CONFARG= --enable-module=$${module}
DSO_MODULE_CONFARG= --enable-module=$${module} --enable-shared=$${module}
. else
STATIC_MODULE_CONFARG= --enable-$${module}
DSO_MODULE_CONFARG= --enable-$${module}=shared
.endif
_CONFIGURE_ARGS!= \
for module in ${APACHE_MODULES} ; do \
${ECHO_CMD} ${WITH_STATIC_MODULES} | \
${GREP} -wq $${module} 2> /dev/null ; \
if [ "$${?}" = "0" ] ; then \
${ECHO_CMD} "${STATIC_MODULE_CONFARG}"; \
else \
${ECHO_CMD} "${DSO_MODULE_CONFARG}"; \
fi; done
CONFIGURE_ARGS+= ${_CONFIGURE_ARGS}
.elif defined(WITH_STATIC_APACHE) || defined(WITH_ALL_STATIC_MODULES)
WITH_STATIC_MODULES= ${APACHE_MODULES}
. if ${USE_APACHE} == common13
. for module in ${APACHE_MODULES}
CONFIGURE_ARGS+= --enable-module=${module}
. endfor
. else
CONFIGURE_ARGS+= --enable-modules="${APACHE_MODULES}"
. endif
.else
. if ${USE_APACHE} == common13
. for module in ${APACHE_MODULES}
CONFIGURE_ARGS+= --enable-module=${module} --enable-shared=${module}
. endfor
. else
CONFIGURE_ARGS+= --enable-mods-shared="${APACHE_MODULES}"
. endif
.endif
.if defined(WITH_STATIC_MODULES)
_SHARED_MODULES!= \
for module in ${APACHE_MODULES} ; do \
${ECHO_CMD} ${WITH_STATIC_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \
${ECHO_CMD} $${module}; \
done
SHARED_MODULES= ${_SHARED_MODULES}
.elif !defined(WITH_ALL_STATIC_MODULES)
SHARED_MODULES= ${APACHE_MODULES}
.endif
. for module in ${SHARED_MODULES}
${module}_PLIST_SUB= ""
. endfor
.for module in ${AVAILABLE_MODULES}
PLIST_SUB+= MOD_${module:U}=${${module}_PLIST_SUB}
.endfor
####End of PORT_IS_SERVER ####
.elif defined(APR_DEPS)
IGNORE= ${_ERROR_MSG} apr support is not yet implemented
.elif defined(AP_PORT_IS_MODULE)
AP_VERSION= ${USE_APACHE:C/\.//}
APXS?= ${LOCALBASE}/sbin/apxs
HTTPD?= ${LOCALBASE}/sbin/httpd
MODULENAME?= ${PORTNAME}
SHORTMODNAME?= ${MODULENAME:S/mod_//}
SRC_FILE?= ${MODULENAME}.c
OVERRIDABLE_VARS= SRC_FILE MODULENAME SHORTMODNAME WRKSRC \
PKGNAMESUFFIX
.if exists(${HTTPD})
AP_CUR_VERSION!= ${HTTPD} -V | ${SED} -ne 's/^Server version: Apache\/\([0-9]\)\.\([0-9]*\).*/\1\2/p'
. if ${AP_CUR_VERSION} > 13
APACHE_MPM!= ${APXS} -q MPM_NAME
. endif
.elif defined(APACHE_PORT)
AP_CUR_VERSION!= ${ECHO_CMD} ${APACHE_PORT} | ${SED} -ne 's,.*/apache\([0-9]*\).*,\1,p'
.endif
.if defined(AP_CUR_VERSION)
VERSION_CHECK!= eval `${ECHO_CMD} "[ ${AP_VERSION} -eq ${AP_CUR_VERSION} ]" | ${SED} -e 's/- -eq/ -ge/ ; s/+ -eq/ -le/' ` ; ${ECHO_CMD} $${?}
. if ${VERSION_CHECK} == 1
IGNORE= ${_ERROR_MSG} apache${AP_CUR_VERSION} is installed (or APACHE_PORT is defined) and port requires ${USE_APACHE}
. endif
APACHE_VERSION= ${AP_CUR_VERSION}
.else
AP_CUR_VERSION= none
. if !defined(APACHE_PORT)
#Fallback to smallest version...
APACHE_VERSION= ${AP_VERSION:C/\+//}
. endif
.endif
.if exists(${APXS})
APXS_PREFIX!= ${APXS} -q prefix 2> /dev/null || echo NULL
. if ${APXS_PREFIX} == NULL
IGNORE= : Your apache does not support DSO modules
. endif
. if defined(AP_GENPLIST) && ${APXS_PREFIX} != ${PREFIX}
IGNORE?= PREFIX must be equal to APXS_PREFIX.
. endif
.endif
.if ${APACHE_VERSION} == 20
AP_BUILDEXT= la
APACHEMODDIR= libexec/apache2
APACHEINCLUDEDIR=include/apache2
APACHEETCDIR= etc/apache2
APACHE_PORT= www/apache${APACHE_VERSION}
.elif ${APACHE_VERSION} >= 21
AP_BUILDEXT= la
APACHEMODDIR= libexec/apache${APACHE_VERSION}
APACHEINCLUDEDIR=include/apache${APACHE_VERSION}
APACHEETCDIR= etc/apache${APACHE_VERSION}
APACHE_PORT= www/apache${APACHE_VERSION}
.else
AP_BUILDEXT= so
APACHEMODDIR= libexec/apache
APACHEINCLUDEDIR=include/apache
APACHEETCDIR= etc/apache
APACHE_PORT?= www/apache13
.endif
PLIST_SUB+= APACHEMODDIR="${APACHEMODDIR}" \
APACHEINCLUDEDIR="${APACHEINCLUDEDIR}" \
APACHEETCDIR="${APACHEETCDIR}"
.for VAR in ${OVERRIDABLE_VARS}
. if defined(AP${APACHE_VERSION}_${VAR})
${VAR} =${AP${APACHE_VERSION}_${VAR}}
. endif
.endfor
BUILD_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT}
RUN_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT}
PLIST_SUB+= AP_NAME="${SHORTMODNAME}"
PLIST_SUB+= AP_MODULE="${MODULENAME}.so"
.if defined(AP_GENPLIST)
PLIST?= ${WRKDIR}/ap-plist
.endif
.if defined(AP_INC)
AP_EXTRAS+= -I ${AP_INC}
.endif
.if defined(AP_LIB)
AP_EXTRAS+= -L ${AP_LIB}
.endif
.endif
.if defined(AP_PORT_IS_SERVER)
.if !target(print-closest-mirrors)
print-closest-mirrors:
@${ECHO_MSG} -n "Fetching list of nearest mirror: " >&2
@MIRRORS=`${FETCH_CMD} -T 30 -qo - http://www.apache.org/dyn/closer.cgi/httpd/ 2> /dev/null\
| ${GREP} /httpd/ | ${SED} 's/.*href="\(.*\)"><str.*/\1/g' | \
${HEAD} -7 | ${TAIL} -6` ; \
${ECHO_MSG} done >&2; if [ "x$$MIRRORS" != "x" ]; then \
${ECHO_MSG} -n "MASTER_SITE_APACHE_HTTPD?= ";\
${ECHO_MSG} $$MIRRORS; else \
${ECHO_MSG} "No mirrors found!">&2 ; fi
.endif
.if !target(show-categories)
show-categories:
.for category in ${ALL_MODULES_CATEGORIES}
@${ECHO_MSG} "${category} contains these modules:"
@${ECHO_MSG} " ${${category}_MODULES}"
.endfor
.endif
.if !target(show-modules)
show-modules:
@for module in ${AVAILABLE_MODULES} ; do \
${ECHO_MSG} -n "$${module}: "; \
if ${ECHO_CMD} ${APACHE_MODULES} | ${GREP} -wq $${module} 2> /dev/null ; \
then \
${ECHO_CMD} -n "enabled "; \
if ${ECHO_CMD} ${WITH_STATIC_MODULES} | ${GREP} -wq $${module} 2> /dev/null ; then \
${ECHO_CMD} "(static)" ; \
else \
${ECHO_CMD} "(shared)" ;\
fi;\
else \
${ECHO_CMD} disabled ;\
fi;\
done
.endif
.elif defined(AP_PORT_IS_MODULE)
.if defined(AP_FAST_BUILD)
.if !target(ap-gen-plist)
ap-gen-plist:
.if defined(AP_GENPLIST)
. if !exists(${PLIST})
@${ECHO} "===> Generating apache plist"
@${ECHO} "@unexec ${SED} -i '' '/LoadModule %%AP_NAME%%_module/d' %D/%%APACHEETCDIR%%/httpd.conf" >> ${PLIST}
@${ECHO} "%%APACHEMODDIR%%/%%AP_MODULE%%" >> ${PLIST}
@${ECHO} "@exec %D/sbin/apxs -e -A -n %%AP_NAME%% %D/%F" >> ${PLIST}
@${ECHO} "@unexec echo \"Don't forget to remove all ${MODULENAME}-related directives in your httpd.conf\"">> ${PLIST}
. endif
.else
@${DO_NADA}
.endif
.endif
.if !target(do-build)
do-build: ap-gen-plist
@cd ${WRKSRC} && ${APXS} -c ${AP_EXTRAS} -o ${MODULENAME}.${AP_BUILDEXT} ${SRC_FILE}
.endif
.if !target(do-install)
do-install:
@${APXS} -i -A -n ${SHORTMODNAME} ${WRKSRC}/${MODULENAME}.${AP_BUILDEXT}
.endif
.endif
.endif