/[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.29
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2005 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.29 2007/01/01 22:27:01 swegener 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
12# automatic RDEPEND=DEPEND that portage does if you use this eclass.
13# See bug 107127 for more information.
14
15######
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##
29####
30#APACHE_VERSION='2'
31
32####
33## APXS1, APXS2
34##
35## Paths to the apxs tools
36####
37APXS1="/usr/sbin/apxs"
38APXS2="/usr/sbin/apxs2"
39
40####
41## APACHECTL1, APACHECTL2
42##
43## Paths to the apachectl tools
44####
45APACHECTL1="/usr/sbin/apachectl"
46APACHECTL2="/usr/sbin/apache2ctl"
47
48####
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"
55
56####
57## APACHE1_CONFDIR, APACHE2_CONFDIR
58##
59## Paths to the configuration file directories (usually under
60## $APACHE?_BASEDIR/conf)
61####
62APACHE1_CONFDIR="/etc/apache"
63APACHE2_CONFDIR="/etc/apache2"
64
65####
66## APACHE1_MODULES_CONFDIR, APACHE2_MODULES_CONFDIR
67##
68## Paths where module configuration files are kept
69####
70APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d"
71APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d"
72
73####
74## APACHE1_VHOSTDIR, APACHE2_VHOSTDIR
75##
76## Paths where virtual host configuration files are kept
77####
78APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d"
79APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d"
80
81####
82## APACHE1_MODULESDIR, APACHE2_MODULESDIR
83##
84## Paths where we install modules
85####
86APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules"
87APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules"
88
89####
90## APACHE1_DEPEND, APACHE2_DEPEND
91## APACHE2_0_DEPEND, APACHE2_2_DEPEND
92##
93## Dependencies for apache 1.x and apache 2.x
94####
95APACHE1_DEPEND="=net-www/apache-1*"
96APACHE2_DEPEND="=net-www/apache-2*"
97APACHE2_0_DEPEND="=net-www/apache-2.0*"
98APACHE2_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
107NEED_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} ) !apache2? ( ${APACHE1_DEPEND} )"
108WANT_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
116uses_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"
14 USE_APACHE2= 122 USE_APACHE2=
15 USE_APACHE_MULTIPLE= 123 APACHECTL="${APACHECTL1}"
16 124 APACHE_BASEDIR="${APACHE1_BASEDIR}"
17 useq apache2 && USE_APACHE2=1 125 APACHE_CONFDIR="${APACHE1_CONFDIR}"
18 useq apache && USE_APACHE1=1 126 APACHE_MODULES_CONFDIR="${APACHE1_MODULES_CONFDIR}"
19 127 APACHE_VHOSTSDIR="${APACHE1_VHOSTSDIR}"
20 [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1 128 APACHE_MODULESDIR="${APACHE1_MODULESDIR}"
21} 129}
22 130
23detect_apache_installed() { 131####
24 HAS_APACHE1= 132# uses_apache2()
133#
134# sets up all of the environment variables required by an apache2 module
135####
136
137uses_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'
25 HAS_APACHE2= 142 USE_APACHE2=2
26 HAS_APACHE_MULTIPLE= 143 APXS="$APXS2"
27 HAS_APACHE_ANY= 144 APACHECTL="${APACHECTL2}"
28 145 APACHE_BASEDIR="${APACHE2_BASEDIR}"
29 has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 146 APACHE_CONFDIR="${APACHE2_CONFDIR}"
30 has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 147 APACHE_MODULES_CONFDIR="${APACHE2_MODULES_CONFDIR}"
31 148 APACHE_VHOSTSDIR="${APACHE2_VHOSTSDIR}"
32 [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 149 APACHE_MODULESDIR="${APACHE2_MODULESDIR}"
33} 150}
34 151
35# call this function from your pkg_setup 152doesnt_use_apache() {
153 debug-print-function $FUNCNAME $*
154 APACHE_VERSION='0'
155 USE_APACHE=
156}
36 157
158####
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####
167need_apache1() {
168 debug-print-function $FUNCNAME $*
169
170 DEPEND="${DEPEND} ${APACHE1_DEPEND}"
171 RDEPEND="${RDEPEND} ${APACHE1_DEPEND}"
172 APACHE_VERSION='1'
173}
174
175####
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## line need_apache2 somewhere.
183####
184need_apache2() {
185 debug-print-function $FUNCNAME $*
186
187 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
188 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
189 APACHE_VERSION='2'
190}
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####
200need_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####
215need_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
37depend_apache() { 237need_apache() {
38 detect_apache_installed 238 debug-print-function $FUNCNAME $*
39 detect_apache_useflags
40 239
41 # deal with the multiple cases first - much easier 240 local supports13 supports20 supports22 supports2x
42 if [ -n "$USE_APACHE_MULTIPLE" ]; then 241
43 echo 242 if [ $# -eq 0 ]; then
44 eerror "You have both the apache and apache2 USE flags set" 243 supports13=yes
45 eerror 244 supports2x=yes
46 eerror "Please set only ONE of these USE flags, and try again" 245 else
47 echo 246 while [ $# -gt 0 ]; do
48 die "Multiple Apache USE flags set - you can only have one set at a time" 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
49 fi 255 fi
50 256
51 if [ -n "$USE_APACHE2" ] ; then 257 if [[ "${supports20}" == "yes" && "${supports22}" == "yes" ]]; then
52 if [ -z "$HAS_APACHE2" -a -n "$HAS_APACHE_ANY" ] ; then 258 supports2x=yes;
53 echo 259 fi
54 eerror "You have the 'apache2' USE flag set, but only have Apache v1 installed" 260
55 eerror "If you really meant to upgrade to Apache v2, please install Apache v2" 261 debug-print "supports13: ${supports13}"
56 eerror "before installing $CATEGORY/${PN}-${PVR}" 262 debug-print "supports20: ${supports20}"
57 echo 263 debug-print "supports22: ${supports22}"
58 die "Automatic upgrade of Apache would be forced; avoiding" 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
59 else 300 else
60 einfo "Apache 2 support enabled" 301 need_apache1
61 DETECT_APACHE=2
62 return
63 fi 302 fi
64 fi 303 fi
65 304
66 if [ -n "$USE_APACHE1" ]; then 305}
67 if [ -z "$HAS_APACHE1" -a -n "$HAS_APACHE_ANY" ]; then 306
68 echo 307want_apache() {
69 eerror "You have the 'apache' USE flag set, but only have a later version of" 308 debug-print-function $FUNCNAME $*
70 eerror "Apache installed on your computer. Please use the 'apache2' USE flag" 309
71 eerror "or downgrade to Apache v1 before installing $CATEGORY/${PN}-${PVR}" 310 IUSE="${IUSE} apache apache2"
72 echo 311 DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}"
73 die "Avoiding installing older version of Apache" 312 RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}"
313 if useq apache2 ; then
314 uses_apache2
315 elif useq apache ; then
316 uses_apache1
74 else 317 else
75 einfo "Apache 1 support enabled" 318 doesnt_use_apache
76 DETECT_APACHE=1
77 return
78 fi
79 fi 319 fi
80} 320}
81

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

  ViewVC Help
Powered by ViewVC 1.1.20