/[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.3 Revision 1.10
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2007 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.3 2007/12/15 14:00:19 hollow Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-2.eclass,v 1.10 2008/03/23 10:28:45 hollow 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.2* ebuilds
8# @DESCRIPTION: 9# @DESCRIPTION:
9# This eclass handles common apache ebuild functions in a sane way and providing 10# This eclass handles common apache ebuild functions in a sane way and providing
10# information about where certain interfaces are located such as LoadModule 11# information about where certain interfaces are located such as LoadModule
11# generation and inter-module dependency checking. 12# generation and inter-module dependency checking.
12 13
13inherit depend.apache eutils flag-o-matic multilib autotools 14inherit autotools confutils eutils flag-o-matic multilib
14 15
15# ============================================================================== 16# ==============================================================================
16# INTERNAL VARIABLES 17# INTERNAL VARIABLES
17# ============================================================================== 18# ==============================================================================
18 19
25# @DESCRIPTION: 26# @DESCRIPTION:
26# This internal variable contains the working directory where patches and config 27# This internal variable contains the working directory where patches and config
27# files are located 28# files are located
28GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}" 29GENTOO_PATCHDIR="${WORKDIR}/${GENTOO_PATCHNAME}"
29 30
30# @ECLASS-VARIABLE: GENTOO_DEVELOPER 31# @VARIABLE: GENTOO_DEVELOPER
31# @DESCRIPTION: 32# @DESCRIPTION:
32# This variable needs to be set in the ebuild and contains the name of the 33# This variable needs to be set in the ebuild and contains the name of the
33# gentoo developer who created the patch tarball 34# gentoo developer who created the patch tarball
34 35
35# @ECLASS-VARIABLE: GENTOO_PATCHSTAMP 36# @VARIABLE: GENTOO_PATCHSTAMP
36# @DESCRIPTION: 37# @DESCRIPTION:
37# This variable needs to be set in the ebuild and contains the date the patch 38# This variable needs to be set in the ebuild and contains the date the patch
38# tarball was created at in YYMMDD format 39# tarball was created at in YYYYMMDD format
39 40
40SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2 41SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2
41 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2" 42 http://dev.gentoo.org/~${GENTOO_DEVELOPER}/dist/apache/${GENTOO_PATCHNAME}-${GENTOO_PATCHSTAMP}.tar.bz2"
42 43
43# @ECLASS-VARIABLE: IUSE_MPMS_FORK 44# @VARIABLE: IUSE_MPMS_FORK
44# @DESCRIPTION: 45# @DESCRIPTION:
45# This variable needs to be set in the ebuild and contains a list of forking 46# This variable needs to be set in the ebuild and contains a list of forking
46# (i.e. non-threaded) MPMS 47# (i.e. non-threaded) MPMS
47 48
48# @ECLASS-VARIABLE: IUSE_MPMS_THREAD 49# @VARIABLE: IUSE_MPMS_THREAD
49# @DESCRIPTION: 50# @DESCRIPTION:
50# This variable needs to be set in the ebuild and contains a list of threaded 51# This variable needs to be set in the ebuild and contains a list of threaded
51# MPMS 52# MPMS
52 53
53# @ECLASS-VARIABLE: IUSE_MODULES 54# @VARIABLE: IUSE_MODULES
54# @DESCRIPTION: 55# @DESCRIPTION:
55# This variable needs to be set in the ebuild and contains a list of available 56# This variable needs to be set in the ebuild and contains a list of available
56# built-in modules 57# built-in modules
57 58
58IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}" 59IUSE_MPMS="${IUSE_MPMS_FORK} ${IUSE_MPMS_THREAD}"
70 =dev-libs/apr-1* 71 =dev-libs/apr-1*
71 =dev-libs/apr-util-1* 72 =dev-libs/apr-util-1*
72 dev-libs/libpcre 73 dev-libs/libpcre
73 ldap? ( =net-nds/openldap-2* ) 74 ldap? ( =net-nds/openldap-2* )
74 selinux? ( sec-policy/selinux-apache ) 75 selinux? ( sec-policy/selinux-apache )
75 ssl? ( dev-libs/openssl ) 76 ssl? ( >=dev-libs/openssl-0.9.8f )
76 !=www-servers/apache-1*" 77 !=www-servers/apache-1*"
77RDEPEND="${DEPEND}" 78RDEPEND="${DEPEND}"
78PDEPEND="~app-admin/apache-tools-${PV}" 79PDEPEND="~app-admin/apache-tools-${PV}"
79 80
80S="${WORKDIR}/httpd-${PV}" 81S="${WORKDIR}/httpd-${PV}"
82# ============================================================================== 83# ==============================================================================
83# INTERNAL FUNCTIONS 84# INTERNAL FUNCTIONS
84# ============================================================================== 85# ==============================================================================
85 86
86# @ECLASS-VARIABLE: MY_MPM 87# @ECLASS-VARIABLE: MY_MPM
87# DESCRIPTION: 88# @DESCRIPTION:
88# This internal variable contains the selected MPM after a call to setup_mpm() 89# This internal variable contains the selected MPM after a call to setup_mpm()
89 90
90# @FUNCTION: setup_mpm 91# @FUNCTION: setup_mpm
91# @DESCRIPTION: 92# @DESCRIPTION:
92# This internal function makes sure that only one of APACHE2_MPMS was selected 93# 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 94# or a default based on USE=threads is selected if APACHE2_MPMS is empty
94setup_mpm() { 95setup_mpm() {
96 MY_MPM=""
95 for x in ${IUSE_MPMS} ; do 97 for x in ${IUSE_MPMS} ; do
96 if use apache2_mpms_${x} ; then 98 if use apache2_mpms_${x} ; then
97 if [[ -z "${MY_MPM}" ]] ; then 99 if [[ -z "${MY_MPM}" ]] ; then
98 MY_MPM=${x} 100 MY_MPM=${x}
99 elog 101 elog
130 eerror "You have selected a non-threaded MPM but USE=threads is enabled" 132 eerror "You have selected a non-threaded MPM but USE=threads is enabled"
131 die "invalid use flag combination" 133 die "invalid use flag combination"
132 fi 134 fi
133} 135}
134 136
135# @ECLASS-VARIABLE: MODULE_CRITICAL 137# @VARIABLE: MODULE_CRITICAL
136# @DESCRIPTION: 138# @DESCRIPTION:
137# This variable needs to be set in the ebuild and contains a space-separated 139# This variable needs to be set in the ebuild and contains a space-separated
138# list of modules critical for the default apache. A user may still 140# list of modules critical for the default apache. A user may still
139# disable these modules for custom minimal installation at their own risk. 141# disable these modules for custom minimal installation at their own risk.
140 142
161 ewarn 163 ewarn
162 ebeep 10 164 ebeep 10
163 fi 165 fi
164} 166}
165 167
166# @ECLASS-VARIABLE: MODULE_DEPENDS 168# @VARIABLE: MODULE_DEPENDS
167# @DESCRIPTION: 169# @DESCRIPTION:
168# This variable needs to be set in the ebuild and contains a space-separated 170# This variable needs to be set in the ebuild and contains a space-separated
169# list of dependency tokens each with a module and the module it depends on 171# list of dependency tokens each with a module and the module it depends on
170# separated by a colon 172# separated by a colon
171 173
176check_module_depends() { 178check_module_depends() {
177 local err=0 179 local err=0
178 180
179 for m in ${MY_MODS} ; do 181 for m in ${MY_MODS} ; do
180 for dep in ${MODULE_DEPENDS} ; do 182 for dep in ${MODULE_DEPENDS} ; do
181 if [[ "${m}" == "${dep%:*}" ]]; then 183 if [[ "${m}" == "${dep%:*}" ]] ; then
182 if ! use apache2_modules_${dep#*:} ; then 184 if ! use apache2_modules_${dep#*:} ; then
183 eerror "Module '${m}' depends on '${dep#*:}'" 185 eerror "Module '${m}' depends on '${dep#*:}'"
184 err=1 186 err=1
185 fi 187 fi
186 fi 188 fi
191 die "invalid use flag combination" 193 die "invalid use flag combination"
192 fi 194 fi
193} 195}
194 196
195# @ECLASS-VARIABLE: MY_CONF 197# @ECLASS-VARIABLE: MY_CONF
196# DESCRIPTION: 198# @DESCRIPTION:
197# This internal variable contains the econf options for the current module 199# This internal variable contains the econf options for the current module
198# selection after a call to setup_modules() 200# selection after a call to setup_modules()
199 201
200# @ECLASS-VARIABLE: MY_MODS 202# @ECLASS-VARIABLE: MY_MODS
201# DESCRIPTION: 203# @DESCRIPTION:
202# This internal variable contains a sorted, space separated list of currently 204# This internal variable contains a sorted, space separated list of currently
203# selected modules after a call to setup_modules() 205# selected modules after a call to setup_modules()
204 206
205# @FUNCTION: setup_modules 207# @FUNCTION: setup_modules
206# @DESCRIPTION: 208# @DESCRIPTION:
216 fi 218 fi
217 219
218 MY_CONF="--enable-so=static" 220 MY_CONF="--enable-so=static"
219 221
220 if use ldap ; then 222 if use ldap ; then
221 if ! built_with_use 'dev-libs/apr-util' ldap ; then 223 confutils_use_depend_built_with_all ldap dev-libs/apr-util ldap
222 eerror "dev-libs/apr-util is missing LDAP support. For apache to have"
223 eerror "ldap support, apr-util must be built with the ldap USE-flag"
224 eerror "enabled."
225 die "ldap USE-flag enabled while not supported in apr-util"
226 fi
227 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}" 224 MY_CONF="${MY_CONF} --enable-authnz_ldap=${mod_type} --enable-ldap=${mod_type}"
228 MY_MODS="${MY_MODS} ldap authnz_ldap" 225 MY_MODS="${MY_MODS} ldap authnz_ldap"
229 else 226 else
230 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap" 227 MY_CONF="${MY_CONF} --disable-authnz_ldap --disable-ldap"
231 fi 228 fi
287 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u) 284 MY_MODS=$(echo ${MY_MODS} | tr ' ' '\n' | sort -u)
288 check_module_depends 285 check_module_depends
289 check_module_critical 286 check_module_critical
290} 287}
291 288
292# @ECLASS-VARIABLE: MODULE_DEFINES 289# @VARIABLE: MODULE_DEFINES
293# @DESCRIPTION: 290# @DESCRIPTION:
294# This variable needs to be set in the ebuild and contains a space-separated 291# This variable needs to be set in the ebuild and contains a space-separated
295# list of tokens each mapping a module to a runtime define which can be 292# list of tokens each mapping a module to a runtime define which can be
296# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular 293# specified in APACHE2_OPTS in /etc/conf.d/apache2 to enable this particular
297# module. 294# module.
299# @FUNCTION: generate_load_module 296# @FUNCTION: generate_load_module
300# @DESCRIPTION: 297# @DESCRIPTION:
301# This internal function generates the LoadModule lines for httpd.conf based on 298# This internal function generates the LoadModule lines for httpd.conf based on
302# the current module selection and MODULE_DEFINES 299# the current module selection and MODULE_DEFINES
303generate_load_module() { 300generate_load_module() {
304 local endit=0 mod_lines= mod_dir="${D}${APACHE2_MODULESDIR}" 301 local endit=0 mod_lines= mod_dir="${D}/usr/$(get_libdir)/apache2/modules"
305 302
306 if use static; then 303 if use static; then
307 sed -i -e "/%%LOAD_MODULE%%/d" \ 304 sed -i -e "/%%LOAD_MODULE%%/d" \
308 "${GENTOO_PATCHDIR}"/conf/httpd.conf 305 "${GENTOO_PATCHDIR}"/conf/httpd.conf
309 return 306 return
446 emake || die "emake failed" 443 emake || die "emake failed"
447} 444}
448 445
449# @FUNCTION: apache-2_src_install 446# @FUNCTION: apache-2_src_install
450# @DESCRIPTION: 447# @DESCRIPTION:
451# This function runs emake install and generates, install and adapts the gentoo 448# This function runs emake install and generates, installs and adapts the gentoo
452# specific configuration files found in the tarball 449# specific configuration files found in the tarball
453apache-2_src_install() { 450apache-2_src_install() {
454 emake DESTDIR="${D}" install || die "emake install failed" 451 make DESTDIR="${D}" install || die "make install failed"
455 452
456 # install our configuration files 453 # install our configuration files
457 keepdir /etc/apache2/vhosts.d 454 keepdir /etc/apache2/vhosts.d
458 keepdir /etc/apache2/modules.d 455 keepdir /etc/apache2/modules.d
459 456
478 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2 475 newinitd "${GENTOO_PATCHDIR}"/init/apache2.initd apache2
479 476
480 # link apache2ctl to the init script 477 # link apache2ctl to the init script
481 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl 478 dosym /etc/init.d/apache2 /usr/sbin/apache2ctl
482 479
483 # provide symlinks for all the stuff we no longer rename, bug 177697 480 # provide legacy symlink for apxs, bug 177697
484 for i in suexec apxs; do
485 dosym /usr/sbin/${i} /usr/sbin/${i}2 481 dosym /usr/sbin/apxs /usr/sbin/apxs2
486 done
487 482
488 # install some thirdparty scripts 483 # install some thirdparty scripts
489 exeinto /usr/sbin 484 exeinto /usr/sbin
490 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh 485 use ssl && doexe "${GENTOO_PATCHDIR}"/scripts/gentestcrt.sh
491 486
509 504
510 # set some sane permissions for suexec 505 # set some sane permissions for suexec
511 if use suexec ; then 506 if use suexec ; then
512 fowners 0:apache /usr/sbin/suexec 507 fowners 0:apache /usr/sbin/suexec
513 fperms 4710 /usr/sbin/suexec 508 fperms 4710 /usr/sbin/suexec
509 # provide legacy symlink for suexec, bug 177697
510 dosym /usr/sbin/suexec /usr/sbin/suexec2
514 fi 511 fi
515 512
516 # empty dirs 513 # empty dirs
517 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do 514 for i in /var/lib/dav /var/log/apache2 /var/cache/apache2 ; do
518 keepdir ${i} 515 keepdir ${i}

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.20