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

Contents of /eclass/depend.apache.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.28 - (hide annotations) (download)
Sun Nov 26 21:25:28 2006 UTC (8 years ago) by vericgar
Branch: MAIN
Changes since 1.27: +124 -23 lines
Add support for depending on more specific versions of apache, this is needed for modules that don't support Apache 2.2. Also corrected all debug-print-function calls

1 stuart 1.20 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 vericgar 1.28 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.27 2006/07/05 14:12:51 chtekk Exp $
4 vericgar 1.22
5     inherit multilib
6 stuart 1.2
7 vericgar 1.25 # 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 swegener 1.26 # defined DEPEND and RDEPEND. Also note that you can not rely on the
12 vericgar 1.25 # automatic RDEPEND=DEPEND that portage does if you use this eclass.
13     # See bug 107127 for more information.
14    
15 urilith 1.6 ######
16     ## Apache Common Variables
17     ##
18     ## These are internal variables used by this, and other apache-related eclasses,
19     ## and thus should not need to be used by the ebuilds themselves (the ebuilds
20     ## should know what version of Apache they are building against).
21     ######
22    
23     ####
24     ## APACHE_VERSION
25     ##
26     ## Stores the version of apache we are going to be ebuilding. This variable is
27     ## set by the need_apache{|1|2} functions.
28 vericgar 1.9 ##
29 urilith 1.6 ####
30 vericgar 1.28 #APACHE_VERSION='2'
31 urilith 1.6
32     ####
33     ## APXS1, APXS2
34     ##
35     ## Paths to the apxs tools
36     ####
37     APXS1="/usr/sbin/apxs"
38     APXS2="/usr/sbin/apxs2"
39    
40     ####
41     ## APACHECTL1, APACHECTL2
42     ##
43     ## Paths to the apachectl tools
44     ####
45     APACHECTL1="/usr/sbin/apachectl"
46     APACHECTL2="/usr/sbin/apache2ctl"
47    
48     ####
49     ## APACHE1_BASEDIR, APACHE2_BASEDIR
50     ##
51     ## Paths to the server root directories
52     ####
53 vericgar 1.24 APACHE1_BASEDIR="/usr/$(get_libdir)/apache"
54     APACHE2_BASEDIR="/usr/$(get_libdir)/apache2"
55 urilith 1.6
56     ####
57     ## APACHE1_CONFDIR, APACHE2_CONFDIR
58     ##
59     ## Paths to the configuration file directories (usually under
60     ## $APACHE?_BASEDIR/conf)
61     ####
62     APACHE1_CONFDIR="/etc/apache"
63     APACHE2_CONFDIR="/etc/apache2"
64    
65     ####
66     ## APACHE1_MODULES_CONFDIR, APACHE2_MODULES_CONFDIR
67     ##
68     ## Paths where module configuration files are kept
69     ####
70     APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d"
71     APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d"
72    
73     ####
74 vericgar 1.21 ## APACHE1_VHOSTDIR, APACHE2_VHOSTDIR
75 urilith 1.6 ##
76     ## Paths where virtual host configuration files are kept
77     ####
78     APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d"
79     APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d"
80    
81     ####
82     ## APACHE1_MODULESDIR, APACHE2_MODULESDIR
83     ##
84     ## Paths where we install modules
85     ####
86     APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules"
87     APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules"
88    
89     ####
90     ## APACHE1_DEPEND, APACHE2_DEPEND
91 vericgar 1.28 ## APACHE2_0_DEPEND, APACHE2_2_DEPEND
92 urilith 1.6 ##
93     ## Dependencies for apache 1.x and apache 2.x
94     ####
95     APACHE1_DEPEND="=net-www/apache-1*"
96 vericgar 1.28 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 vericgar 1.7
100 vericgar 1.9 ####
101 vericgar 1.28 ## NEED_APACHE_DEPEND
102 vericgar 1.9 ##
103     ## Dependency magic based on useflags to use the right DEPEND
104 vericgar 1.28 ## If you change this, please check the DEPENDS in need_apache()
105 vericgar 1.9 ####
106    
107 stuart 1.20 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 vericgar 1.28 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 stuart 1.20 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 vericgar 1.28 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 stuart 1.20 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 vericgar 1.28 debug-print-function $FUNCNAME $*
154 stuart 1.20 APACHE_VERSION='0'
155     USE_APACHE=
156     }
157 vericgar 1.9
158 urilith 1.6 ####
159     ## need_apache1
160     ##
161     ## An ebuild calls this to get the dependency information
162     ## for apache-1.x. An ebuild should use this in order for
163     ## future changes to the build infrastructure to happen
164     ## seamlessly. All an ebuild needs to do is include the
165     ## line need_apache1 somewhere.
166     ####
167     need_apache1() {
168 vericgar 1.28 debug-print-function $FUNCNAME $*
169 stuart 1.1
170 urilith 1.6 DEPEND="${DEPEND} ${APACHE1_DEPEND}"
171 vericgar 1.10 RDEPEND="${RDEPEND} ${APACHE1_DEPEND}"
172 urilith 1.6 APACHE_VERSION='1'
173 stuart 1.1 }
174    
175 urilith 1.6 ####
176     ## need_apache2
177     ##
178     ## An ebuild calls this to get the dependency information
179     ## for apache-2.x. An ebuild should use this in order for
180     ## future changes to the build infrastructure to happen
181     ## seamlessly. All an ebuild needs to do is include the
182 vericgar 1.28 ## line need_apache2 somewhere.
183 urilith 1.6 ####
184     need_apache2() {
185 vericgar 1.28 debug-print-function $FUNCNAME $*
186 stuart 1.1
187 urilith 1.6 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
188 vericgar 1.10 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
189 urilith 1.6 APACHE_VERSION='2'
190 stuart 1.1 }
191    
192 vericgar 1.9 ####
193 vericgar 1.28 ## 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 swegener 1.18 ## DO NOT CHANGE THIS FUNCTION UNLESS YOU UNDERSTAND THE CONSEQUENCES IT
225 vericgar 1.9 ## 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 vericgar 1.28 ##
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
237 urilith 1.6 need_apache() {
238 vericgar 1.28 debug-print-function $FUNCNAME $*
239 stuart 1.1
240 vericgar 1.28 local supports13 supports20 supports22 supports2x
241    
242     if [ $# -eq 0 ]; then
243     supports13=yes
244     supports2x=yes
245 stuart 1.20 else
246 vericgar 1.28 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
255     fi
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 stuart 1.20 fi
304 vericgar 1.28
305 stuart 1.20 }
306    
307     want_apache() {
308 vericgar 1.28 debug-print-function $FUNCNAME $*
309 stuart 1.20
310     IUSE="${IUSE} apache apache2"
311     DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}"
312 chtekk 1.27 RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}"
313 stuart 1.20 if useq apache2 ; then
314     uses_apache2
315     elif useq apache ; then
316     uses_apache1
317 urilith 1.6 else
318 stuart 1.20 doesnt_use_apache
319 stuart 1.1 fi
320     }

  ViewVC Help
Powered by ViewVC 1.1.20