| 1 | # Copyright 2004 Gentoo Foundation |
1 | # Copyright 1999-2005 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License, v2 or later |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # Author Michael Tindal <urilith@gentoo.org> |
|
|
| 4 | # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.6 2004/11/21 01:51:58 urilith Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.28 2006/11/26 21:25:28 vericgar Exp $ |
| 5 | ECLASS=depend.apache |
4 | |
| 6 | INHERITED="$INHERITED $ECLASS" |
5 | inherit multilib |
|
|
6 | |
|
|
7 | # This eclass handles depending on apache in a sane way and providing |
|
|
8 | # information about where certain interfaces are located. |
|
|
9 | |
|
|
10 | # NOTE: If you use this, be sure you use the need_* call after you have |
|
|
11 | # defined DEPEND and RDEPEND. Also note that you can not rely on the |
|
|
12 | # automatic RDEPEND=DEPEND that portage does if you use this eclass. |
|
|
13 | # See bug 107127 for more information. |
| 7 | |
14 | |
| 8 | ###### |
15 | ###### |
| 9 | ## Apache Common Variables |
16 | ## Apache Common Variables |
| 10 | ## |
17 | ## |
| 11 | ## These are internal variables used by this, and other apache-related eclasses, |
18 | ## These are internal variables used by this, and other apache-related eclasses, |
| … | |
… | |
| 16 | #### |
23 | #### |
| 17 | ## APACHE_VERSION |
24 | ## APACHE_VERSION |
| 18 | ## |
25 | ## |
| 19 | ## Stores the version of apache we are going to be ebuilding. This variable is |
26 | ## Stores the version of apache we are going to be ebuilding. This variable is |
| 20 | ## set by the need_apache{|1|2} functions. |
27 | ## set by the need_apache{|1|2} functions. |
|
|
28 | ## |
| 21 | #### |
29 | #### |
| 22 | APACHE_VERSION='2' |
30 | #APACHE_VERSION='2' |
| 23 | |
31 | |
| 24 | #### |
32 | #### |
| 25 | ## APXS1, APXS2 |
33 | ## APXS1, APXS2 |
| 26 | ## |
34 | ## |
| 27 | ## Paths to the apxs tools |
35 | ## Paths to the apxs tools |
| … | |
… | |
| 40 | #### |
48 | #### |
| 41 | ## APACHE1_BASEDIR, APACHE2_BASEDIR |
49 | ## APACHE1_BASEDIR, APACHE2_BASEDIR |
| 42 | ## |
50 | ## |
| 43 | ## Paths to the server root directories |
51 | ## Paths to the server root directories |
| 44 | #### |
52 | #### |
| 45 | APACHE1_BASEDIR="/usr/lib/apache" |
53 | APACHE1_BASEDIR="/usr/$(get_libdir)/apache" |
| 46 | APACHE2_BASEDIR="/usr/lib/apache2" |
54 | APACHE2_BASEDIR="/usr/$(get_libdir)/apache2" |
| 47 | |
55 | |
| 48 | #### |
56 | #### |
| 49 | ## APACHE1_CONFDIR, APACHE2_CONFDIR |
57 | ## APACHE1_CONFDIR, APACHE2_CONFDIR |
| 50 | ## |
58 | ## |
| 51 | ## Paths to the configuration file directories (usually under |
59 | ## Paths to the configuration file directories (usually under |
| … | |
… | |
| 61 | #### |
69 | #### |
| 62 | APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d" |
70 | APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d" |
| 63 | APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d" |
71 | APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d" |
| 64 | |
72 | |
| 65 | #### |
73 | #### |
| 66 | ## APACHE1_MODULES_VHOSTDIR, APACHE2_MODULES_VHOSTDIR |
74 | ## APACHE1_VHOSTDIR, APACHE2_VHOSTDIR |
| 67 | ## |
75 | ## |
| 68 | ## Paths where virtual host configuration files are kept |
76 | ## Paths where virtual host configuration files are kept |
| 69 | #### |
77 | #### |
| 70 | APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d" |
78 | APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d" |
| 71 | APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d" |
79 | APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d" |
| … | |
… | |
| 78 | APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules" |
86 | APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules" |
| 79 | APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules" |
87 | APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules" |
| 80 | |
88 | |
| 81 | #### |
89 | #### |
| 82 | ## APACHE1_DEPEND, APACHE2_DEPEND |
90 | ## APACHE1_DEPEND, APACHE2_DEPEND |
|
|
91 | ## APACHE2_0_DEPEND, APACHE2_2_DEPEND |
| 83 | ## |
92 | ## |
| 84 | ## Dependencies for apache 1.x and apache 2.x |
93 | ## Dependencies for apache 1.x and apache 2.x |
| 85 | #### |
94 | #### |
| 86 | APACHE1_DEPEND="=net-www/apache-1*" |
95 | APACHE1_DEPEND="=net-www/apache-1*" |
| 87 | APACHE2_DEPEND="=net-www/apache-2*" |
96 | APACHE2_DEPEND="=net-www/apache-2*" |
|
|
97 | APACHE2_0_DEPEND="=net-www/apache-2.0*" |
|
|
98 | APACHE2_2_DEPEND="=net-www/apache-2.2*" |
|
|
99 | |
|
|
100 | #### |
|
|
101 | ## NEED_APACHE_DEPEND |
|
|
102 | ## |
|
|
103 | ## Dependency magic based on useflags to use the right DEPEND |
|
|
104 | ## If you change this, please check the DEPENDS in need_apache() |
|
|
105 | #### |
|
|
106 | |
|
|
107 | NEED_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} ) !apache2? ( ${APACHE1_DEPEND} )" |
|
|
108 | WANT_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} ) !apache2? ( apache? ( ${APACHE1_DEPEND} ) )" |
|
|
109 | |
|
|
110 | #### |
|
|
111 | # uses_apache1() |
|
|
112 | # |
|
|
113 | # sets up all of the environment variables required by an apache1 module |
|
|
114 | #### |
|
|
115 | |
|
|
116 | uses_apache1() { |
|
|
117 | debug-print-function $FUNCNAME $* |
|
|
118 | # WARNING: Do not use these variables with anything that is put |
|
|
119 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
120 | APACHE_VERSION='1' |
|
|
121 | APXS="$APXS1" |
|
|
122 | USE_APACHE2= |
|
|
123 | APACHECTL="${APACHECTL1}" |
|
|
124 | APACHE_BASEDIR="${APACHE1_BASEDIR}" |
|
|
125 | APACHE_CONFDIR="${APACHE1_CONFDIR}" |
|
|
126 | APACHE_MODULES_CONFDIR="${APACHE1_MODULES_CONFDIR}" |
|
|
127 | APACHE_VHOSTSDIR="${APACHE1_VHOSTSDIR}" |
|
|
128 | APACHE_MODULESDIR="${APACHE1_MODULESDIR}" |
|
|
129 | } |
|
|
130 | |
|
|
131 | #### |
|
|
132 | # uses_apache2() |
|
|
133 | # |
|
|
134 | # sets up all of the environment variables required by an apache2 module |
|
|
135 | #### |
|
|
136 | |
|
|
137 | uses_apache2() { |
|
|
138 | debug-print-function $FUNCNAME $* |
|
|
139 | # WARNING: Do not use these variables with anything that is put |
|
|
140 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
141 | APACHE_VERSION='2' |
|
|
142 | USE_APACHE2=2 |
|
|
143 | APXS="$APXS2" |
|
|
144 | APACHECTL="${APACHECTL2}" |
|
|
145 | APACHE_BASEDIR="${APACHE2_BASEDIR}" |
|
|
146 | APACHE_CONFDIR="${APACHE2_CONFDIR}" |
|
|
147 | APACHE_MODULES_CONFDIR="${APACHE2_MODULES_CONFDIR}" |
|
|
148 | APACHE_VHOSTSDIR="${APACHE2_VHOSTSDIR}" |
|
|
149 | APACHE_MODULESDIR="${APACHE2_MODULESDIR}" |
|
|
150 | } |
|
|
151 | |
|
|
152 | doesnt_use_apache() { |
|
|
153 | debug-print-function $FUNCNAME $* |
|
|
154 | APACHE_VERSION='0' |
|
|
155 | USE_APACHE= |
|
|
156 | } |
| 88 | |
157 | |
| 89 | #### |
158 | #### |
| 90 | ## need_apache1 |
159 | ## need_apache1 |
| 91 | ## |
160 | ## |
| 92 | ## An ebuild calls this to get the dependency information |
161 | ## An ebuild calls this to get the dependency information |
| … | |
… | |
| 94 | ## future changes to the build infrastructure to happen |
163 | ## future changes to the build infrastructure to happen |
| 95 | ## seamlessly. All an ebuild needs to do is include the |
164 | ## seamlessly. All an ebuild needs to do is include the |
| 96 | ## line need_apache1 somewhere. |
165 | ## line need_apache1 somewhere. |
| 97 | #### |
166 | #### |
| 98 | need_apache1() { |
167 | need_apache1() { |
| 99 | debug-print-function need_apache1 |
168 | debug-print-function $FUNCNAME $* |
| 100 | |
169 | |
| 101 | DEPEND="${DEPEND} ${APACHE1_DEPEND}" |
170 | DEPEND="${DEPEND} ${APACHE1_DEPEND}" |
|
|
171 | RDEPEND="${RDEPEND} ${APACHE1_DEPEND}" |
| 102 | APACHE_VERSION='1' |
172 | APACHE_VERSION='1' |
| 103 | } |
173 | } |
| 104 | |
174 | |
| 105 | #### |
175 | #### |
| 106 | ## need_apache2 |
176 | ## need_apache2 |
| 107 | ## |
177 | ## |
| 108 | ## An ebuild calls this to get the dependency information |
178 | ## An ebuild calls this to get the dependency information |
| 109 | ## for apache-2.x. An ebuild should use this in order for |
179 | ## for apache-2.x. An ebuild should use this in order for |
| 110 | ## future changes to the build infrastructure to happen |
180 | ## future changes to the build infrastructure to happen |
| 111 | ## seamlessly. All an ebuild needs to do is include the |
181 | ## seamlessly. All an ebuild needs to do is include the |
| 112 | ## line need_apache1 somewhere. |
182 | ## line need_apache2 somewhere. |
| 113 | #### |
183 | #### |
| 114 | need_apache2() { |
184 | need_apache2() { |
| 115 | debug-print-function need_apache2 |
185 | debug-print-function $FUNCNAME $* |
| 116 | |
186 | |
| 117 | DEPEND="${DEPEND} ${APACHE2_DEPEND}" |
187 | DEPEND="${DEPEND} ${APACHE2_DEPEND}" |
|
|
188 | RDEPEND="${RDEPEND} ${APACHE2_DEPEND}" |
| 118 | APACHE_VERSION='2' |
189 | APACHE_VERSION='2' |
| 119 | } |
190 | } |
| 120 | |
191 | |
|
|
192 | #### |
|
|
193 | ## need_apache2_0 |
|
|
194 | ## |
|
|
195 | ## Works like need_apache2 above, but its used by modules |
|
|
196 | ## that only support apache 2.0 and do not work with |
|
|
197 | ## higher versions |
|
|
198 | ## |
|
|
199 | #### |
|
|
200 | need_apache2_0() { |
|
|
201 | debug-print-function $FUNCNAME $* |
|
|
202 | |
|
|
203 | DEPEND="${DEPEND} ${APACHE2_0_DEPEND}" |
|
|
204 | RDEPEND="${RDEPEND} ${APACHE2_0_DEPEND}" |
|
|
205 | APACHE_VERSION='2' |
|
|
206 | } |
|
|
207 | |
|
|
208 | #### |
|
|
209 | ## need_apache2_2 |
|
|
210 | ## |
|
|
211 | ## Works like need_apache2 above, but its used by modules |
|
|
212 | ## that only support apache 2.2. |
|
|
213 | ## |
|
|
214 | #### |
|
|
215 | need_apache2_2() { |
|
|
216 | debug-print-function $FUNCNAME $* |
|
|
217 | |
|
|
218 | DEPEND="${DEPEND} ${APACHE2_2_DEPEND}" |
|
|
219 | RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}" |
|
|
220 | APACHE_VERSION='2' |
|
|
221 | } |
|
|
222 | |
|
|
223 | #### |
|
|
224 | ## DO NOT CHANGE THIS FUNCTION UNLESS YOU UNDERSTAND THE CONSEQUENCES IT |
|
|
225 | ## WILL HAVE ON THE CACHE! There MUST be a apache2? () block in DEPEND for |
|
|
226 | ## things to work correct in the dependency calculation stage. |
|
|
227 | ## |
|
|
228 | ## This function can take a variable amount of arguments specifying the |
|
|
229 | ## versions of apache the ebuild supports |
|
|
230 | ## |
|
|
231 | ## If no arguments are specified, then all versions are assumed to be supported |
|
|
232 | ## |
|
|
233 | ## If both 1.3 and 2.x are specified, the apache2 USE-flag will be used in |
|
|
234 | ## DEPEND/RDEPEND to determine which version to use. |
|
|
235 | ## |
|
|
236 | ## Currently supported versions: 1.3 2.0 2.2 2.x |
| 121 | need_apache() { |
237 | need_apache() { |
| 122 | debug-print-function need_apache |
238 | debug-print-function $FUNCNAME $* |
| 123 | |
239 | |
| 124 | IUSE="${IUSE} apache2" |
240 | local supports13 supports20 supports22 supports2x |
| 125 | if useq apache2; then |
241 | |
| 126 | need_apache2 |
242 | if [ $# -eq 0 ]; then |
|
|
243 | supports13=yes |
|
|
244 | supports2x=yes |
| 127 | else |
245 | else |
| 128 | need_apache1 |
246 | while [ $# -gt 0 ]; do |
|
|
247 | case "$1" in |
|
|
248 | 1.3) supports13=yes; shift;; |
|
|
249 | 2.0) supports20=yes; shift;; |
|
|
250 | 2.2) supports22=yes; shift;; |
|
|
251 | 2.x) supports2x=yes; shift;; |
|
|
252 | *) die "Unknown version specifier: $1";; |
|
|
253 | esac |
|
|
254 | done |
| 129 | fi |
255 | fi |
| 130 | } |
|
|
| 131 | |
256 | |
|
|
257 | if [[ "${supports20}" == "yes" && "${supports22}" == "yes" ]]; then |
|
|
258 | supports2x=yes; |
|
|
259 | fi |
|
|
260 | |
|
|
261 | debug-print "supports13: ${supports13}" |
|
|
262 | debug-print "supports20: ${supports20}" |
|
|
263 | debug-print "supports22: ${supports22}" |
|
|
264 | debug-print "supports2x: ${supports2x}" |
|
|
265 | |
|
|
266 | if [ "${supports13}" != "yes" ]; then |
|
|
267 | if [ "${supports2x}" == "yes" ]; then |
|
|
268 | need_apache2 |
|
|
269 | elif [ "${supports20}" == "yes" ]; then |
|
|
270 | need_apache2_0 |
|
|
271 | elif [ "${supports22}" == "yes" ]; then |
|
|
272 | need_apache2_2 |
|
|
273 | fi |
|
|
274 | elif [ "${supports13}" == "yes" ]; then |
|
|
275 | if [[ "${supports2x}" == "yes" || |
|
|
276 | "${supports20}" == "yes" || |
|
|
277 | "${supports22}" == "yes" ]]; then |
|
|
278 | |
|
|
279 | # we support both apache-1.3 and apache-2.*, set up USE-flag based |
|
|
280 | # DEPEND and RDEPEND, determined by which apache-2.x we support |
|
|
281 | |
|
|
282 | IUSE="${IUSE} apache2" |
|
|
283 | |
|
|
284 | if [ "${supports2x}" != "yes" ]; then |
|
|
285 | if [ "${supports20}" == "yes" ]; then |
|
|
286 | NEED_APACHE_DEPEND="apache2? ( ${APACHE2_0_DEPEND} ) !apache2? ( ${APACHE1_DEPEND} )" |
|
|
287 | elif [ "${supports22}" == "yes" ]; then |
|
|
288 | NEED_APACHE_DEPEND="apache2? ( ${APACHE2_2_DEPEND} ) !apache2? ( ${APACHE1_DEPEND} )" |
|
|
289 | fi |
|
|
290 | fi |
|
|
291 | |
|
|
292 | DEPEND="${DEPEND} ${NEED_APACHE_DEPEND}" |
|
|
293 | RDEPEND="${RDEPEND} ${NEED_APACHE_DEPEND}" |
|
|
294 | |
|
|
295 | if useq apache2; then |
|
|
296 | uses_apache2 |
|
|
297 | else |
|
|
298 | uses_apache1 |
|
|
299 | fi |
|
|
300 | else |
|
|
301 | need_apache1 |
|
|
302 | fi |
|
|
303 | fi |
|
|
304 | |
|
|
305 | } |
|
|
306 | |
|
|
307 | want_apache() { |
|
|
308 | debug-print-function $FUNCNAME $* |
|
|
309 | |
|
|
310 | IUSE="${IUSE} apache apache2" |
|
|
311 | DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}" |
|
|
312 | RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}" |
|
|
313 | if useq apache2 ; then |
|
|
314 | uses_apache2 |
|
|
315 | elif useq apache ; then |
|
|
316 | uses_apache1 |
|
|
317 | else |
|
|
318 | doesnt_use_apache |
|
|
319 | fi |
|
|
320 | } |