/[gentoo-x86]/eclass/apache-2.eclass
Gentoo

Diff of /eclass/apache-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.28
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2012 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.1 2007/11/28 13:04:12 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.28 2012/03/29 15:35:04 patrick Exp $
4 4
5# @ECLASS: apache-2 5# @ECLASS: apache-2.eclass
6# @MAINTAINER:
6# @MAINTAINER: apache-devs@gentoo.org 7# apache-devs@gentoo.org
7# @BLURB: Provides a common set of functions for >=apache-2.2* ebuilds 8# @BLURB: Provides a common set of functions for apache-2.x ebuilds
8# @DESCRIPTION: 9# @DESCRIPTION:
9# This eclass handles common apache ebuild functions in a sane way and providing 10# This eclass handles apache-2.x ebuild functions such as LoadModule generation
10# information about where certain interfaces are located such as LoadModule
11# generation and inter-module dependency checking. 11# and inter-module dependency checking.
12 12
13inherit depend.apache eutils flag-o-matic multilib autotools 13inherit autotools eutils flag-o-matic multilib ssl-cert
14 14
15# ============================================================================== 15# ==============================================================================
16# INTERNAL VARIABLES 16# INTERNAL VARIABLES
17# ============================================================================== 17# ==============================================================================
18 18
19# @ECLASS-VARIABLE: GENTOO_PATCHNAME 19# @ECLASS-VARIABLE: GENTOO_PATCHNAME
20# @DESCRIPTION: 20# @DESCRIPTION:
21# This internal variable contains the prefix for the patch tarball 21# This internal variable contains the prefix for the patch tarball.
22GENTOO_PATCHNAME="gentoo-${PF}" 22# Defaults to the full name and version (including revision) of the package.
23# If you want to override this in an ebuild, use:
24# ORIG_PR="(revision of Gentoo stuff you want)"
25# GENTOO_PATCHNAME="gentoo-${PN}-${PV}${ORIG_PR:+-${ORIG_PR}}"
26[[ -n "$GENTOO_PATCHNAME" ]] || GENTOO_PATCHNAME="gentoo-${PF}"
23 27
24# @ECLASS-VARIABLE: GENTOO_PATCHDIR 28# @ECLASS-VARIABLE: GENTOO_PATCHDIR
25# @DESCRIPTION: 29# @DESCRIPTION:
26# This internal variable contains the working directory where patches and config 30# This internal variable contains the working directory where patches and config
27# files are located 31# files are located.
32# Defaults to the patchset name appended to the working directory.
28GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}" 33[[ -n "$GENTOO_PATCHDIR" ]] || GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
29 34
30# @ECLASS-VARIABLE: GENTOO_DEVELOPER 35# @VARIABLE: GENTOO_DEVELOPER
31# @DESCRIPTION: 36# @DESCRIPTION:
32# This variable needs to be set in the ebuild and contains the name of the 37# This variable needs to be set in the ebuild and contains the name of the
33# gentoo developer who created the patch tarball 38# gentoo developer who created the patch tarball
34 39
35# @ECLASS-VARIABLE: GENTOO_PATCHSTAMP 40# @VARIABLE: GENTOO_PATCHSTAMP
36# @DESCRIPTION: 41# @DESCRIPTION:
37# This variable needs to be set in the ebuild and contains the date the patch 42# This variable needs to be set in the ebuild and contains the date the patch
38# tarball was created at in YYMMDD format 43# tarball was created at in YYYYMMDD format
44
45# @VARIABLE: GENTOO_PATCH_A
46# @DESCRIPTION:
47# This variable should contain the entire filename of patch tarball.
48# Defaults to the name of the patchset, with a datestamp.
49[[ -n "$GENTOO_PATCH_A" ]] || GENTOO_PATCH_A="${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2"
39 50
40SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2 51SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
41 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2" 52 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCH_A}"
42 53
43# @ECLASS-VARIABLE: IUSE_MPMS_FORK 54# @VARIABLE: IUSE_MPMS_FORK
44# @DESCRIPTION: 55# @DESCRIPTION:
45# This variable needs to be set in the ebuild and contains a list of forking 56# This variable needs to be set in the ebuild and contains a list of forking
46# (i.e. non-threaded) MPMS 57# (i.e. non-threaded) MPMs
47 58
48# @ECLASS-VARIABLE: IUSE_MPMS_THREAD 59# @VARIABLE: IUSE_MPMS_THREAD
49# @DESCRIPTION: 60# @DESCRIPTION:
50# This variable needs to be set in the ebuild and contains a list of threaded 61# This variable needs to be set in the ebuild and contains a list of threaded
51# MPMS 62# MPMs
52 63
53# @ECLASS-VARIABLE: IUSE_MODULES 64# @VARIABLE: IUSE_MODULES
54# @DESCRIPTION: 65# @DESCRIPTION:
55# This variable needs to be set in the ebuild and contains a list of available 66# This variable needs to be set in the ebuild and contains a list of available
56# built-in modules 67# built-in modules
57 68
58IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}" 69IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}"
59IUSE="debug doc ldap selinux ssl static suexec threads" 70IUSE="${IUSE} debug doc ldap selinux ssl static suexec threads"
60 71
61for module in ${IUSE_MODULES} ; do 72for module in ${IUSE_MODULES} ; do
62 IUSE="${IUSE} apache2_modules_${module}" 73 IUSE="${IUSE} apache2_modules_${module}"
63done 74done
64 75
66 IUSE="${IUSE} apache2_mpms_${mpm}" 77 IUSE="${IUSE} apache2_mpms_${mpm}"
67done 78done
68 79
69DEPEND="dev-lang/perl 80DEPEND="dev-lang/perl
70 =dev-libs/apr-1* 81 =dev-libs/apr-1*
71 =dev-libs/apr-util-1* 82 =dev-libs/apr-util-1*[ldap?]
72 dev-libs/libpcre 83 dev-libs/libpcre
73 ldap? ( =net-nds/openldap-2* ) 84 ldap? ( =net-nds/openldap-2* )
74 selinux? ( sec-policy/selinux-apache ) 85 selinux? ( sec-policy/selinux-apache )
75 ssl? ( dev-libs/openssl ) 86 ssl? ( >=dev-libs/openssl-0.9.8f )
76 !=www-servers/apache-1*" 87 !=www-servers/apache-1*"
77RDEPEND="${DEPEND}" 88RDEPEND="${DEPEND}"
78PDEPEND="~app-admin/apache-tools-${PV}" 89PDEPEND="~app-admin/apache-tools-${PV}"
79 90
80S="${WORKDIR}/httpd-${PV}" 91S="${WORKDIR}/httpd-${PV}"
82# ============================================================================== 93# ==============================================================================
83# INTERNAL FUNCTIONS 94# INTERNAL FUNCTIONS
84# ============================================================================== 95# ==============================================================================
85 96
86# @ECLASS-VARIABLE: MY_MPM 97# @ECLASS-VARIABLE: MY_MPM
87# DESCRIPTION: 98# @DESCRIPTION:
88# This internal variable contains the selected MPM after a call to setup_mpm() 99# This internal variable contains the selected MPM after a call to setup_mpm()
89 100
90# @FUNCTION: setup_mpm 101# @FUNCTION: setup_mpm
91# @DESCRIPTION: 102# @DESCRIPTION:
92# This internal function makes sure that only one of APACHE2_MPMS was selected 103# This internal function makes sure that only one of APACHE2_MPMS was selected
93# or a default based on USE=threads is selected if APACHE2_MPMS is empty 104# or a default based on USE=threads is selected if APACHE2_MPMS is empty
94setup_mpm() { 105setup_mpm() {
106 MY_MPM=""
95 for x in ${IUSE_MPMS} ; do 107 for x in ${IUSE_MPMS} ; do
96 if use apache2_mpms_${x} ; then 108 if use apache2_mpms_${x} ; then
97 if [[ -z "${MY_MPM}" ]] ; then 109 if [[ -z "${MY_MPM}" ]] ; then
98 MY_MPM=${x} 110 MY_MPM=${x}
99 elog 111 elog
130 eerror "You have selected a non-threaded MPM but USE=threads is enabled" 142 eerror "You have selected a non-threaded MPM but USE=threads is enabled"
131 die "invalid use flag combination" 143 die "invalid use flag combination"
132 fi 144 fi
133} 145}
134 146
147# @VARIABLE: MODULE_CRITICAL
148# @DESCRIPTION:
149# This variable needs to be set in the ebuild and contains a space-separated
150# list of modules critical for the default apache. A user may still
151# disable these modules for custom minimal installation at their own risk.
152
153# @FUNCTION: check_module_critical
154# @DESCRIPTION:
155# This internal function warns the user about modules critical for the default
156# apache configuration.
157check_module_critical() {
158 local unsupported=0
159
160 for m in ${MODULE_CRITICAL} ; do
161 if ! has ${m} ${MY_MODS} ; then
162 ewarn "Module '${m}' is required in the default apache configuration."
163 unsupported=1
164 fi
165 done
166
167 if [[ ${unsupported} -ne 0 ]] ; then
168 ewarn
169 ewarn "You have disabled one or more required modules"
170 ewarn "for the default apache configuration."
171 ewarn "Although this is not an error, please be"
172 ewarn "aware that this setup is UNSUPPORTED."
173 ewarn
174 ebeep 10
175 fi
176}
177
135# @ECLASS-VARIABLE: MODULE_DEPENDS 178# @VARIABLE: MODULE_DEPENDS
136# @DESCRIPTION: 179# @DESCRIPTION:
137# This variable needs to be set in the ebuild and contains a space-separated 180# This variable needs to be set in the ebuild and contains a space-separated
138# list of dependency tokens each with a module and the module it depends on 181# list of dependency tokens each with a module and the module it depends on
139# separated by a colon 182# separated by a colon
140 183
145check_module_depends() { 188check_module_depends() {
146 local err=0 189 local err=0
147 190
148 for m in ${MY_MODS} ; do 191 for m in ${MY_MODS} ; do
149 for dep in ${MODULE_DEPENDS} ; do 192 for dep in ${MODULE_DEPENDS} ; do
150 if [[ "${m}" == "${dep%:*}" ]]; then 193 if [[ "${m}" == "${dep%:*}" ]] ; then
151 if ! use apache2_modules_${dep#*:} ; then 194 if ! use apache2_modules_${dep#*:} ; then
152 eerror "Module '${m}' depends on '${dep#*:}'" 195 eerror "Module '${m}' depends on '${dep#*:}'"
153 err=1 196 err=1
154 fi 197 fi
155 fi 198 fi
160 die "invalid use flag combination" 203 die "invalid use flag combination"
161 fi 204 fi
162} 205}
163 206
164# @ECLASS-VARIABLE: MY_CONF 207# @ECLASS-VARIABLE: MY_CONF
165# DESCRIPTION: 208# @DESCRIPTION:
166# This internal variable contains the econf options for the current module 209# This internal variable contains the econf options for the current module
167# selection after a call to setup_modules() 210# selection after a call to setup_modules()
168 211
169# @ECLASS-VARIABLE: MY_MODS 212# @ECLASS-VARIABLE: MY_MODS
170# DESCRIPTION: 213# @DESCRIPTION:
171# This internal variable contains a sorted, space separated list of currently 214# This internal variable contains a sorted, space separated list of currently
172# selected modules after a call to setup_modules() 215# selected modules after a call to setup_modules()
173 216
174# @FUNCTION: setup_modules 217# @FUNCTION: setup_modules
175# @DESCRIPTION: 218# @DESCRIPTION:
185 fi 228 fi
186 229
187 MY_CONF="--enable-so=static" 230 MY_CONF="--enable-so=static"
188 231
189 if use ldap ; then 232 if use ldap ; then
190 if ! built_with_use 'dev-libs/apr-util' ldap ; then
191 eerror "dev-libs/apr-util is missing LDAP support. For apache to have"
192 eerror "ldap support, apr-util must be built with the ldap USE-flag"
193 eerror "enabled."
194 die "ldap USE-flag enabled while not supported in apr-util"
195 fi
196 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}" 233 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}"
197 MY_MODS="${MY_MODS} ldap authnz_ldap" 234 MY_MODS="${MY_MODS} ldap authnz_ldap"
198 else 235 else
199 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap" 236 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap"
200 fi 237 fi
202 if use ssl ; then 239 if use ssl ; then
203 MY_CONF="${MY_CONF} --with-ssl=/usr --enable-ssl=${mod_type}" 240 MY_CONF="${MY_CONF} --with-ssl=/usr --enable-ssl=${mod_type}"
204 MY_MODS="${MY_MODS} ssl" 241 MY_MODS="${MY_MODS} ssl"
205 else 242 else
206 MY_CONF="${MY_CONF} --without-ssl --disable-ssl" 243 MY_CONF="${MY_CONF} --without-ssl --disable-ssl"
207 fi
208
209 if use threads || has ${MY_MPM} ${IUSE_MPMS_THREAD} ; then
210 MY_CONF="${MY_CONF} --enable-cgid=${mod_type}"
211 MY_MODS="${MY_MODS} cgid"
212 else
213 MY_CONF="${MY_CONF} --enable-cgi=${mod_type}"
214 MY_MODS="${MY_MODS} cgi"
215 fi 244 fi
216 245
217 if use suexec ; then 246 if use suexec ; then
218 elog "You can manipulate several configure options of suexec" 247 elog "You can manipulate several configure options of suexec"
219 elog "through the following environment variables:" 248 elog "through the following environment variables:"
253 done 282 done
254 283
255 # sort and uniquify MY_MODS 284 # sort and uniquify MY_MODS
256 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u) 285 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u)
257 check_module_depends 286 check_module_depends
287 check_module_critical
258} 288}
259 289
260# @ECLASS-VARIABLE: MODULE_DEFINES 290# @VARIABLE: MODULE_DEFINES
261# @DESCRIPTION: 291# @DESCRIPTION:
262# This variable needs to be set in the ebuild and contains a space-separated 292# This variable needs to be set in the ebuild and contains a space-separated
263# list of tokens each mapping a module to a runtime define which can be 293# list of tokens each mapping a module to a runtime define which can be
264# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular 294# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular
265# module. 295# module.
267# @FUNCTION: generate_load_module 297# @FUNCTION: generate_load_module
268# @DESCRIPTION: 298# @DESCRIPTION:
269# This internal function generates the LoadModule lines for httpd.conf based on 299# This internal function generates the LoadModule lines for httpd.conf based on
270# the current module selection and MODULE_DEFINES 300# the current module selection and MODULE_DEFINES
271generate_load_module() { 301generate_load_module() {
272 local endit=0 mod_lines= mod_dir="${D}${APACHE2_MODULESDIR}" 302 local endit=0 mod_lines= mod_dir="${D}/usr/$(get_libdir)/apache2/modules"
273 303
274 if use static; then 304 if use static; then
275 sed -i -e "/%%LOAD_MODULE%%/d" \ 305 sed -i -e "/%%LOAD_MODULE%%/d" \
276 "${GENTOO_PATCHDIR}"/conf/httpd.conf 306 "${GENTOO_PATCHDIR}"/conf/httpd.conf
277 return 307 return
309 if [[ -e "${ROOT}"etc/apache2/apache2-builtin-mods ]]; then 339 if [[ -e "${ROOT}"etc/apache2/apache2-builtin-mods ]]; then
310 eerror "The previous configuration file for built-in modules" 340 eerror "The previous configuration file for built-in modules"
311 eerror "(${ROOT}etc/apache2/apache2-builtin-mods) exists on your" 341 eerror "(${ROOT}etc/apache2/apache2-builtin-mods) exists on your"
312 eerror "system." 342 eerror "system."
313 eerror 343 eerror
314 eerror "Please read http://www.gentoo.org/proj/en/apache/upgrade.xml" 344 eerror "Please read http://www.gentoo.org/doc/en/apache-upgrading.xml"
315 eerror "for detailed information how to convert this file to the new" 345 eerror "for detailed information how to convert this file to the new"
316 eerror "APACHE2_MODULES USE_EXPAND variable." 346 eerror "APACHE2_MODULES USE_EXPAND variable."
317 eerror 347 eerror
318 die "upgrade not possible with existing ${ROOT}etc/apache2/apache2-builtin-mods" 348 die "upgrade not possible with existing ${ROOT}etc/apache2/apache2-builtin-mods"
319 fi 349 fi
329# creates the apache user and group and informs about CONFIG_SYSVIPC being 359# creates the apache user and group and informs about CONFIG_SYSVIPC being
330# needed (we don't depend on kernel sources and therefore cannot check). 360# needed (we don't depend on kernel sources and therefore cannot check).
331apache-2_pkg_setup() { 361apache-2_pkg_setup() {
332 check_upgrade 362 check_upgrade
333 363
334 setup_mpm
335 setup_modules
336
337 if use debug; then
338 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
339 fi
340
341 # setup apache user and group 364 # setup apache user and group
342 enewgroup apache 81 365 enewgroup apache 81
343 enewuser apache 81 -1 /var/www apache 366 enewuser apache 81 -1 /var/www apache
344 367
368 setup_mpm
369 setup_modules
370
371 if use debug; then
372 MY_CONF="${MY_CONF} --enable-maintainer-mode --enable-exception-hook"
373 fi
374
345 elog "Please note that you need SysV IPC support in your kernel." 375 elog "Please note that you need SysV IPC support in your kernel."
346 elog "Make sure CONFIG_SYSVIPC=y is set." 376 elog "Make sure CONFIG_SYSVIPC=y is set."
347 elog 377 elog
348}
349 378
379 if use userland_BSD; then
380 elog "On BSD systems you need to add the following line to /boot/loader.conf:"
381 elog " accf_http_load=\"YES\""
382 elog
383 fi
384}
385
350# @FUNCTION: apache-2_src_unpack 386# @FUNCTION: apache-2_src_prepare
351# @DESCRIPTION: 387# @DESCRIPTION:
352# This function applies patches, configures a custom file-system layout and 388# This function applies patches, configures a custom file-system layout and
353# rebuilds the configure scripts. The patch names are organized as follows: 389# rebuilds the configure scripts.
354#
355# 00-19 Gentoo specific (00_all_some-title.patch)
356# 20-39 Additional MPMs (20_all_${MPM}_some-title.patch)
357# 40-59 USE-flag based (40_all_${USE}_some-title.patch)
358# 60-79 Version specific (60_all_${PV}_some-title.patch)
359# 80-99 Security patches (80_all_${PV}_cve-####-####.patch)
360apache-2_src_unpack() { 390apache-2_src_prepare() {
361 unpack ${A} 391 # 03_all_gentoo-apache-tools.patch injects -Wl,-z,now, which is not a good
362 cd "${S}" 392 # idea for everyone
393 case ${CHOST} in
394 *-linux-gnu|*-solaris*|*-freebsd*)
395 # do nothing, these use GNU binutils
396 :
397 ;;
398 *-darwin*)
399 sed -i -e 's/-Wl,-z,now/-Wl,-bind_at_load/g' \
400 "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
401 ;;
402 *)
403 # patch it out to be like upstream
404 sed -i -e 's/-Wl,-z,now//g' \
405 "${GENTOO_PATCHDIR}"/patches/03_all_gentoo_apache-tools.patch
406 ;;
407 esac
363 408
364 # Use correct multilib libdir in gentoo patches 409 # Use correct multilib libdir in gentoo patches
365 sed -i -e "s:/usr/lib:/usr/$(get_libdir):g" \ 410 sed -i -e "s:/usr/lib:/usr/$(get_libdir):g" \
366 "${GENTOO_PATCHDIR}"/{conf/httpd.conf,init/*,patches/config.layout} \ 411 "${GENTOO_PATCHDIR}"/{conf/httpd.conf,init/*,patches/config.layout} \
367 || die "libdir sed failed" 412 || die "libdir sed failed"
371 # setup the filesystem layout config 416 # setup the filesystem layout config
372 cat "${GENTOO_PATCHDIR}"/patches/config.layout >> "${S}"/config.layout || \ 417 cat "${GENTOO_PATCHDIR}"/patches/config.layout >> "${S}"/config.layout || \
373 die "Failed preparing config.layout!" 418 die "Failed preparing config.layout!"
374 sed -i -e "s:version:${PF}:g" "${S}"/config.layout 419 sed -i -e "s:version:${PF}:g" "${S}"/config.layout
375 420
421 # apache2.8 instead of httpd.8 (bug #194828)
422 mv docs/man/{httpd,apache2}.8
423 sed -i -e 's/httpd\.8/apache2.8/g' Makefile.in
424
376 # patched-in MPMs need the build environment rebuilt 425 # patched-in MPMs need the build environment rebuilt
377 sed -i -e '/sinclude/d' configure.in 426 sed -i -e '/sinclude/d' configure.in
378 AT_GNUCONF_UPDATE=yes AT_M4DIR=build eautoreconf 427 AT_M4DIR=build eautoreconf
379
380 # apache2.8 instead of httpd.8 (bug #194828)
381 mv docs/man/{httpd,apache2}.8
382} 428}
383 429
384# @FUNCTION: apache-2_src_compile 430# @FUNCTION: apache-2_src_configure
385# @DESCRIPTION: 431# @DESCRIPTION:
386# This function adds compiler flags and runs econf and emake based on MY_MPM and 432# This function adds compiler flags and runs econf and emake based on MY_MPM and
387# MY_CONF 433# MY_CONF
388apache-2_src_compile() { 434apache-2_src_configure() {
389 # Instead of filtering --as-needed (bug #128505), append --no-as-needed 435 # Instead of filtering --as-needed (bug #128505), append --no-as-needed
390 # Thanks to Harald van Dijk 436 # Thanks to Harald van Dijk
391 append-ldflags -Wl,--no-as-needed 437 append-ldflags $(no-as-needed)
392 438
393 # peruser MPM debugging with -X is nearly impossible 439 # peruser MPM debugging with -X is nearly impossible
394 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then 440 if has peruser ${IUSE_MPMS} && use apache2_mpms_peruser ; then
395 use debug && append-flags -DMPM_PERUSER_DEBUG 441 use debug && append-flags -DMPM_PERUSER_DEBUG
396 fi 442 fi
402 --libexecdir=/usr/$(get_libdir)/apache2/modules \ 448 --libexecdir=/usr/$(get_libdir)/apache2/modules \
403 --datadir=/var/www/localhost \ 449 --datadir=/var/www/localhost \
404 --sysconfdir=/etc/apache2 \ 450 --sysconfdir=/etc/apache2 \
405 --localstatedir=/var \ 451 --localstatedir=/var \
406 --with-mpm=${MY_MPM} \ 452 --with-mpm=${MY_MPM} \
407 --with-perl=/usr/bin/perl \
408 --with-apr=/usr \ 453 --with-apr=/usr \
409 --with-apr-util=/usr \ 454 --with-apr-util=/usr \
410 --with-pcre=/usr \ 455 --with-pcre=/usr \
411 --with-z=/usr \ 456 --with-z=/usr \
412 --with-port=80 \ 457 --with-port=80 \
413 --with-program-name=apache2 \ 458 --with-program-name=apache2 \
414 --enable-layout=Gentoo \ 459 --enable-layout=Gentoo \
415 ${MY_CONF} || die "econf failed!" 460 ${MY_CONF} || die "econf failed!"
416 461
417 sed -i -e 's:apache2\.conf:httpd.conf:' include/ap_config_auto.h 462 sed -i -e 's:apache2\.conf:httpd.conf:' include/ap_config_auto.h
418
419 emake || die "emake failed"
420} 463}
421 464
422# @FUNCTION: apache-2_src_install 465# @FUNCTION: apache-2_src_install
423# @DESCRIPTION: 466# @DESCRIPTION:
424# This function runs emake install and generates, install and adapts the gentoo 467# This function runs `emake install' and generates, installs and adapts the gentoo
425# specific configuration files found in the tarball 468# specific configuration files found in the tarball
426apache-2_src_install() { 469apache-2_src_install() {
427 emake DESTDIR="${D}" install || die "emake install failed" 470 make DESTDIR="${D}" install || die "make install failed"
428 471
429 # install our configuration files 472 # install our configuration files
430 keepdir /etc/apache2/vhosts.d 473 keepdir /etc/apache2/vhosts.d
431 keepdir /etc/apache2/modules.d 474 keepdir /etc/apache2/modules.d
432 475
433 generate_load_module 476 generate_load_module
434 insinto /etc/apache2 477 insinto /etc/apache2
435 doins -r "${GENTOO_PATCHDIR}"/conf/* 478 doins -r "${GENTOO_PATCHDIR}"/conf/*
436 doins docs/conf/magic 479 use apache2_modules_mime_magic && doins docs/conf/magic
437 480
438 insinto /etc/logrotate.d 481 insinto /etc/logrotate.d
439 newins "${GENTOO_PATCHDIR}"/scripts/apache2-logrotate apache2 482 newins "${GENTOO_PATCHDIR}"/scripts/apache2-logrotate apache2
440 483
441 # generate a sane default APACHE2_OPTS 484 # generate a sane default APACHE2_OPTS
442 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE" 485 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO"
443 use doc && APACHE2_OPTS="${APACHE2_OPTS} -D MANUAL" 486 use doc && APACHE2_OPTS="${APACHE2_OPTS} -D MANUAL"
444 use ssl && APACHE2_OPTS="${APACHE2_OPTS} -D SSL -D SSL_DEFAULT_VHOST" 487 use ssl && APACHE2_OPTS="${APACHE2_OPTS} -D SSL -D SSL_DEFAULT_VHOST"
445 use suexec && APACHE2_OPTS="${APACHE2_OPTS} -D SUEXEC" 488 use suexec && APACHE2_OPTS="${APACHE2_OPTS} -D SUEXEC"
489 if has negotiation ${APACHE2_MODULES} && use apache2_modules_negotiation; then
490 APACHE2_OPTS="${APACHE2_OPTS} -D LANGUAGE"
491 fi
446 492
447 sed -i -e "s:APACHE2_OPTS=\".*\":APACHE2_OPTS=\"${APACHE2_OPTS}\":" \ 493 sed -i -e "s:APACHE2_OPTS=\".*\":APACHE2_OPTS=\"${APACHE2_OPTS}\":" \
448 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed" 494 "${GENTOO_PATCHDIR}"/init/apache2.confd || die "sed failed"
449 495
450 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2 496 newconfd "${GENTOO_PATCHDIR}"/init/apache2.confd apache2
451 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2 497 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2
452 498
453 # link apache2ctl to the init script 499 # install apache2ctl wrapper for our init script if available
500 if test -e "${GENTOO_PATCHDIR}"/scripts/apache2ctl; then
501 exeinto /usr/sbin
502 doexe "${GENTOO_PATCHDIR}"/scripts/apache2ctl
503 else
454 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl 504 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
505 fi
455 506
456 # provide symlinks for all the stuff we no longer rename, bug 177697 507 # provide legacy symlink for apxs, bug 177697
457 for i in suexec apxs; do
458 dosym /usr/sbin/${i} /usr/sbin/${i}2 508 dosym /usr/sbin/apxs /usr/sbin/apxs2
459 done
460
461 # install some thirdparty scripts
462 exeinto /usr/sbin
463 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh
464 509
465 # install some documentation 510 # install some documentation
466 dodoc ABOUT_APACHE CHANGES LAYOUT README README.platforms VERSIONING 511 dodoc ABOUT_APACHE CHANGES LAYOUT README README.platforms VERSIONING
467 dodoc "${GENTOO_PATCHDIR}"/docs/* 512 dodoc "${GENTOO_PATCHDIR}"/docs/*
468 513
472 else 517 else
473 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf" 518 rm -f "${D}/etc/apache2/modules.d/00_apache_manual.conf"
474 rm -Rf "${D}/usr/share/doc/${PF}/manual" 519 rm -Rf "${D}/usr/share/doc/${PF}/manual"
475 fi 520 fi
476 521
477 # the default webroot gets stored in /usr/share/doc 522 # the default icons and error pages get stored in
478 ebegin "Installing default webroot to /usr/share/doc/${PF}" 523 # /usr/share/apache2/{error,icons}
524 dodir /usr/share/apache2
479 mv -f "${D}/var/www/localhost" "${D}/usr/share/doc/${PF}/webroot" 525 mv -f "${D}/var/www/localhost/error" "${D}/usr/share/apache2/error"
526 mv -f "${D}/var/www/localhost/icons" "${D}/usr/share/apache2/icons"
527 rm -rf "${D}/var/www/localhost/"
480 eend $? 528 eend $?
481 keepdir /var/www/localhost/htdocs
482 529
483 # set some sane permissions for suexec 530 # set some sane permissions for suexec
484 if use suexec ; then 531 if use suexec ; then
485 fowners 0:apache /usr/sbin/suexec 532 fowners 0:${SUEXEC_CALLER:-apache} /usr/sbin/suexec
486 fperms 4710 /usr/sbin/suexec 533 fperms 4710 /usr/sbin/suexec
534 # provide legacy symlink for suexec, bug 177697
535 dosym /usr/sbin/suexec /usr/sbin/suexec2
487 fi 536 fi
488 537
489 # empty dirs 538 # empty dirs
490 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do 539 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
491 keepdir ${i} 540 keepdir ${i}
492 fowners apache:apache ${i} 541 fowners apache:apache ${i}
493 fperms 0755 ${i} 542 fperms 0750 ${i}
494 done 543 done
495
496 # we need /etc/apache2/ssl if USE=ssl
497 use ssl && keepdir /etc/apache2/ssl
498} 544}
499 545
500# @FUNCTION: apache-2_pkg_postinst 546# @FUNCTION: apache-2_pkg_postinst
501# @DESCRIPTION: 547# @DESCRIPTION:
502# This function creates test certificates if SSL is enabled and installs the 548# This function creates test certificates if SSL is enabled and installs the
503# default webroot if /var/www/localhost does not exist. We do this here because 549# default index.html to /var/www/localhost if it does not exist. We do this here
504# the default webroot is a copy of the files that exist elsewhere and we don't 550# because the default webroot is a copy of the files that exist elsewhere and we
505# want them to be managed/removed by portage when apache is upgraded. 551# don't want them to be managed/removed by portage when apache is upgraded.
506apache-2_pkg_postinst() { 552apache-2_pkg_postinst() {
553 # fix previously wrong set permissions Bug#398899
554 einfo "Sanitizing directory permissions ..."
555 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
556 chmod 0750 ${i}
557 done
558
507 if use ssl && [[ ! -e "${ROOT}/etc/apache2/ssl/server.crt" ]] ; then 559 if use ssl && [[ ! -e "${ROOT}/etc/ssl/apache2/server.pem" ]]; then
508 cd "${ROOT}"/etc/apache2/ssl 560 SSL_ORGANIZATION="${SSL_ORGANIZATION:-Apache HTTP Server}"
509 einfo 561 install_cert /etc/ssl/apache2/server
510 einfo "Generating self-signed test certificate in ${ROOT}etc/apache2/ssl ..." 562 ewarn
511 yes "" 2>/dev/null | \ 563 ewarn "The location of SSL certificates has changed. If you are"
512 "${ROOT}"/usr/sbin/gentestcrt.sh >/dev/null 2>&1 || \ 564 ewarn "upgrading from ${CATEGORY}/${PN}-2.2.13 or earlier (or remerged"
513 die "gentestcrt.sh failed" 565 ewarn "*any* apache version), you might want to move your old"
514 einfo 566 ewarn "certificates from /etc/apache2/ssl/ to /etc/ssl/apache2/ and"
567 ewarn "update your config files."
568 ewarn
515 fi 569 fi
516 570
517 if [[ -e "${ROOT}/var/www/localhost" ]] ; then 571 if [[ ! -e "${ROOT}/var/www/localhost" ]] ; then
518 elog "The default webroot has not been installed into"
519 elog "${ROOT}var/www/localhost because the directory already exists"
520 elog "and we do not want to overwrite any files you have put there."
521 elog
522 elog "If you would like to install the latest webroot, please run"
523 elog "emerge --config =${PF}"
524 elog
525 else
526 einfo "Installing default webroot to ${ROOT}var/www/localhost"
527 mkdir -p "${ROOT}"/var/www/localhost 572 mkdir -p "${ROOT}/var/www/localhost/htdocs"
528 cp -R "${ROOT}"/usr/share/doc/${PF}/webroot/* "${ROOT}"/var/www/localhost 573 echo "<html><body><h1>It works!</h1></body></html>" > "${ROOT}/var/www/localhost/htdocs/index.html"
529 chown -R apache:0 "${ROOT}"/var/www/localhost
530 fi 574 fi
531}
532 575
533# @FUNCTION: apache-2_pkg_config 576 echo
534# @DESCRIPTION: 577 elog "Attention: cgi and cgid modules are now handled via APACHE2_MODULES flags"
535# This function installs -- and removes a previously existing -- default webroot 578 elog "in /etc/make.conf. Make sure to enable those in order to compile them."
536# to /var/www/localhost 579 elog "In general, you should use 'cgid' with threaded MPMs and 'cgi' otherwise."
537apache-2_pkg_config() { 580 echo
538 einfo "Installing default webroot to ${ROOT}var/www/localhost"
539 mkdir "${ROOT}"var{,/www{,/localhost}}
540 cp -R "${ROOT}"usr/share/doc/${PF}/webroot/* "${ROOT}"var/www/localhost/
541}
542 581
582}
583
543EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_config 584EXPORT_FUNCTIONS pkg_setup src_prepare src_configure src_install pkg_postinst

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.28

  ViewVC Help
Powered by ViewVC 1.1.20