# $NetBSD: Makefile,v 1.15 2007/07/04 20:55:03 jlam Exp $ .include "Makefile.common" PKGNAME= apache-${APACHE_VERSION} PKGREVISION= 6 CATEGORIES= www HOMEPAGE= http://httpd.apache.org/ COMMENT= Apache HTTP (Web) server, version 2 CONFLICTS= apache-{,*ssl}-[0-9]* apache6-[0-9]* BUILD_DEFS+= USE_INET6 BUILD_DEFS+= VARBASE USE_TOOLS+= perl perl:run pkg-config USE_LIBTOOL= yes GNU_CONFIGURE= yes CONFIGURE_ARGS+= --enable-layout=NetBSD CONFIGURE_ARGS+= --with-port=80 CONFIGURE_ARGS+= --enable-so CONFIGURE_ENV+= perlbin=${PERL5:Q} # Apache Portable Runtime library configure options CONFIGURE_ARGS+= --with-apr=${BUILDLINK_PREFIX.apr} CONFIGURE_ARGS+= --with-apr-util=${BUILDLINK_PREFIX.apr-util} CHECK_PORTABILITY_SKIP+= srclib/pcre/* \ srclib/apr-util/* \ srclib/apr/* # the following must be set before bsd.prefs.mk in order to make += work # in mk.conf; however, it isn't expanded until referenced, so we can # define DFLT_APACHE_MODULES later # APACHE_MODULES?= ${DFLT_APACHE_MODULES} .include "../../mk/bsd.prefs.mk" .include "../../devel/apr/buildlink3.mk" .include "../../devel/apr-util/buildlink3.mk" .include "../../textproc/expat/buildlink3.mk" .include "../../mk/dlopen.buildlink3.mk" # Set the "Multi-Processing Model" used by Apache to handle requests. # Valid values are: # event multi-threaded based in worker, designed # to allow more requests to be served # simultaneously by passing off some processing # work to supporting threads. # BEWARE: does not work with SSL or input filters. # prefork non-threaded, pre-forking web server # worker hybrid multi-threaded multi-process web server # APACHE_MPM?= prefork CONFIGURE_ARGS+= --with-mpm=${APACHE_MPM:Q} BUILD_DEFS+= APACHE_MPM .if !empty(APACHE_MPM:Mevent) || !empty(APACHE_MPM:Mworker) PLIST_SRC+= ${PKGDIR}/PLIST.worker .endif CONFIGURE_ARGS+= --disable-access CONFIGURE_ARGS+= --disable-auth CONFIGURE_ARGS+= --disable-include CONFIGURE_ARGS+= --disable-log-config CONFIGURE_ARGS+= --disable-env CONFIGURE_ARGS+= --disable-mime CONFIGURE_ARGS+= --disable-setenvif CONFIGURE_ARGS+= --disable-status CONFIGURE_ARGS+= --disable-autoindex CONFIGURE_ARGS+= --disable-asis CONFIGURE_ARGS+= --disable-cgi CONFIGURE_ARGS+= --disable-negotiation CONFIGURE_ARGS+= --disable-dir CONFIGURE_ARGS+= --disable-imap CONFIGURE_ARGS+= --disable-actions CONFIGURE_ARGS+= --disable-userdir CONFIGURE_ARGS+= --disable-alias DFLT_APACHE_MODULES= all DFLT_APACHE_MODULES+= proxy proxy_connect proxy_ftp proxy_http DFLT_APACHE_MODULES+= ssl deflate access auth authn_alias DFLT_APACHE_MODULES+= include log_config env mime setenvif DFLT_APACHE_MODULES+= status autoindex asis cgi negotiation dir imap DFLT_APACHE_MODULES+= actions userdir alias isapi file_cache DFLT_APACHE_MODULES+= cache disk_cache mem_cache bucketeer echo DFLT_APACHE_MODULES+= example case_filter case_filter_in DFLT_APACHE_MODULES+= charset_lite PLIST_SRC+= ${PKGDIR}/PLIST # LDAP support .if !empty(PKG_BUILD_OPTIONS.apr-util:Mldap) DFLT_APACHE_MODULES+= ldap authnz_ldap .endif # APACHE_MODULES are the modules that are linked statically into the # apache httpd executable. # CONFIGURE_ARGS+= --enable-modules=${APACHE_MODULES:Q} BUILD_DEFS+= APACHE_MODULES APACHE_USER?= www APACHE_GROUP?= www PKG_GROUPS= ${APACHE_GROUP} PKG_USERS= ${APACHE_USER}:${APACHE_GROUP} PKG_GROUPS_VARS+= APACHE_GROUP PKG_USERS_VARS+= APACHE_USER PKG_SYSCONFVAR= apache PKG_SYSCONFSUBDIR?= httpd EGDIR= ${PREFIX}/share/examples/httpd SBINDIR= ${PREFIX}/sbin CONF_FILES+= ${EGDIR}/httpd.conf ${PKG_SYSCONFDIR}/httpd.conf .for f in autoindex dav default info languages manual mpm \ multilang-errordoc ssl userdir vhosts CONF_FILES+= ${EGDIR}/extra/httpd-${f}.conf \ ${PKG_SYSCONFDIR}/httpd-${f}.conf .endfor CONF_FILES+= ${EGDIR}/magic ${PKG_SYSCONFDIR}/magic CONF_FILES+= ${EGDIR}/mime.types ${PKG_SYSCONFDIR}/mime.types RCD_SCRIPTS= apache REQD_DIRS= ${PREFIX}/share/httpd REQD_DIRS+= ${PREFIX}/share/httpd/htdocs OWN_DIRS= ${VARBASE}/log/httpd OWN_DIRS+= ${VARBASE}/db/httpd OWN_DIRS_PERMS+= ${VARBASE}/db/httpd/proxy ${APACHE_USER} ${APACHE_GROUP} 0755 FIX_PERMS= apachectl apxs dbmmanage envvars-std mkcert FIX_MAN_PERMS= man1/htdbm.1 man1/htpasswd.1 man1/htdigest.1 FIX_MAN_PERMS+= man1/dbmmanage.1 man8/httpd.8 man8/suexec.8 FIX_MAN_PERMS+= man8/rotatelogs.8 man8/logresolve.8 man8/apxs.8 FIX_MAN_PERMS+= man8/apachectl.8 man8/ab.8 # Fix paths in the apache manpages. SUBST_CLASSES+= man SUBST_STAGE.man= post-patch SUBST_FILES.man= docs/man/*.1 docs/man/*.8 SUBST_SED.man= -e 's,/usr/local/etc/apache,${PKG_SYSCONFDIR},' SUBST_SED.man+= -e 's,/path/to/apache/etc,${PKG_SYSCONFDIR},' SUBST_SED.man+= -e 's,/usr/local/apache2,${PREFIX}/share/httpd/htdocs,' SUBST_SED.man+= -e 's,/usr/web,${PREFIX}/share/httpd/htdocs,' SUBST_CLASSES+= paths SUBST_STAGE.paths= pre-configure SUBST_FILES.paths= config.layout Makefile.in support/apxs.in SUBST_SED.paths= -e "s|@PREFIX@|${PREFIX}|g" SUBST_SED.paths+= -e "s|@VARBASE@|${VARBASE}|g" SUBST_SED.paths+= -e "s|@SYSCONFDIR@|${PKG_SYSCONFDIR}|g" SUBST_SED.paths+= -e "s|@PAX@|${PAX}|g" SUBST_SED.paths+= -e "s|@LOCALBASE@|${LOCALBASE}|g" SUBST_MESSAGE.paths= Fixing paths. SUBST_CLASSES+= apr-lt SUBST_STAGE.apr-lt= post-configure SUBST_FILES.apr-lt= build/config_vars.mk SUBST_SED.apr-lt= -e 's|^\(LIBTOOL =\) [^ ]*|\1 $$(SHELL) $$(top_builddir)/build/libtool|g' SUBST_MESSAGE.apr-lt= Fixing libtool references. SUBST_CLASSES+= confs SUBST_STAGE.confs= post-configure SUBST_MESSAGE.confs= Fixing configuration files. SUBST_FILES.confs= docs/conf/httpd.conf SUBST_FILES.confs+= docs/conf/extra/httpd-ssl.conf SUBST_SED.confs= -e "s|${EGDIR}|${PKG_SYSCONFDIR}|g" SUBST_SED.confs+= -e "s|${PREFIX}/htdocs|${PREFIX}/share/httpd/htdocs|g" SUBST_SED.confs+= -e "s|${PREFIX}/conf|${PKG_SYSCONFDIR}|g" SUBST_SED.confs+= -e "s|logs/|${VARBASE}/log/httpd/|g" SUBST_SED.confs+= -e 's|/var/log/httpd/foo\.log|logs/foo.log/|g' SUBST_SED.confs+= -e 's|^\(User[ ]\).*|\1${APACHE_USER}|g' SUBST_SED.confs+= -e 's|^\(Group[ ]\).*|\1${APACHE_GROUP}|g' # abs_srcdir in config_vars.mk is used during install so needs to reference # the work dir path, and by other packages such as ap2-fastcgi after install, # so we fix after install to reference the installed path SUBST_CLASSES+= abs_srcdir SUBST_STAGE.abs_srcdir= post-install SUBST_FILES.abs_srcdir= ${PREFIX}/share/httpd/build/config_vars.mk SUBST_SED.abs_srcdir= -e 's|^\(abs_srcdir =\) .*|\1 ${PREFIX}/share/httpd|' SUBST_MESSAGE.abs_srcdir= Fixing abs_srcdir REPLACE_PERL= docs/cgi-examples/printenv .include "options.mk" # Add dependencies for the modules that will be built. For each module # ap_mod listed in ${APACHE_MODULES}, _AP_DEPENDS.ap_mod is a whitespace # separated list of dependencies or buildlink3.mk files needed to build # ap_mod, and _AP_CFG_ARGS.ap_mod is a whitespace separated list of # configure script options for ap_mod. # AP_DEPENDS.ssl= ../../security/openssl/buildlink3.mk AP_DEPENDS.deflate= ../../devel/zlib/buildlink3.mk AP_CFG_ARGS.ssl= --with-ssl=${BUILDLINK_PREFIX.openssl} AP_CFG_ARGS.deflate= --with-z=${BUILDLINK_PREFIX.zlib} .for ap_mod in ${APACHE_MODULES} . if defined(AP_DEPENDS.${ap_mod}) && !empty(AP_DEPENDS.${ap_mod}) . for ap_depend in ${AP_DEPENDS.${ap_mod}} . if exists(${ap_depend}) . include "${ap_depend}" . else DEPENDS+= ${ap_depend} . endif . endfor . endif . if defined(AP_CFG_ARGS.${ap_mod}) && !empty(AP_CFG_ARGS.${ap_mod}) CONFIGURE_ARGS+= ${AP_CFG_ARGS.${ap_mod}} . endif .endfor post-extract: ${TOUCH} ${WRKSRC}/build/libtool ${ECHO} "" >> ${WRKSRC}/docs/conf/extra/httpd-languages.conf.in post-build: ${SED} "s#@PKG_SYSCONFDIR@#${PKG_SYSCONFDIR}#g" \ < ${FILESDIR}/mkcert.sh > ${WRKDIR}/mkcert pre-install: cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ ${MAKE_PROGRAM} install-conf sysconfdir="${EGDIR}" post-install: ${LN} -sf ${LOCALBASE}/libexec/apr/libtool ${PREFIX}/share/httpd/build cd ${EGDIR} && \ for file in \ httpd.conf \ extra/httpd-ssl.conf; \ do \ ${AWK} ' \ /^Listen[ ]*80/ { \ print; \ printf "%s", "Listen 0.0.0.0:80\n"; \ next; \ } \ /^Listen[ ]*443/ { \ print; \ printf "%s", "Listen 0.0.0.0:443\n"; \ next; \ } \ { print; } \ ' < "$${file}" >> $${file}.new; \ ${MV} -f $${file}.new $${file}; \ done ${LN} -sf ${SBINDIR}/envvars-std ${SBINDIR}/envvars ${INSTALL_SCRIPT} ${WRKDIR}/mkcert ${PREFIX}/sbin for file in ${FIX_PERMS}; do \ ${CHOWN} ${BINOWN}:${BINGRP} ${PREFIX}/sbin/$$file && \ ${CHMOD} ${BINMODE} ${PREFIX}/sbin/$$file; \ done ${CHOWN} -R ${BINOWN}:${BINGRP} ${PREFIX}/share/httpd ${CHOWN} -R ${BINOWN}:${BINGRP} ${PREFIX}/include/httpd ${CHOWN} -R ${BINOWN}:${BINGRP} ${PREFIX}/lib/httpd ${CHOWN} ${BINOWN}:${BINGRP} ${PREFIX}/libexec/cgi-bin/test-cgi ${CHOWN} ${BINOWN}:${BINGRP} ${PREFIX}/libexec/cgi-bin/printenv for file in ${FIX_MAN_PERMS}; do \ ${CHOWN} ${MANOWN}:${MANGRP} ${PREFIX}/${PKGMANDIR}/$$file; \ done .include "../../mk/bsd.pkg.mk"