| 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.44 2008/03/04 10:59:27 hollow Exp $ |
| 4 | |
4 | |
| 5 | ECLASS="depend.apache" |
5 | # @ECLASS: depend.apache.eclass |
| 6 | INHERITED="$INHERITED $ECLASS" |
6 | # @MAINTAINER: |
| 7 | IUSE="apache apache2" |
7 | # apache-devs@gentoo.org |
|
|
8 | # @BLURB: Functions to allow ebuilds to depend on apache |
|
|
9 | # @DESCRIPTION: |
|
|
10 | # This eclass handles depending on apache in a sane way and provides information |
|
|
11 | # about where certain binaries and configuration files are located. |
|
|
12 | # |
|
|
13 | # To make use of this eclass simply call one of the need/want_apache functions |
|
|
14 | # described below. Make sure you use the need/want_apache call after you have |
|
|
15 | # defined DEPEND and RDEPEND. Also note that you can not rely on the automatic |
|
|
16 | # RDEPEND=DEPEND that portage does if you use this eclass. |
|
|
17 | # |
|
|
18 | # See Bug 107127 for more information. |
|
|
19 | # |
|
|
20 | # @EXAMPLE: |
|
|
21 | # |
|
|
22 | # Here is an example of an ebuild depending on apache: |
|
|
23 | # |
|
|
24 | # @CODE |
|
|
25 | # DEPEND="virtual/Perl-CGI" |
|
|
26 | # RDEPEND="${DEPEND}" |
|
|
27 | # need_apache2 |
|
|
28 | # @CODE |
|
|
29 | # |
|
|
30 | # Another example which demonstrates non-standard IUSE options for optional |
|
|
31 | # apache support: |
|
|
32 | # |
|
|
33 | # @CODE |
|
|
34 | # DEPEND="server? ( virtual/Perl-CGI )" |
|
|
35 | # RDEPEND="${DEPEND}" |
|
|
36 | # want_apache2 server |
|
|
37 | # @CODE |
| 8 | |
38 | |
| 9 | # call this function to work out which version of the apache web server |
39 | inherit multilib |
| 10 | # your ebuild should be installing itself to use |
|
|
| 11 | |
40 | |
| 12 | detect_apache_useflags() { |
41 | # ============================================================================== |
| 13 | USE_APACHE1= |
42 | # INTERNAL VARIABLES |
| 14 | USE_APACHE2= |
43 | # ============================================================================== |
| 15 | USE_APACHE_MULTIPLE= |
|
|
| 16 | |
44 | |
| 17 | useq apache2 && USE_APACHE2=1 |
45 | # @ECLASS-VARIABLE: APACHE_VERSION |
| 18 | useq apache && USE_APACHE1=1 |
46 | # @DESCRIPTION: |
|
|
47 | # Stores the version of apache we are going to be ebuilding. |
|
|
48 | # This variable is set by the want/need_apache functions. |
| 19 | |
49 | |
| 20 | [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1 |
50 | # @ECLASS-VARIABLE: APXS |
| 21 | } |
51 | # @DESCRIPTION: |
|
|
52 | # Path to the apxs tool. |
|
|
53 | # This variable is set by the want/need_apache functions. |
| 22 | |
54 | |
| 23 | detect_apache_installed() { |
55 | # @ECLASS-VARIABLE: APACHE_BIN |
| 24 | HAS_APACHE1= |
56 | # @DESCRIPTION: |
| 25 | HAS_APACHE2= |
57 | # Path to the apache binary. |
| 26 | HAS_APACHE_MULTIPLE= |
58 | # This variable is set by the want/need_apache functions. |
| 27 | HAS_APACHE_ANY= |
|
|
| 28 | |
59 | |
| 29 | has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 |
60 | # @ECLASS-VARIABLE: APACHE_CTL |
| 30 | has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 |
61 | # @DESCRIPTION: |
|
|
62 | # Path to the apachectl tool. |
|
|
63 | # This variable is set by the want/need_apache functions. |
| 31 | |
64 | |
| 32 | [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 |
65 | # @ECLASS-VARIABLE: APACHE_BASEDIR |
| 33 | } |
66 | # @DESCRIPTION: |
|
|
67 | # Path to the server root directory. |
|
|
68 | # This variable is set by the want/need_apache functions. |
| 34 | |
69 | |
| 35 | # call this function from your pkg_setup |
70 | # @ECLASS-VARIABLE: APACHE_CONFDIR |
|
|
71 | # @DESCRIPTION: |
|
|
72 | # Path to the configuration file directory. |
|
|
73 | # This variable is set by the want/need_apache functions. |
| 36 | |
74 | |
|
|
75 | # @ECLASS-VARIABLE: APACHE_MODULES_CONFDIR |
|
|
76 | # @DESCRIPTION: |
|
|
77 | # Path where module configuration files are kept. |
|
|
78 | # This variable is set by the want/need_apache functions. |
|
|
79 | |
|
|
80 | # @ECLASS-VARIABLE: APACHE_VHOSTS_CONFDIR |
|
|
81 | # @DESCRIPTION: |
|
|
82 | # Path where virtual host configuration files are kept. |
|
|
83 | # This variable is set by the want/need_apache functions. |
|
|
84 | |
|
|
85 | # @ECLASS-VARIABLE: APACHE_MODULESDIR |
|
|
86 | # @DESCRIPTION: |
|
|
87 | # Path where we install modules. |
|
|
88 | # This variable is set by the want/need_apache functions. |
|
|
89 | |
|
|
90 | # @ECLASS-VARIABLE: APACHE_DEPEND |
|
|
91 | # @DESCRIPTION: |
|
|
92 | # Dependencies for Apache |
|
|
93 | APACHE_DEPEND="www-servers/apache" |
|
|
94 | |
|
|
95 | # @ECLASS-VARIABLE: APACHE2_DEPEND |
|
|
96 | # @DESCRIPTION: |
|
|
97 | # Dependencies for Apache 2.x |
|
|
98 | APACHE2_DEPEND="=www-servers/apache-2*" |
|
|
99 | |
|
|
100 | # @ECLASS-VARIABLE: APACHE2_2_DEPEND |
|
|
101 | # @DESCRIPTION: |
|
|
102 | # Dependencies for Apache 2.2.x |
|
|
103 | APACHE2_2_DEPEND="=www-servers/apache-2.2*" |
|
|
104 | |
|
|
105 | # ============================================================================== |
|
|
106 | # INTERNAL FUNCTIONS |
|
|
107 | # ============================================================================== |
|
|
108 | |
|
|
109 | _init_apache2() { |
|
|
110 | debug-print-function $FUNCNAME $* |
|
|
111 | |
|
|
112 | # WARNING: Do not use these variables with anything that is put |
|
|
113 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
114 | APACHE_VERSION="2" |
|
|
115 | APXS="/usr/sbin/apxs2" |
|
|
116 | APACHE_BIN="/usr/sbin/apache2" |
|
|
117 | APACHE_CTL="/usr/sbin/apache2ctl" |
|
|
118 | APACHE_INCLUDEDIR="/usr/include/apache2" |
|
|
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. |
|
|
140 | want_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. |
|
|
150 | want_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. |
|
|
171 | want_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. |
| 37 | depend_apache() { |
189 | need_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. |
|
|
197 | need_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. |
|
|
208 | need_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: has_apache |
|
|
217 | # @DESCRIPTION: |
|
|
218 | # An ebuild calls this to get runtime variables for an indirect apache |
|
|
219 | # dependency without USE-flag, in which case want_apache does not work. |
|
|
220 | # DO NOT call this function in global scope. |
|
|
221 | has_apache() { |
|
|
222 | debug-print-function $FUNCNAME $* |
|
|
223 | |
|
|
224 | if has_version '>=www-servers/apache-2'; then |
|
|
225 | _init_apache2 |
|
|
226 | else |
|
|
227 | _init_no_apache |
|
|
228 | fi |
|
|
229 | } |
|
|
230 | |
|
|
231 | # @FUNCTION: has_apache_threads |
|
|
232 | # @USAGE: [myflag] |
|
|
233 | # @DESCRIPTION: |
|
|
234 | # An ebuild calls this to make sure thread-safety is enabled if apache has been |
|
|
235 | # built with a threaded MPM. If the myflag parameter is not given it defaults to |
|
|
236 | # threads. |
|
|
237 | has_apache_threads() { |
|
|
238 | debug-print-function $FUNCNAME $* |
|
|
239 | |
|
|
240 | if ! built_with_use www-servers/apache threads; then |
|
|
241 | return |
|
|
242 | fi |
|
|
243 | |
|
|
244 | local myflag="${1:-threads}" |
|
|
245 | |
|
|
246 | if ! use ${myflag}; then |
| 43 | echo |
247 | echo |
| 44 | eerror "You have both the apache and apache2 USE flags set" |
248 | eerror "You need to enable USE flag '${myflag}' to build a thread-safe version" |
| 45 | eerror |
249 | eerror "of ${CATEGORY}/${PN} for use with www-servers/apache" |
| 46 | eerror "Please set only ONE of these USE flags, and try again" |
250 | die "Need missing USE flag '${myflag}'" |
|
|
251 | fi |
|
|
252 | } |
|
|
253 | |
|
|
254 | # @FUNCTION: has_apache_threads_in |
|
|
255 | # @USAGE: <myforeign> [myflag] |
|
|
256 | # @DESCRIPTION: |
|
|
257 | # An ebuild calls this to make sure thread-safety is enabled in a foreign |
|
|
258 | # package if apache has been built with a threaded MPM. If the myflag parameter |
|
|
259 | # is not given it defaults to threads. |
|
|
260 | has_apache_threads_in() { |
|
|
261 | debug-print-function $FUNCNAME $* |
|
|
262 | |
|
|
263 | if ! built_with_use www-servers/apache threads; then |
|
|
264 | return |
|
|
265 | fi |
|
|
266 | |
|
|
267 | local myforeign="$1" |
|
|
268 | local myflag="${2:-threads}" |
|
|
269 | |
|
|
270 | if ! built_with_use ${myforeign} ${myflag}; then |
| 47 | echo |
271 | echo |
| 48 | die "Multiple Apache USE flags set - you can only have one set at a time" |
272 | eerror "You need to enable USE flag '${myflag}' in ${myforeign} to" |
| 49 | fi |
273 | eerror "build a thread-safe version of ${CATEGORY}/${PN} for use" |
| 50 | |
274 | eerror "with www-servers/apache" |
| 51 | if [ -n "$USE_APACHE2" ] ; then |
275 | 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 |
276 | 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 | } |
277 | } |
| 81 | |
|
|