Fixup fromcvs/togit conversion
[pkgsrcv2.git] / www / apache2 / Makefile
1 # $NetBSD: Makefile,v 1.135 2011/09/14 17:51:51 hans Exp $
2
3 PKG_DESTDIR_SUPPORT=    user-destdir
4
5 .include "Makefile.common"
6
7 PKGNAME=        apache-${APACHE_VERSION}
8 PKGREVISION=    1
9 CATEGORIES=     www
10
11 HOMEPAGE=       http://httpd.apache.org/
12 COMMENT=        Apache HTTP (Web) server, version 2
13
14 CONFLICTS=      apache-*ssl-[0-9]* apache6-[0-9]*
15
16 CVE_2011_3192=  CVE-2011-3192-${APACHE_VERSION}-byterange-fixes.patch
17 PATCHFILES+=    ${CVE_2011_3192}
18 SITES.${CVE_2011_3192}= ${MASTER_SITE_APACHE:=httpd/patches/apply_to_${APACHE_VERSION}/}
19
20 BUILD_DEFS+=    IPV6_READY
21 BUILD_DEFS+=    VARBASE
22
23 USE_TOOLS+=             pax perl perl:run pkg-config
24 USE_LIBTOOL=            yes
25 GNU_CONFIGURE=          yes
26 CONFIGURE_ARGS+=        --enable-layout=NetBSD
27 CONFIGURE_ARGS+=        --with-port=80
28 CONFIGURE_ARGS+=        --enable-so
29 CONFIGURE_ENV+=         perlbin=${PERL5:Q}
30
31 # Apache Portable Runtime library configure options
32 CONFIGURE_ARGS+=        --with-apr=${BUILDLINK_PREFIX.apr}
33 CONFIGURE_ARGS+=        --with-apr-util=${BUILDLINK_PREFIX.apr}
34
35 .include "../../devel/apr0/buildlink3.mk"
36 BUILDLINK_API_DEPENDS.apr+=     apr>=0.9.12.2.0.58
37
38 # the following must be set before bsd.prefs.mk in order to make += work
39 # in mk.conf; however, it isn't expanded until referenced, so we can
40 # define DFLT_APACHE_MODULES later
41 #
42 APACHE_MODULES?=        ${DFLT_APACHE_MODULES}
43
44 .include "../../mk/bsd.prefs.mk"
45 .include "../../textproc/expat/buildlink3.mk"
46 .include "../../mk/dlopen.buildlink3.mk"
47
48 # Set the "Multi-Processing Model" used by Apache to handle requests.
49 # Valid values are:
50 #       prefork         non-threaded, pre-forking web server
51 #       worker          hybrid multi-threaded multi-process web server
52 #
53 APACHE_MPM?=            prefork
54 CONFIGURE_ARGS+=        --with-mpm=${APACHE_MPM:Q}
55 BUILD_DEFS+=            APACHE_MPM
56 PLIST_VARS+=            mpm-prefork mpm-worker
57 PLIST.${APACHE_MPM}=    yes
58
59 CONFIGURE_ARGS+=        --disable-access
60 CONFIGURE_ARGS+=        --disable-auth
61 CONFIGURE_ARGS+=        --disable-include
62 CONFIGURE_ARGS+=        --disable-log-config
63 CONFIGURE_ARGS+=        --disable-env
64 CONFIGURE_ARGS+=        --disable-mime
65 CONFIGURE_ARGS+=        --disable-setenvif
66 CONFIGURE_ARGS+=        --disable-status
67 CONFIGURE_ARGS+=        --disable-autoindex
68 CONFIGURE_ARGS+=        --disable-asis
69 CONFIGURE_ARGS+=        --disable-cgi
70 CONFIGURE_ARGS+=        --disable-negotiation
71 CONFIGURE_ARGS+=        --disable-dir
72 CONFIGURE_ARGS+=        --disable-imap
73 CONFIGURE_ARGS+=        --disable-actions
74 CONFIGURE_ARGS+=        --disable-userdir
75 CONFIGURE_ARGS+=        --disable-alias
76
77 DFLT_APACHE_MODULES=    all
78 DFLT_APACHE_MODULES+=   proxy proxy_connect proxy_ftp proxy_http
79 DFLT_APACHE_MODULES+=   ssl deflate
80 DFLT_APACHE_MODULES+=   access auth include log_config env mime setenvif
81 DFLT_APACHE_MODULES+=   status autoindex asis cgi negotiation dir imap
82 DFLT_APACHE_MODULES+=   actions userdir alias
83
84 # LDAP support
85 .if !empty(PKG_BUILD_OPTIONS.apr:Mldap)
86 DFLT_APACHE_MODULES+=   ldap auth_ldap
87 .endif
88
89 # APACHE_MODULES are the modules that are linked statically into the
90 # apache httpd executable.
91 #
92 CONFIGURE_ARGS+=        --enable-modules=${APACHE_MODULES:Q}
93 BUILD_DEFS+=            APACHE_MODULES
94
95 APACHE_USER?=           www
96 APACHE_GROUP?=          www
97 PKG_GROUPS=             ${APACHE_GROUP}
98 PKG_USERS=              ${APACHE_USER}:${APACHE_GROUP}
99 PKG_GROUPS_VARS+=       APACHE_GROUP
100 PKG_USERS_VARS+=        APACHE_USER
101
102 PKG_SYSCONFVAR=         apache
103 PKG_SYSCONFSUBDIR?=     httpd
104 EGDIR=                  ${PREFIX}/share/examples/httpd
105 SBINDIR=                ${PREFIX}/sbin
106 CONF_FILES=             ${EGDIR}/httpd-std.conf ${PKG_SYSCONFDIR}/httpd.conf
107 CONF_FILES+=            ${EGDIR}/ssl-std.conf ${PKG_SYSCONFDIR}/ssl.conf
108 CONF_FILES+=            ${SBINDIR}/envvars-std ${SBINDIR}/envvars
109 CONF_FILES+=            ${EGDIR}/magic ${PKG_SYSCONFDIR}/magic
110 CONF_FILES+=            ${EGDIR}/mime.types ${PKG_SYSCONFDIR}/mime.types
111 RCD_SCRIPTS=            apache
112
113 REQD_DIRS=              ${PREFIX}/share/httpd
114 REQD_DIRS+=             ${PREFIX}/share/httpd/htdocs
115 OWN_DIRS=       ${VARBASE}/log/httpd
116 OWN_DIRS+=              ${VARBASE}/db/httpd
117 OWN_DIRS_PERMS+=        ${VARBASE}/db/httpd/proxy ${APACHE_USER} ${APACHE_GROUP} 0755
118 FIX_PERMS=              apachectl apxs dbmmanage envvars-std mkcert
119 FIX_MAN_PERMS=          man1/htdbm.1 man1/htpasswd.1 man1/htdigest.1
120 FIX_MAN_PERMS+=         man1/dbmmanage.1 man8/httpd.8 man8/suexec.8
121 FIX_MAN_PERMS+=         man8/rotatelogs.8 man8/logresolve.8 man8/apxs.8
122 FIX_MAN_PERMS+=         man8/apachectl.8 man8/ab.8
123
124 # Fix paths in the apache manpages.
125 SUBST_CLASSES+=         man
126 SUBST_STAGE.man=        post-patch
127 SUBST_FILES.man=        docs/man/*.1 docs/man/*.8
128 SUBST_SED.man=          -e 's,/usr/local/etc/apache,${PKG_SYSCONFDIR},'
129 SUBST_SED.man+=         -e 's,/path/to/apache/etc,${PKG_SYSCONFDIR},'
130 SUBST_SED.man+=         -e 's,/usr/local/apache2,${PREFIX}/share/httpd/htdocs,'
131 SUBST_SED.man+=         -e 's,/usr/web,${PREFIX}/share/httpd/htdocs,'
132
133 SUBST_CLASSES+=         paths
134 SUBST_STAGE.paths=      pre-configure
135 SUBST_FILES.paths=      config.layout
136 SUBST_SED.paths=        -e "s|@PREFIX@|${PREFIX}|g"
137 SUBST_SED.paths+=       -e "s|@VARBASE@|${VARBASE}|g"
138 SUBST_SED.paths+=       -e "s|@SYSCONFDIR@|${PKG_SYSCONFDIR}|g"
139 SUBST_MESSAGE.paths=    Fixing paths.
140
141 SUBST_CLASSES+=         apr-lt
142 SUBST_STAGE.apr-lt=     post-configure
143 SUBST_FILES.apr-lt=     build/config_vars.mk
144 SUBST_SED.apr-lt=       -e 's|^\(LIBTOOL =\) [^ ]*|\1 $$(SHELL) $$(top_builddir)/build/libtool|g'
145 SUBST_MESSAGE.apr-lt=   Fixing libtool references.
146
147 SUBST_CLASSES+=         confs
148 SUBST_STAGE.confs=      post-configure
149 SUBST_MESSAGE.confs=    Fixing configuration files.
150 SUBST_FILES.confs=      docs/conf/highperformance-std.conf
151 SUBST_FILES.confs+=     docs/conf/httpd-std.conf
152 SUBST_FILES.confs+=     docs/conf/ssl-std.conf
153 SUBST_SED.confs=        -e "s|${EGDIR}|${PKG_SYSCONFDIR}|g"
154 SUBST_SED.confs+=       -e "s|${PREFIX}/htdocs|${PREFIX}/share/httpd/htdocs|g"
155 SUBST_SED.confs+=       -e "s|${PREFIX}/conf|${PKG_SYSCONFDIR}|g"
156 SUBST_SED.confs+=       -e "s|logs/|${VARBASE}/log/httpd/|g"
157 SUBST_SED.confs+=       -e 's|/var/log/httpd/foo\.log|logs/foo.log/|g'
158 SUBST_SED.confs+=       -e 's|^\(User[   ]\).*|\1${APACHE_USER}|g'
159 SUBST_SED.confs+=       -e 's|^\(Group[  ]\).*|\1${APACHE_GROUP}|g'
160
161 # abs_srcdir in config_vars.mk is used during install so needs to reference
162 # the work dir path, and by other packages such as ap2-fastcgi after install,
163 # so we fix after install to reference the installed path
164 SUBST_CLASSES+=         abs_srcdir
165 SUBST_STAGE.abs_srcdir= post-install
166 SUBST_FILES.abs_srcdir= ${DESTDIR}${PREFIX}/share/httpd/build/config_vars.mk
167 SUBST_SED.abs_srcdir=   -e 's|^\(abs_srcdir =\) .*|\1 ${PREFIX}/share/httpd|'
168 SUBST_MESSAGE.abs_srcdir=       Fixing abs_srcdir
169
170 REPLACE_PERL=           docs/cgi-examples/printenv
171
172 .include "options.mk"
173
174 # Add dependencies for the modules that will be built.  For each module
175 # ap_mod listed in ${APACHE_MODULES}, _AP_DEPENDS.ap_mod is a whitespace
176 # separated list of dependencies or buildlink3.mk files needed to build
177 # ap_mod, and _AP_CFG_ARGS.ap_mod is a whitespace separated list of
178 # configure script options for ap_mod.
179 #
180 AP_DEPENDS.ssl= ../../security/openssl/buildlink3.mk
181 AP_DEPENDS.deflate=     ../../devel/zlib/buildlink3.mk
182
183 AP_CFG_ARGS.ssl=        --with-ssl=${BUILDLINK_PREFIX.openssl}
184 AP_CFG_ARGS.deflate=    --with-z=${BUILDLINK_PREFIX.zlib}
185
186 .for ap_mod in ${APACHE_MODULES}
187 .  if defined(AP_DEPENDS.${ap_mod}) && !empty(AP_DEPENDS.${ap_mod})
188 .    for ap_depend in ${AP_DEPENDS.${ap_mod}}
189 .      if exists(${ap_depend})
190 .        include "${ap_depend}"
191 .      else
192 DEPENDS+=               ${ap_depend}
193 .      endif
194 .    endfor
195 .  endif
196 .  if defined(AP_CFG_ARGS.${ap_mod}) && !empty(AP_CFG_ARGS.${ap_mod})
197 CONFIGURE_ARGS+=        ${AP_CFG_ARGS.${ap_mod}}
198 .  endif
199 .endfor
200
201 post-extract:
202         ${TOUCH} ${WRKSRC}/build/libtool
203
204 post-build:
205         ${SED} "s#@PKG_SYSCONFDIR@#${PKG_SYSCONFDIR}#g"                 \
206                 < ${FILESDIR}/mkcert.sh > ${WRKDIR}/mkcert
207
208 INSTALLATION_DIRS+=     share/httpd/manual
209
210 pre-install:
211         cd ${WRKSRC} && ${SETENV} ${MAKE_ENV}                           \
212                 ${MAKE_PROGRAM} install-conf sysconfdir="${EGDIR}" \
213                     DESTDIR=${DESTDIR}
214
215 post-install:
216         ${LN} -sf ../../../libexec/apr/libtool ${DESTDIR}${PREFIX}/share/httpd/build
217         cd ${DESTDIR}${EGDIR} &&                                        \
218         for file in                                                     \
219                 highperformance-std.conf                                \
220                 httpd-std.conf                                          \
221                 ssl-std.conf;                                           \
222         do                                                              \
223                 ${AWK} '                                                \
224                         /^Listen[       ]*80/   {                       \
225                                 printf "%s", "Listen 0.0.0.0:80\n";     \
226                                 next;                                   \
227                         }                                               \
228                         /^Listen[       ]*443/  {                       \
229                                 printf "%s", "Listen 0.0.0.0:443\n";    \
230                                 next;                                   \
231                         }                                               \
232                         { print; }                                      \
233                         ' < "$${file}" >> $${file}.new;                 \
234                 ${MV} -f $${file}.new $${file};                         \
235         done
236
237         cd ${WRKSRC}/docs/manual && pax -rw . ${DESTDIR}${PREFIX}/share/httpd/manual
238
239         ${INSTALL_SCRIPT} ${WRKDIR}/mkcert ${DESTDIR}${PREFIX}/sbin
240
241         for file in ${FIX_PERMS}; do \
242                 ${CHOWN} ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/sbin/$$file && \
243                 ${CHMOD} ${BINMODE} ${DESTDIR}${PREFIX}/sbin/$$file; \
244         done
245
246         ${CHOWN} -h -R ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/share/httpd
247         ${CHOWN} -h -R ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/include/httpd
248         ${CHOWN} -h -R ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/lib/httpd
249         ${CHOWN} ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/libexec/cgi-bin/test-cgi
250         ${CHOWN} ${BINOWN}:${BINGRP} ${DESTDIR}${PREFIX}/libexec/cgi-bin/printenv
251
252         for file in ${FIX_MAN_PERMS}; do \
253                 ${CHOWN} ${MANOWN}:${MANGRP} ${DESTDIR}${PREFIX}/${PKGMANDIR}/$$file; \
254         done
255
256         ${INSTALL_SCRIPT} ${WRKSRC}/build/mkdir.sh ${DESTDIR}${PREFIX}/share/httpd/build
257
258 .include "../../mk/bsd.pkg.mk"