| 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.33 2007/07/29 16:36:23 phreak Exp $ |
| 4 | |
4 | |
| 5 | ECLASS="depend.apache" |
5 | inherit multilib |
| 6 | INHERITED="$INHERITED $ECLASS" |
|
|
| 7 | IUSE="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 | |
| 12 | detect_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 | #### |
|
|
37 | APXS1="/usr/sbin/apxs" |
|
|
38 | APXS2="/usr/sbin/apxs2" |
|
|
39 | |
|
|
40 | #### |
|
|
41 | ## APACHECTL1, APACHECTL2 |
|
|
42 | ## |
|
|
43 | ## Paths to the apachectl tools |
|
|
44 | #### |
|
|
45 | APACHECTL1="/usr/sbin/apachectl" |
|
|
46 | APACHECTL2="/usr/sbin/apache2ctl" |
|
|
47 | |
|
|
48 | #### |
|
|
49 | ## APACHE1_BASEDIR, APACHE2_BASEDIR |
|
|
50 | ## |
|
|
51 | ## Paths to the server root directories |
|
|
52 | #### |
|
|
53 | APACHE1_BASEDIR="/usr/$(get_libdir)/apache" |
|
|
54 | APACHE2_BASEDIR="/usr/$(get_libdir)/apache2" |
|
|
55 | |
|
|
56 | #### |
|
|
57 | ## APACHE1_CONFDIR, APACHE2_CONFDIR |
|
|
58 | ## |
|
|
59 | ## Paths to the configuration file directories |
|
|
60 | #### |
|
|
61 | APACHE1_CONFDIR="/etc/apache" |
|
|
62 | APACHE2_CONFDIR="/etc/apache2" |
|
|
63 | |
|
|
64 | #### |
|
|
65 | ## APACHE1_MODULES_CONFDIR, APACHE2_MODULES_CONFDIR |
|
|
66 | ## |
|
|
67 | ## Paths where module configuration files are kept |
|
|
68 | #### |
|
|
69 | APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d" |
|
|
70 | APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d" |
|
|
71 | |
|
|
72 | #### |
|
|
73 | ## APACHE1_VHOSTDIR, APACHE2_VHOSTDIR |
|
|
74 | ## |
|
|
75 | ## Paths where virtual host configuration files are kept |
|
|
76 | #### |
|
|
77 | APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d" |
|
|
78 | APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d" |
|
|
79 | |
|
|
80 | #### |
|
|
81 | ## APACHE1_MODULESDIR, APACHE2_MODULESDIR |
|
|
82 | ## |
|
|
83 | ## Paths where we install modules |
|
|
84 | #### |
|
|
85 | APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules" |
|
|
86 | APACHE2_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 | #### |
|
|
94 | APACHE1_DEPEND="=www-servers/apache-1*" |
|
|
95 | APACHE2_DEPEND="=www-servers/apache-2*" |
|
|
96 | APACHE2_0_DEPEND="=www-servers/apache-2.0*" |
|
|
97 | APACHE2_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 | |
|
|
106 | NEED_APACHE_DEPEND="${APACHE2_DEPEND}" |
|
|
107 | WANT_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} )" |
|
|
108 | |
|
|
109 | #### |
|
|
110 | # uses_apache1() - !!! DEPRECATED !!! |
|
|
111 | #### |
|
|
112 | |
|
|
113 | uses_apache1() { |
|
|
114 | debug-print-function $FUNCNAME $* |
|
|
115 | # WARNING: Do not use these variables with anything that is put |
|
|
116 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
117 | APACHE_VERSION="1" |
|
|
118 | APXS="${APXS1}" |
| 14 | USE_APACHE2= |
119 | USE_APACHE2="" |
| 15 | USE_APACHE_MULTIPLE= |
120 | APACHECTL="${APACHECTL1}" |
| 16 | |
121 | APACHE_BASEDIR="${APACHE1_BASEDIR}" |
| 17 | useq apache2 && USE_APACHE2=1 |
122 | APACHE_CONFDIR="${APACHE1_CONFDIR}" |
| 18 | useq apache && USE_APACHE1=1 |
123 | APACHE_MODULES_CONFDIR="${APACHE1_MODULES_CONFDIR}" |
| 19 | |
124 | APACHE_VHOSTSDIR="${APACHE1_VHOSTSDIR}" |
| 20 | [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1 |
125 | APACHE_MODULESDIR="${APACHE1_MODULESDIR}" |
| 21 | } |
126 | } |
| 22 | |
127 | |
| 23 | detect_apache_installed() { |
128 | #### |
| 24 | HAS_APACHE1= |
129 | # uses_apache2() |
|
|
130 | # |
|
|
131 | # sets up all of the environment variables required by an apache2 module |
|
|
132 | #### |
|
|
133 | |
|
|
134 | uses_apache2() { |
|
|
135 | debug-print-function $FUNCNAME $* |
|
|
136 | # WARNING: Do not use these variables with anything that is put |
|
|
137 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
138 | APACHE_VERSION="2" |
| 25 | HAS_APACHE2= |
139 | USE_APACHE2="2" |
| 26 | HAS_APACHE_MULTIPLE= |
140 | APXS="${APXS2}" |
| 27 | HAS_APACHE_ANY= |
141 | APACHECTL="${APACHECTL2}" |
| 28 | |
142 | APACHE_BASEDIR="${APACHE2_BASEDIR}" |
| 29 | has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 |
143 | APACHE_CONFDIR="${APACHE2_CONFDIR}" |
| 30 | has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 |
144 | APACHE_MODULES_CONFDIR="${APACHE2_MODULES_CONFDIR}" |
| 31 | |
145 | APACHE_VHOSTSDIR="${APACHE2_VHOSTSDIR}" |
| 32 | [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 |
146 | APACHE_MODULESDIR="${APACHE2_MODULESDIR}" |
| 33 | } |
147 | } |
| 34 | |
148 | |
| 35 | # call this function from your pkg_setup |
149 | doesnt_use_apache() { |
|
|
150 | debug-print-function $FUNCNAME $* |
|
|
151 | APACHE_VERSION="0" |
|
|
152 | USE_APACHE="" |
|
|
153 | } |
| 36 | |
154 | |
|
|
155 | #### |
|
|
156 | ## need_apache1 - !!! DEPRECATED !!! |
|
|
157 | #### |
|
|
158 | need_apache1() { |
|
|
159 | debug-print-function $FUNCNAME $* |
|
|
160 | |
|
|
161 | DEPEND="${DEPEND} ${APACHE1_DEPEND}" |
|
|
162 | RDEPEND="${RDEPEND} ${APACHE1_DEPEND}" |
|
|
163 | APACHE_VERSION="1" |
|
|
164 | } |
|
|
165 | |
|
|
166 | #### |
|
|
167 | ## need_apache2 |
|
|
168 | ## |
|
|
169 | ## An ebuild calls this to get the dependency information |
|
|
170 | ## for apache-2.x. An ebuild should use this in order for |
|
|
171 | ## future changes to the build infrastructure to happen |
|
|
172 | ## seamlessly. All an ebuild needs to do is include the |
|
|
173 | ## line need_apache2 somewhere. |
|
|
174 | #### |
|
|
175 | need_apache2() { |
|
|
176 | debug-print-function $FUNCNAME $* |
|
|
177 | |
|
|
178 | DEPEND="${DEPEND} ${APACHE2_DEPEND}" |
|
|
179 | RDEPEND="${RDEPEND} ${APACHE2_DEPEND}" |
|
|
180 | APACHE_VERSION="2" |
|
|
181 | } |
|
|
182 | |
|
|
183 | #### |
|
|
184 | ## need_apache2_0 |
|
|
185 | ## |
|
|
186 | ## Works like need_apache2 above, but its used by modules |
|
|
187 | ## that only support apache 2.0 and do not work with |
|
|
188 | ## higher versions. |
|
|
189 | ## |
|
|
190 | #### |
|
|
191 | need_apache2_0() { |
|
|
192 | debug-print-function $FUNCNAME $* |
|
|
193 | |
|
|
194 | DEPEND="${DEPEND} ${APACHE2_0_DEPEND}" |
|
|
195 | RDEPEND="${RDEPEND} ${APACHE2_0_DEPEND}" |
|
|
196 | APACHE_VERSION="2" |
|
|
197 | } |
|
|
198 | |
|
|
199 | #### |
|
|
200 | ## need_apache2_2 |
|
|
201 | ## |
|
|
202 | ## Works like need_apache2 above, but its used by modules |
|
|
203 | ## that only support apache 2.2 and do not work with |
|
|
204 | ## lower versions. |
|
|
205 | ## |
|
|
206 | #### |
|
|
207 | need_apache2_2() { |
|
|
208 | debug-print-function $FUNCNAME $* |
|
|
209 | |
|
|
210 | DEPEND="${DEPEND} ${APACHE2_2_DEPEND}" |
|
|
211 | RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}" |
|
|
212 | APACHE_VERSION="2" |
|
|
213 | } |
|
|
214 | |
|
|
215 | #### |
|
|
216 | ## DO NOT CHANGE THIS FUNCTION UNLESS YOU UNDERSTAND THE CONSEQUENCES IT |
|
|
217 | ## WILL HAVE ON THE CACHE! |
|
|
218 | ## |
|
|
219 | ## This function can take a variable amount of arguments specifying the |
|
|
220 | ## versions of apache the ebuild supports |
|
|
221 | ## |
|
|
222 | ## If no arguments are specified, then all versions are assumed to be supported |
|
|
223 | ## |
|
|
224 | ## Currently supported versions: 2.0 2.2 2.x |
|
|
225 | #### |
| 37 | depend_apache() { |
226 | need_apache() { |
| 38 | detect_apache_installed |
227 | debug-print-function $FUNCNAME $* |
| 39 | detect_apache_useflags |
|
|
| 40 | |
228 | |
| 41 | # deal with the multiple cases first - much easier |
229 | local supports2x supports20 supports22 |
| 42 | if [ -n "$USE_APACHE_MULTIPLE" ]; then |
|
|
| 43 | echo |
|
|
| 44 | eerror "You have both the apache and apache2 USE flags set" |
|
|
| 45 | eerror |
|
|
| 46 | eerror "Please set only ONE of these USE flags, and try again" |
|
|
| 47 | echo |
|
|
| 48 | die "Multiple Apache USE flags set - you can only have one set at a time" |
|
|
| 49 | fi |
|
|
| 50 | |
230 | |
| 51 | if [ -n "$USE_APACHE2" ] ; then |
231 | if [[ $# -eq 0 ]] ; then |
| 52 | if [ -z "$HAS_APACHE2" -a -n "$HAS_APACHE_ANY" ] ; then |
232 | supports2x="yes" |
| 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 |
233 | else |
| 60 | einfo "Apache 2 support enabled" |
234 | while [[ $# -gt 0 ]] ; do |
| 61 | DETECT_APACHE=2 |
235 | case "$1" in |
| 62 | return |
236 | 2.0) supports20="yes"; shift;; |
|
|
237 | 2.2) supports22="yes"; shift;; |
|
|
238 | 2.x) supports2x="yes"; shift;; |
|
|
239 | *) die "Unknown version specifier: $1";; |
|
|
240 | esac |
|
|
241 | done |
| 63 | fi |
242 | fi |
| 64 | fi |
|
|
| 65 | |
243 | |
| 66 | if [ -n "$USE_APACHE1" ]; then |
244 | if [[ "${supports20}" == "yes" ]] && [[ "${supports22}" == "yes" ]] ; then |
| 67 | if [ -z "$HAS_APACHE1" -a -n "$HAS_APACHE_ANY" ]; then |
245 | supports2x="yes" |
| 68 | echo |
246 | fi |
| 69 | eerror "You have the 'apache' USE flag set, but only have a later version of" |
247 | |
| 70 | eerror "Apache installed on your computer. Please use the 'apache2' USE flag" |
248 | debug-print "supports20: ${supports20}" |
| 71 | eerror "or downgrade to Apache v1 before installing $CATEGORY/${PN}-${PVR}" |
249 | debug-print "supports22: ${supports22}" |
| 72 | echo |
250 | debug-print "supports2x: ${supports2x}" |
| 73 | die "Avoiding installing older version of Apache" |
251 | |
|
|
252 | if [[ "${supports2x}" == "yes" ]] ; then |
|
|
253 | need_apache2 |
|
|
254 | elif [[ "${supports20}" == "yes" ]] ; then |
|
|
255 | need_apache2_0 |
|
|
256 | elif [[ "${supports22}" == "yes" ]] ; then |
|
|
257 | need_apache2_2 |
|
|
258 | fi |
|
|
259 | |
|
|
260 | uses_apache2 |
|
|
261 | } |
|
|
262 | |
|
|
263 | want_apache() { |
|
|
264 | debug-print-function $FUNCNAME $* |
|
|
265 | |
|
|
266 | IUSE="${IUSE} apache2" |
|
|
267 | DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}" |
|
|
268 | RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}" |
|
|
269 | if use apache2 ; then |
|
|
270 | uses_apache2 |
| 74 | else |
271 | else |
| 75 | einfo "Apache 1 support enabled" |
272 | doesnt_use_apache |
| 76 | DETECT_APACHE=1 |
|
|
| 77 | return |
|
|
| 78 | fi |
273 | fi |
| 79 | fi |
|
|
| 80 | } |
274 | } |
| 81 | |
|
|