/[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.41
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.41 2008/02/06 13:16:17 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 # legacy alias
118 APACHECTL="${APACHE_CTL}"
119 APACHE_BASEDIR="/usr/$(get_libdir)/apache2"
120 APACHE_CONFDIR="/etc/apache2"
121 APACHE_MODULES_CONFDIR="${APACHE_CONFDIR}/modules.d"
122 APACHE_VHOSTS_CONFDIR="${APACHE_CONFDIR}/vhosts.d"
123 APACHE_MODULESDIR="${APACHE_BASEDIR}/modules"
124}
125
126_init_no_apache() {
127 debug-print-function $FUNCNAME $*
128 APACHE_VERSION="0"
129}
130
131# ==============================================================================
132# PUBLIC FUNCTIONS
133# ==============================================================================
134
135# @FUNCTION: want_apache
136# @USAGE: [myiuse]
137# @DESCRIPTION:
138# An ebuild calls this to get the dependency information for optional apache
139# support. If the myiuse parameter is not given it defaults to apache2.
140want_apache() {
141 debug-print-function $FUNCNAME $*
142 want_apache2 "$@"
143}
144
145# @FUNCTION: want_apache2
146# @USAGE: [myiuse]
147# @DESCRIPTION:
148# An ebuild calls this to get the dependency information for optional apache-2.x
149# support. If the myiuse parameter is not given it defaults to apache2.
150want_apache2() {
151 debug-print-function $FUNCNAME $*
152
153 local myiuse=${1:-apache2}
154 IUSE="${IUSE} ${myiuse}"
155 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
156 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_DEPEND} )"
157
158 if use ${myiuse} ; then
159 _init_apache2
160 else
161 _init_no_apache
162 fi
163}
164
165# @FUNCTION: want_apache2_2
166# @USAGE: [myiuse]
167# @DESCRIPTION:
168# An ebuild calls this to get the dependency information for optional
169# apache-2.2.x support. If the myiuse parameter is not given it defaults to
170# apache2.
171want_apache2_2() {
172 debug-print-function $FUNCNAME $*
173
174 local myiuse=${1:-apache2}
175 IUSE="${IUSE} ${myiuse}"
176 DEPEND="${DEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
177 RDEPEND="${RDEPEND} ${myiuse}? ( ${APACHE2_2_DEPEND} )"
178
179 if use ${myiuse} ; then
180 _init_apache2
181 else
182 _init_no_apache
183 fi
184}
185
186# @FUNCTION: need_apache
187# @DESCRIPTION:
188# An ebuild calls this to get the dependency information for apache.
37depend_apache() { 189need_apache() {
38 detect_apache_installed 190 debug-print-function $FUNCNAME $*
39 detect_apache_useflags 191 need_apache2
192}
40 193
41 # deal with the multiple cases first - much easier 194# @FUNCTION: need_apache2
42 if [ -n "$USE_APACHE_MULTIPLE" ]; then 195# @DESCRIPTION:
196# An ebuild calls this to get the dependency information for apache-2.x.
197need_apache2() {
198 debug-print-function $FUNCNAME $*
199
200 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
201 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
202 _init_apache2
203}
204
205# @FUNCTION: need_apache2_2
206# @DESCRIPTION:
207# An ebuild calls this to get the dependency information for apache-2.2.x.
208need_apache2_2() {
209 debug-print-function $FUNCNAME $*
210
211 DEPEND="${DEPEND} ${APACHE2_2_DEPEND}"
212 RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}"
213 _init_apache2
214}
215
216# @FUNCTION: check_apache_threads
217# @USAGE: [myflag]
218# @DESCRIPTION:
219# An ebuild calls this to make sure thread-safety is enabled if apache has been
220# built with a threaded MPM. If the myflag parameter is not given it defaults to
221# threads.
222check_apache_threads() {
223 debug-print-function $FUNCNAME $*
224
225 if ! built_with_use www-servers/apache threads ; then
226 return
227 fi
228
229 local myflag="${1:-threads}"
230
231 if ! use ${myflag}; then
43 echo 232 echo
44 eerror "You have both the apache and apache2 USE flags set" 233 eerror "You need to enable USE flag '${myflag}' to build a thread-safe version"
45 eerror 234 eerror "of ${CATEGORY}/${PN} for use with www-servers/apache"
46 eerror "Please set only ONE of these USE flags, and try again" 235 die "Need missing USE flag '${myflag}'"
47 echo
48 die "Multiple Apache USE flags set - you can only have one set at a time"
49 fi
50
51 if [ -n "$USE_APACHE2" ] ; then
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 236 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} 237}
81

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

  ViewVC Help
Powered by ViewVC 1.1.20