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

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

  ViewVC Help
Powered by ViewVC 1.1.20