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

Diff of /eclass/depend.apache.eclass

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

Revision 1.1 Revision 1.46
1# Copyright 1999-2004 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/depend.apache.eclass,v 1.1 2004/07/16 10:48:22 stuart Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.46 2012/04/20 07:19:49 patrick Exp $
4 4
5ECLASS="depend.apache" 5# @ECLASS: depend.apache.eclass
6INHERITED="$INHERITED $ECLASS" 6# @MAINTAINER:
7IUSE="apache apache2" 7# apache-devs@gentoo.org
8# @BLURB: Functions to allow ebuilds to depend on apache
9# @DESCRIPTION:
10# This eclass handles depending on apache in a sane way and provides information
11# about where certain binaries and configuration files are located.
12#
13# To make use of this eclass simply call one of the need/want_apache functions
14# described below. Make sure you use the need/want_apache call after you have
15# defined DEPEND and RDEPEND. Also note that you can not rely on the automatic
16# RDEPEND=DEPEND that portage does if you use this eclass.
17#
18# See Bug 107127 for more information.
19#
20# @EXAMPLE:
21#
22# Here is an example of an ebuild depending on apache:
23#
24# @CODE
25# DEPEND="virtual/Perl-CGI"
26# RDEPEND="${DEPEND}"
27# need_apache2
28# @CODE
29#
30# Another example which demonstrates non-standard IUSE options for optional
31# apache support:
32#
33# @CODE
34# DEPEND="server? ( virtual/Perl-CGI )"
35# RDEPEND="${DEPEND}"
36# want_apache2 server
37#
38# pkg_setup() {
39# depend.apache_pkg_setup server
40# }
41# @CODE
8 42
9# call this function to work out which version of the apache web server 43inherit multilib
10# your ebuild should be installing itself to use
11 44
12detect_apache_useflags() { 45# ==============================================================================
13 USE_APACHE1= 46# INTERNAL VARIABLES
14 USE_APACHE2= 47# ==============================================================================
15 USE_APACHE_MULTIPLE=
16 48
17 useq apache2 && USE_APACHE2=1 49# @ECLASS-VARIABLE: APACHE_VERSION
18 useq apache && USE_APACHE1=1 50# @DESCRIPTION:
51# Stores the version of apache we are going to be ebuilding.
52# This variable is set by the want/need_apache functions.
19 53
20 [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1 54# @ECLASS-VARIABLE: APXS
21} 55# @DESCRIPTION:
56# Path to the apxs tool.
57# This variable is set by the want/need_apache functions.
22 58
23detect_apache_installed() { 59# @ECLASS-VARIABLE: APACHE_BIN
24 HAS_APACHE1= 60# @DESCRIPTION:
25 HAS_APACHE2= 61# Path to the apache binary.
26 HAS_APACHE_MULTIPLE= 62# This variable is set by the want/need_apache functions.
27 HAS_APACHE_ANY=
28 63
29 has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 64# @ECLASS-VARIABLE: APACHE_CTL
30 has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 65# @DESCRIPTION:
66# Path to the apachectl tool.
67# This variable is set by the want/need_apache functions.
31 68
32 [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 69# @ECLASS-VARIABLE: APACHE_BASEDIR
33} 70# @DESCRIPTION:
71# Path to the server root directory.
72# This variable is set by the want/need_apache functions.
34 73
35# call this function from your pkg_setup 74# @ECLASS-VARIABLE: APACHE_CONFDIR
75# @DESCRIPTION:
76# Path to the configuration file directory.
77# This variable is set by the want/need_apache functions.
36 78
79# @ECLASS-VARIABLE: APACHE_MODULES_CONFDIR
80# @DESCRIPTION:
81# Path where module configuration files are kept.
82# This variable is set by the want/need_apache functions.
83
84# @ECLASS-VARIABLE: APACHE_VHOSTS_CONFDIR
85# @DESCRIPTION:
86# Path where virtual host configuration files are kept.
87# This variable is set by the want/need_apache functions.
88
89# @ECLASS-VARIABLE: APACHE_MODULESDIR
90# @DESCRIPTION:
91# Path where we install modules.
92# This variable is set by the want/need_apache functions.
93
94# @ECLASS-VARIABLE: APACHE_DEPEND
95# @DESCRIPTION:
96# Dependencies for Apache
97APACHE_DEPEND="www-servers/apache"
98
99# @ECLASS-VARIABLE: APACHE2_DEPEND
100# @DESCRIPTION:
101# Dependencies for Apache 2.x
102APACHE2_DEPEND="=www-servers/apache-2*"
103
104# @ECLASS-VARIABLE: APACHE2_2_DEPEND
105# @DESCRIPTION:
106# Dependencies for Apache 2.2.x
107APACHE2_2_DEPEND="=www-servers/apache-2.2*"
108
109# @ECLASS-VARIABLE: APACHE2_4_DEPEND
110# @DESCRIPTION:
111# Dependencies for Apache 2.4.x
112APACHE2_2_DEPEND="=www-servers/apache-2.4*"
113
114
115# ==============================================================================
116# INTERNAL FUNCTIONS
117# ==============================================================================
118
119_init_apache2() {
120 debug-print-function $FUNCNAME $*
121
122 # WARNING: Do not use these variables with anything that is put
123 # into the dependency cache (DEPEND/RDEPEND/etc)
124 APACHE_VERSION="2"
125 APXS="/usr/sbin/apxs2"
126 APACHE_BIN="/usr/sbin/apache2"
127 APACHE_CTL="/usr/sbin/apache2ctl"
128 APACHE_INCLUDEDIR="/usr/include/apache2"
129 APACHE_BASEDIR="/usr/$(get_libdir)/apache2"
130 APACHE_CONFDIR="/etc/apache2"
131 APACHE_MODULES_CONFDIR="${APACHE_CONFDIR}/modules.d"
132 APACHE_VHOSTS_CONFDIR="${APACHE_CONFDIR}/vhosts.d"
133 APACHE_MODULESDIR="${APACHE_BASEDIR}/modules"
134}
135
136_init_no_apache() {
137 debug-print-function $FUNCNAME $*
138 APACHE_VERSION="0"
139}
140
141# ==============================================================================
142# PUBLIC FUNCTIONS
143# ==============================================================================
144
145# @FUNCTION: depend.apache_pkg_setup
146# @USAGE: [myiuse]
147# @DESCRIPTION:
148# An ebuild calls this in pkg_setup() to initialize variables for optional
149# apache-2.x support. If the myiuse parameter is not given it defaults to
150# apache2.
151depend.apache_pkg_setup() {
152 debug-print-function $FUNCNAME $*
153
154 if [[ "${EBUILD_PHASE}" != "setup" ]]; then
155 die "$FUNCNAME() should be called in pkg_setup()"
156 fi
157
158 local myiuse=${1:-apache2}
159 if has ${myiuse} ${IUSE}; then
160 if use ${myiuse}; then
161 _init_apache2
162 else
163 _init_no_apache
164 fi
165 fi
166}
167
168# @FUNCTION: want_apache
169# @USAGE: [myiuse]
170# @DESCRIPTION:
171# An ebuild calls this to get the dependency information for optional apache
172# support. If the myiuse parameter is not given it defaults to apache2.
173# An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
174# with the same myiuse parameter.
175want_apache() {
176 debug-print-function $FUNCNAME $*
177 want_apache2 "$@"
178}
179
180# @FUNCTION: want_apache2
181# @USAGE: [myiuse]
182# @DESCRIPTION:
183# An ebuild calls this to get the dependency information for optional apache-2.x
184# support. If the myiuse parameter is not given it defaults to apache2.
185# An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
186# with the same myiuse parameter.
187want_apache2() {
188 debug-print-function $FUNCNAME $*
189
190 local myiuse=${1:-apache2}
191 IUSE="${IUSE} ${myiuse}"
192 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
193 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
194}
195
196# @FUNCTION: want_apache2_2
197# @USAGE: [myiuse]
198# @DESCRIPTION:
199# An ebuild calls this to get the dependency information for optional
200# apache-2.2.x support. If the myiuse parameter is not given it defaults to
201# apache2.
202# An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
203# with the same myiuse parameter.
204want_apache2_2() {
205 debug-print-function $FUNCNAME $*
206
207 local myiuse=${1:-apache2}
208 IUSE="${IUSE} ${myiuse}"
209 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
210 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
211}
212
213# @FUNCTION: need_apache
214# @DESCRIPTION:
215# An ebuild calls this to get the dependency information for apache.
37depend_apache() { 216need_apache() {
38 detect_apache_installed 217 debug-print-function $FUNCNAME $*
39 detect_apache_useflags 218 need_apache2
219}
40 220
41 # deal with the multiple cases first - much easier 221# @FUNCTION: need_apache2
42 if [ -n "$USE_APACHE_MULTIPLE" ]; then 222# @DESCRIPTION:
223# An ebuild calls this to get the dependency information for apache-2.x.
224need_apache2() {
225 debug-print-function $FUNCNAME $*
226
227 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
228 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
229 _init_apache2
230}
231
232# @FUNCTION: need_apache2_2
233# @DESCRIPTION:
234# An ebuild calls this to get the dependency information for apache-2.2.x.
235need_apache2_2() {
236 debug-print-function $FUNCNAME $*
237
238 DEPEND="${DEPEND} ${APACHE2_2_DEPEND}"
239 RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}"
240 _init_apache2
241}
242
243# @FUNCTION: need_apache2_4
244# @DESCRIPTION:
245# An ebuild calls this to get the dependency information for apache-2.4.x.
246need_apache2_4() {
247 debug-print-function $FUNCNAME $*
248
249 DEPEND="${DEPEND} ${APACHE2_4_DEPEND}"
250 RDEPEND="${RDEPEND} ${APACHE2_4_DEPEND}"
251 _init_apache2
252}
253
254# @FUNCTION: has_apache
255# @DESCRIPTION:
256# An ebuild calls this to get runtime variables for an indirect apache
257# dependency without USE-flag, in which case want_apache does not work.
258# DO NOT call this function in global scope.
259has_apache() {
260 debug-print-function $FUNCNAME $*
261
262 if has_version '>=www-servers/apache-2'; then
263 _init_apache2
264 else
265 _init_no_apache
266 fi
267}
268
269# @FUNCTION: has_apache_threads
270# @USAGE: [myflag]
271# @DESCRIPTION:
272# An ebuild calls this to make sure thread-safety is enabled if apache has been
273# built with a threaded MPM. If the myflag parameter is not given it defaults to
274# threads.
275has_apache_threads() {
276 debug-print-function $FUNCNAME $*
277
278 if ! built_with_use www-servers/apache threads; then
279 return
280 fi
281
282 local myflag="${1:-threads}"
283
284 if ! use ${myflag}; then
43 echo 285 echo
44 eerror "You have both the apache and apache2 USE flags set" 286 eerror "You need to enable USE flag '${myflag}' to build a thread-safe version"
45 eerror 287 eerror "of ${CATEGORY}/${PN} for use with www-servers/apache"
46 eerror "Please set only ONE of these USE flags, and try again" 288 die "Need missing USE flag '${myflag}'"
289 fi
290}
291
292# @FUNCTION: has_apache_threads_in
293# @USAGE: <myforeign> [myflag]
294# @DESCRIPTION:
295# An ebuild calls this to make sure thread-safety is enabled in a foreign
296# package if apache has been built with a threaded MPM. If the myflag parameter
297# is not given it defaults to threads.
298has_apache_threads_in() {
299 debug-print-function $FUNCNAME $*
300
301 if ! built_with_use www-servers/apache threads; then
302 return
303 fi
304
305 local myforeign="$1"
306 local myflag="${2:-threads}"
307
308 if ! built_with_use ${myforeign} ${myflag}; then
47 echo 309 echo
48 die "Multiple Apache USE flags set - you can only have one set at a time" 310 eerror "You need to enable USE flag '${myflag}' in ${myforeign} to"
49 fi 311 eerror "build a thread-safe version of ${CATEGORY}/${PN} for use"
50 312 eerror "with www-servers/apache"
51 if [ -n "$USE_APACHE2" ] ; then 313 die "Need missing USE flag '${myflag}' in ${myforeign}"
52 if [ -z "$HAS_APACHE2" -a -n "$HAS_APACHE_ANY" ] ; then
53 echo
54 eerror "You have the 'apache2' USE flag set, but only have Apache v1 installed"
55 eerror "If you really meant to upgrade to Apache v2, please install Apache v2"
56 eerror "before installing $CATEGORY/${PN}-${PVR}"
57 echo
58 die "Automatic upgrade of Apache would be forced; avoiding"
59 else
60 einfo "Apache 2 support enabled"
61 DETECT_APACHE=2
62 return
63 fi 314 fi
64 fi
65
66 if [ -n "$USE_APACHE1" ]; then
67 if [ -z "$HAS_APACHE1" -a -n "$HAS_APACHE_ANY" ]; then
68 echo
69 eerror "You have the 'apache' USE flag set, but only have a later version of"
70 eerror "Apache installed on your computer. Please use the 'apache2' USE flag"
71 eerror "or downgrade to Apache v1 before installing $CATEGORY/${PN}-${PVR}"
72 echo
73 die "Avoiding installing older version of Apache"
74 else
75 einfo "Apache 1 support enabled"
76 DETECT_APACHE=1
77 return
78 fi
79 fi
80} 315}
81 316
317EXPORT_FUNCTIONS pkg_setup

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

  ViewVC Help
Powered by ViewVC 1.1.20