/[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.42
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.42 2008/02/06 21:20:41 hollow Exp $
4 4
5ECLASS="depend.apache" 5# @ECLASS: depend.apache.eclass
6INHERITED="$INHERITED $ECLASS" 6# @MAINTAINER: apache-devs@gentoo.org
7IUSE="apache apache2" 7# @BLURB: Functions to allow ebuilds to depend on apache
8# @DESCRIPTION:
9# This eclass handles depending on apache in a sane way and provides information
10# about where certain binaries and configuration files are located.
11#
12# To make use of this eclass simply call one of the need/want_apache functions
13# described below. Make sure you use the need/want_apache call after you have
14# defined DEPEND and RDEPEND. Also note that you can not rely on the automatic
15# RDEPEND=DEPEND that portage does if you use this eclass.
16#
17# See Bug 107127 for more information.
18#
19# @EXAMPLE:
20#
21# Here is an example of an ebuild depending on apache:
22#
23# @CODE
24# DEPEND="virtual/Perl-CGI"
25# RDEPEND="${DEPEND}"
26# need_apache2
27# @CODE
28#
29# Another example which demonstrates non-standard IUSE options for optional
30# apache support:
31#
32# @CODE
33# DEPEND="server? ( virtual/Perl-CGI )"
34# RDEPEND="${DEPEND}"
35# want_apache2 server
36# @CODE
8 37
9# call this function to work out which version of the apache web server 38inherit multilib
10# your ebuild should be installing itself to use
11 39
12detect_apache_useflags() { 40# ==============================================================================
13 USE_APACHE1= 41# INTERNAL VARIABLES
14 USE_APACHE2= 42# ==============================================================================
15 USE_APACHE_MULTIPLE=
16 43
17 useq apache2 && USE_APACHE2=1 44# @ECLASS-VARIABLE: APACHE_VERSION
18 useq apache && USE_APACHE1=1 45# @DESCRIPTION:
46# Stores the version of apache we are going to be ebuilding.
47# This variable is set by the want/need_apache functions.
19 48
20 [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1 49# @ECLASS-VARIABLE: APXS
21} 50# @DESCRIPTION:
51# Path to the apxs tool.
52# This variable is set by the want/need_apache functions.
22 53
23detect_apache_installed() { 54# @ECLASS-VARIABLE: APACHE_BIN
24 HAS_APACHE1= 55# @DESCRIPTION:
25 HAS_APACHE2= 56# Path to the apache binary.
26 HAS_APACHE_MULTIPLE= 57# This variable is set by the want/need_apache functions.
27 HAS_APACHE_ANY=
28 58
29 has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 59# @ECLASS-VARIABLE: APACHE_CTL
30 has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 60# @DESCRIPTION:
61# Path to the apachectl tool.
62# This variable is set by the want/need_apache functions.
31 63
32 [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 64# @ECLASS-VARIABLE: APACHE_BASEDIR
33} 65# @DESCRIPTION:
66# Path to the server root directory.
67# This variable is set by the want/need_apache functions.
34 68
35# call this function from your pkg_setup 69# @ECLASS-VARIABLE: APACHE_CONFDIR
70# @DESCRIPTION:
71# Path to the configuration file directory.
72# This variable is set by the want/need_apache functions.
36 73
74# @ECLASS-VARIABLE: APACHE_MODULES_CONFDIR
75# @DESCRIPTION:
76# Path where module configuration files are kept.
77# This variable is set by the want/need_apache functions.
78
79# @ECLASS-VARIABLE: APACHE_VHOSTS_CONFDIR
80# @DESCRIPTION:
81# Path where virtual host configuration files are kept.
82# This variable is set by the want/need_apache functions.
83
84# @ECLASS-VARIABLE: APACHE_MODULESDIR
85# @DESCRIPTION:
86# Path where we install modules.
87# This variable is set by the want/need_apache functions.
88
89# @ECLASS-VARIABLE: APACHE_DEPEND
90# @DESCRIPTION:
91# Dependencies for Apache
92APACHE_DEPEND="www-servers/apache"
93
94# @ECLASS-VARIABLE: APACHE2_DEPEND
95# @DESCRIPTION:
96# Dependencies for Apache 2.x
97APACHE2_DEPEND="=www-servers/apache-2*"
98
99# @ECLASS-VARIABLE: APACHE2_2_DEPEND
100# @DESCRIPTION:
101# Dependencies for Apache 2.2.x
102APACHE2_2_DEPEND="=www-servers/apache-2.2*"
103
104# ==============================================================================
105# INTERNAL FUNCTIONS
106# ==============================================================================
107
108_init_apache2() {
109 debug-print-function $FUNCNAME $*
110
111 # WARNING: Do not use these variables with anything that is put
112 # into the dependency cache (DEPEND/RDEPEND/etc)
113 APACHE_VERSION="2"
114 APXS="/usr/sbin/apxs2"
115 APACHE_BIN="/usr/sbin/apache2"
116 APACHE_CTL="/usr/sbin/apache2ctl"
117 APACHE_INCLUDEDIR="/usr/include/apache2"
118 APACHE_BASEDIR="/usr/$(get_libdir)/apache2"
119 APACHE_CONFDIR="/etc/apache2"
120 APACHE_MODULES_CONFDIR="${APACHE_CONFDIR}/modules.d"
121 APACHE_VHOSTS_CONFDIR="${APACHE_CONFDIR}/vhosts.d"
122 APACHE_MODULESDIR="${APACHE_BASEDIR}/modules"
123}
124
125_init_no_apache() {
126 debug-print-function $FUNCNAME $*
127 APACHE_VERSION="0"
128}
129
130# ==============================================================================
131# PUBLIC FUNCTIONS
132# ==============================================================================
133
134# @FUNCTION: want_apache
135# @USAGE: [myiuse]
136# @DESCRIPTION:
137# An ebuild calls this to get the dependency information for optional apache
138# support. If the myiuse parameter is not given it defaults to apache2.
139want_apache() {
140 debug-print-function $FUNCNAME $*
141 want_apache2 "$@"
142}
143
144# @FUNCTION: want_apache2
145# @USAGE: [myiuse]
146# @DESCRIPTION:
147# An ebuild calls this to get the dependency information for optional apache-2.x
148# support. If the myiuse parameter is not given it defaults to apache2.
149want_apache2() {
150 debug-print-function $FUNCNAME $*
151
152 local myiuse=${1:-apache2}
153 IUSE="${IUSE} ${myiuse}"
154 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
155 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
156
157 if use ${myiuse} ; then
158 _init_apache2
159 else
160 _init_no_apache
161 fi
162}
163
164# @FUNCTION: want_apache2_2
165# @USAGE: [myiuse]
166# @DESCRIPTION:
167# An ebuild calls this to get the dependency information for optional
168# apache-2.2.x support. If the myiuse parameter is not given it defaults to
169# apache2.
170want_apache2_2() {
171 debug-print-function $FUNCNAME $*
172
173 local myiuse=${1:-apache2}
174 IUSE="${IUSE} ${myiuse}"
175 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
176 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
177
178 if use ${myiuse} ; then
179 _init_apache2
180 else
181 _init_no_apache
182 fi
183}
184
185# @FUNCTION: need_apache
186# @DESCRIPTION:
187# An ebuild calls this to get the dependency information for apache.
37depend_apache() { 188need_apache() {
38 detect_apache_installed 189 debug-print-function $FUNCNAME $*
39 detect_apache_useflags 190 need_apache2
191}
40 192
41 # deal with the multiple cases first - much easier 193# @FUNCTION: need_apache2
42 if [ -n "$USE_APACHE_MULTIPLE" ]; then 194# @DESCRIPTION:
195# An ebuild calls this to get the dependency information for apache-2.x.
196need_apache2() {
197 debug-print-function $FUNCNAME $*
198
199 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
200 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
201 _init_apache2
202}
203
204# @FUNCTION: need_apache2_2
205# @DESCRIPTION:
206# An ebuild calls this to get the dependency information for apache-2.2.x.
207need_apache2_2() {
208 debug-print-function $FUNCNAME $*
209
210 DEPEND="${DEPEND} ${APACHE2_2_DEPEND}"
211 RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}"
212 _init_apache2
213}
214
215# @FUNCTION: check_apache_threads
216# @USAGE: [myflag]
217# @DESCRIPTION:
218# An ebuild calls this to make sure thread-safety is enabled if apache has been
219# built with a threaded MPM. If the myflag parameter is not given it defaults to
220# threads.
221check_apache_threads() {
222 debug-print-function $FUNCNAME $*
223
224 if ! built_with_use www-servers/apache threads ; then
225 return
226 fi
227
228 local myflag="${1:-threads}"
229
230 if ! use ${myflag} ; then
43 echo 231 echo
44 eerror "You have both the apache and apache2 USE flags set" 232 eerror "You need to enable USE flag '${myflag}' to build a thread-safe version"
45 eerror 233 eerror "of ${CATEGORY}/${PN} for use with www-servers/apache"
46 eerror "Please set only ONE of these USE flags, and try again" 234 die "Need missing USE flag '${myflag}'"
235 fi
236}
237
238# @FUNCTION: check_apache_threads_in
239# @USAGE: <myforeign> [myflag]
240# @DESCRIPTION:
241# An ebuild calls this to make sure thread-safety is enabled in a foreign
242# package if apache has been built with a threaded MPM. If the myflag parameter
243# is not given it defaults to threads.
244check_apache_threads_in() {
245 debug-print-function $FUNCNAME $*
246
247 if ! built_with_use www-servers/apache threads ; then
248 return
249 fi
250
251 local myforeign="$1"
252 local myflag="${2:-threads}"
253
254 if ! built_with_use ${myforeign} ${myflag} ; then
47 echo 255 echo
48 die "Multiple Apache USE flags set - you can only have one set at a time" 256 eerror "You need to enable USE flag '${myflag}' in ${myforeign} to"
49 fi 257 eerror "build a thread-safe version of ${CATEGORY}/${PN} for use"
50 258 eerror "with www-servers/apache"
51 if [ -n "$USE_APACHE2" ] ; then 259 die "Need missing USE flag '${myflag}' in ${myforeign}"
52 if [ -z "$HAS_APACHE2" -a -n "$HAS_APACHE_ANY" ] ; then
53 echo
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
60 einfo "Apache 2 support enabled"
61 DETECT_APACHE=2
62 return
63 fi 260 fi
64 fi
65
66 if [ -n "$USE_APACHE1" ]; then
67 if [ -z "$HAS_APACHE1" -a -n "$HAS_APACHE_ANY" ]; then
68 echo
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
75 einfo "Apache 1 support enabled"
76 DETECT_APACHE=1
77 return
78 fi
79 fi
80} 261}
81

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

  ViewVC Help
Powered by ViewVC 1.1.20