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

Contents of /eclass/depend.apache.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.45 - (show annotations) (download)
Tue May 26 16:41:56 2009 UTC (5 years, 3 months ago) by arfrever
Branch: MAIN
Changes since 1.44: +37 -14 lines
Add depend.apache_pkg_setup() and don't call use() in functions called in "depend" phase (bug #268371).

1 # Copyright 1999-2009 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.44 2008/03/04 10:59:27 hollow Exp $
4
5 # @ECLASS: depend.apache.eclass
6 # @MAINTAINER:
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
42
43 inherit multilib
44
45 # ==============================================================================
46 # INTERNAL VARIABLES
47 # ==============================================================================
48
49 # @ECLASS-VARIABLE: APACHE_VERSION
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.
53
54 # @ECLASS-VARIABLE: APXS
55 # @DESCRIPTION:
56 # Path to the apxs tool.
57 # This variable is set by the want/need_apache functions.
58
59 # @ECLASS-VARIABLE: APACHE_BIN
60 # @DESCRIPTION:
61 # Path to the apache binary.
62 # This variable is set by the want/need_apache functions.
63
64 # @ECLASS-VARIABLE: APACHE_CTL
65 # @DESCRIPTION:
66 # Path to the apachectl tool.
67 # This variable is set by the want/need_apache functions.
68
69 # @ECLASS-VARIABLE: APACHE_BASEDIR
70 # @DESCRIPTION:
71 # Path to the server root directory.
72 # This variable is set by the want/need_apache functions.
73
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.
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
97 APACHE_DEPEND="www-servers/apache"
98
99 # @ECLASS-VARIABLE: APACHE2_DEPEND
100 # @DESCRIPTION:
101 # Dependencies for Apache 2.x
102 APACHE2_DEPEND="=www-servers/apache-2*"
103
104 # @ECLASS-VARIABLE: APACHE2_2_DEPEND
105 # @DESCRIPTION:
106 # Dependencies for Apache 2.2.x
107 APACHE2_2_DEPEND="=www-servers/apache-2.2*"
108
109 # ==============================================================================
110 # INTERNAL FUNCTIONS
111 # ==============================================================================
112
113 _init_apache2() {
114 debug-print-function $FUNCNAME $*
115
116 # WARNING: Do not use these variables with anything that is put
117 # into the dependency cache (DEPEND/RDEPEND/etc)
118 APACHE_VERSION="2"
119 APXS="/usr/sbin/apxs2"
120 APACHE_BIN="/usr/sbin/apache2"
121 APACHE_CTL="/usr/sbin/apache2ctl"
122 APACHE_INCLUDEDIR="/usr/include/apache2"
123 APACHE_BASEDIR="/usr/$(get_libdir)/apache2"
124 APACHE_CONFDIR="/etc/apache2"
125 APACHE_MODULES_CONFDIR="${APACHE_CONFDIR}/modules.d"
126 APACHE_VHOSTS_CONFDIR="${APACHE_CONFDIR}/vhosts.d"
127 APACHE_MODULESDIR="${APACHE_BASEDIR}/modules"
128 }
129
130 _init_no_apache() {
131 debug-print-function $FUNCNAME $*
132 APACHE_VERSION="0"
133 }
134
135 # ==============================================================================
136 # PUBLIC FUNCTIONS
137 # ==============================================================================
138
139 # @FUNCTION: depend.apache_pkg_setup
140 # @USAGE: [myiuse]
141 # @DESCRIPTION:
142 # An ebuild calls this in pkg_setup() to initialize variables for optional
143 # apache-2.x support. If the myiuse parameter is not given it defaults to
144 # apache2.
145 depend.apache_pkg_setup() {
146 debug-print-function $FUNCNAME $*
147
148 if [[ "${EBUILD_PHASE}" != "setup" ]]; then
149 die "$FUNCNAME() should be called in pkg_setup()"
150 fi
151
152 local myiuse=${1:-apache2}
153 if has ${myiuse} ${IUSE}; then
154 if use ${myiuse}; then
155 _init_apache2
156 else
157 _init_no_apache
158 fi
159 fi
160 }
161
162 # @FUNCTION: want_apache
163 # @USAGE: [myiuse]
164 # @DESCRIPTION:
165 # An ebuild calls this to get the dependency information for optional apache
166 # support. If the myiuse parameter is not given it defaults to apache2.
167 # An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
168 # with the same myiuse parameter.
169 want_apache() {
170 debug-print-function $FUNCNAME $*
171 want_apache2 "$@"
172 }
173
174 # @FUNCTION: want_apache2
175 # @USAGE: [myiuse]
176 # @DESCRIPTION:
177 # An ebuild calls this to get the dependency information for optional apache-2.x
178 # support. If the myiuse parameter is not given it defaults to apache2.
179 # An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
180 # with the same myiuse parameter.
181 want_apache2() {
182 debug-print-function $FUNCNAME $*
183
184 local myiuse=${1:-apache2}
185 IUSE="${IUSE} ${myiuse}"
186 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
187 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
188 }
189
190 # @FUNCTION: want_apache2_2
191 # @USAGE: [myiuse]
192 # @DESCRIPTION:
193 # An ebuild calls this to get the dependency information for optional
194 # apache-2.2.x support. If the myiuse parameter is not given it defaults to
195 # apache2.
196 # An ebuild should additionally call depend.apache_pkg_setup() in pkg_setup()
197 # with the same myiuse parameter.
198 want_apache2_2() {
199 debug-print-function $FUNCNAME $*
200
201 local myiuse=${1:-apache2}
202 IUSE="${IUSE} ${myiuse}"
203 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
204 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
205 }
206
207 # @FUNCTION: need_apache
208 # @DESCRIPTION:
209 # An ebuild calls this to get the dependency information for apache.
210 need_apache() {
211 debug-print-function $FUNCNAME $*
212 need_apache2
213 }
214
215 # @FUNCTION: need_apache2
216 # @DESCRIPTION:
217 # An ebuild calls this to get the dependency information for apache-2.x.
218 need_apache2() {
219 debug-print-function $FUNCNAME $*
220
221 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
222 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
223 _init_apache2
224 }
225
226 # @FUNCTION: need_apache2_2
227 # @DESCRIPTION:
228 # An ebuild calls this to get the dependency information for apache-2.2.x.
229 need_apache2_2() {
230 debug-print-function $FUNCNAME $*
231
232 DEPEND="${DEPEND} ${APACHE2_2_DEPEND}"
233 RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}"
234 _init_apache2
235 }
236
237 # @FUNCTION: has_apache
238 # @DESCRIPTION:
239 # An ebuild calls this to get runtime variables for an indirect apache
240 # dependency without USE-flag, in which case want_apache does not work.
241 # DO NOT call this function in global scope.
242 has_apache() {
243 debug-print-function $FUNCNAME $*
244
245 if has_version '>=www-servers/apache-2'; then
246 _init_apache2
247 else
248 _init_no_apache
249 fi
250 }
251
252 # @FUNCTION: has_apache_threads
253 # @USAGE: [myflag]
254 # @DESCRIPTION:
255 # An ebuild calls this to make sure thread-safety is enabled if apache has been
256 # built with a threaded MPM. If the myflag parameter is not given it defaults to
257 # threads.
258 has_apache_threads() {
259 debug-print-function $FUNCNAME $*
260
261 if ! built_with_use www-servers/apache threads; then
262 return
263 fi
264
265 local myflag="${1:-threads}"
266
267 if ! use ${myflag}; then
268 echo
269 eerror "You need to enable USE flag '${myflag}' to build a thread-safe version"
270 eerror "of ${CATEGORY}/${PN} for use with www-servers/apache"
271 die "Need missing USE flag '${myflag}'"
272 fi
273 }
274
275 # @FUNCTION: has_apache_threads_in
276 # @USAGE: <myforeign> [myflag]
277 # @DESCRIPTION:
278 # An ebuild calls this to make sure thread-safety is enabled in a foreign
279 # package if apache has been built with a threaded MPM. If the myflag parameter
280 # is not given it defaults to threads.
281 has_apache_threads_in() {
282 debug-print-function $FUNCNAME $*
283
284 if ! built_with_use www-servers/apache threads; then
285 return
286 fi
287
288 local myforeign="$1"
289 local myflag="${2:-threads}"
290
291 if ! built_with_use ${myforeign} ${myflag}; then
292 echo
293 eerror "You need to enable USE flag '${myflag}' in ${myforeign} to"
294 eerror "build a thread-safe version of ${CATEGORY}/${PN} for use"
295 eerror "with www-servers/apache"
296 die "Need missing USE flag '${myflag}' in ${myforeign}"
297 fi
298 }
299
300 EXPORT_FUNCTIONS pkg_setup

  ViewVC Help
Powered by ViewVC 1.1.20