| 1 | # Copyright 2004-2005 Gentoo Foundation |
1 | # Copyright 1999-2007 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License, v2 or later |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.16 2005/07/06 20:20:03 agriffis Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.35 2007/11/25 14:27:52 hollow Exp $ |
| 4 | INHERITED="$INHERITED $ECLASS" |
|
|
| 5 | |
4 | |
| 6 | ###### |
5 | # @ECLASS: depend.apache.eclass |
| 7 | ## Apache Common Variables |
6 | # @MAINTAINER: apache-devs@gentoo.org |
| 8 | ## |
7 | # @BLURB: Functions to allow ebuilds to depend on apache |
| 9 | ## These are internal variables used by this, and other apache-related eclasses, |
8 | # @DESCRIPTION: |
| 10 | ## and thus should not need to be used by the ebuilds themselves (the ebuilds |
9 | # This eclass handles depending on apache in a sane way and providing |
| 11 | ## should know what version of Apache they are building against). |
10 | # information about where certain interfaces are located. |
| 12 | ###### |
11 | # |
|
|
12 | # @NOTE: If you use this, be sure you use the need_* call after you have defined |
|
|
13 | # DEPEND and RDEPEND. Also note that you can not rely on the automatic |
|
|
14 | # RDEPEND=DEPEND that portage does if you use this eclass. |
|
|
15 | # |
|
|
16 | # See bug 107127 for more information. |
| 13 | |
17 | |
| 14 | #### |
18 | inherit multilib |
| 15 | ## APACHE_VERSION |
19 | |
| 16 | ## |
20 | # ============================================================================== |
|
|
21 | # INTERNAL VARIABLES |
|
|
22 | # ============================================================================== |
|
|
23 | |
|
|
24 | # @ECLASS-VARIABLE: APACHE_VERSION |
|
|
25 | # @DESCRIPTION: |
| 17 | ## Stores the version of apache we are going to be ebuilding. This variable is |
26 | # Stores the version of apache we are going to be ebuilding. This variable is |
| 18 | ## set by the need_apache{|1|2} functions. |
27 | # set by the need_apache functions. |
| 19 | ## |
|
|
| 20 | ## This needs to stay as '1' until apache2 is on by default -- although it |
|
|
| 21 | ## doesn't matter much as it's set by the need_apache functions. |
|
|
| 22 | #### |
|
|
| 23 | APACHE_VERSION='1' |
28 | #APACHE_VERSION="2" |
| 24 | |
29 | |
| 25 | #### |
30 | # @ECLASS-VARIABLE: APXS2 |
| 26 | ## APXS1, APXS2 |
31 | # @DESCRIPTION: |
| 27 | ## |
|
|
| 28 | ## Paths to the apxs tools |
32 | # Paths to the apxs tool |
| 29 | #### |
|
|
| 30 | APXS1="/usr/sbin/apxs" |
|
|
| 31 | APXS2="/usr/sbin/apxs2" |
33 | APXS2="/usr/sbin/apxs2" |
| 32 | |
34 | |
| 33 | #### |
35 | # @ECLASS-VARIABLE: APACHECTL2 |
| 34 | ## APACHECTL1, APACHECTL2 |
36 | # @DESCRIPTION: |
| 35 | ## |
|
|
| 36 | ## Paths to the apachectl tools |
37 | # Path to the apachectl tool |
| 37 | #### |
|
|
| 38 | APACHECTL1="/usr/sbin/apachectl" |
|
|
| 39 | APACHECTL2="/usr/sbin/apache2ctl" |
38 | APACHECTL2="/usr/sbin/apache2ctl" |
| 40 | |
39 | |
| 41 | #### |
40 | # @ECLASS-VARIABLE: APACHE2_BASEDIR |
| 42 | ## APACHE1_BASEDIR, APACHE2_BASEDIR |
41 | # @DESCRIPTION: |
| 43 | ## |
|
|
| 44 | ## Paths to the server root directories |
42 | # Path to the server root directory |
| 45 | #### |
|
|
| 46 | APACHE1_BASEDIR="/usr/lib/apache" |
|
|
| 47 | APACHE2_BASEDIR="/usr/lib/apache2" |
43 | APACHE2_BASEDIR="/usr/$(get_libdir)/apache2" |
| 48 | |
44 | |
| 49 | #### |
45 | # @ECLASS-VARIABLE: APACHE2_CONFDIR |
| 50 | ## APACHE1_CONFDIR, APACHE2_CONFDIR |
46 | # @DESCRIPTION: |
| 51 | ## |
|
|
| 52 | ## Paths to the configuration file directories (usually under |
47 | # Path to the configuration file directory |
| 53 | ## $APACHE?_BASEDIR/conf) |
|
|
| 54 | #### |
|
|
| 55 | APACHE1_CONFDIR="/etc/apache" |
|
|
| 56 | APACHE2_CONFDIR="/etc/apache2" |
48 | APACHE2_CONFDIR="/etc/apache2" |
| 57 | |
49 | |
| 58 | #### |
50 | # @ECLASS-VARIABLE: APACHE2_MODULES_CONFDIR |
| 59 | ## APACHE1_MODULES_CONFDIR, APACHE2_MODULES_CONFDIR |
51 | # @DESCRIPTION: |
| 60 | ## |
|
|
| 61 | ## Paths where module configuration files are kept |
52 | # Path where module configuration files are kept |
| 62 | #### |
|
|
| 63 | APACHE1_MODULES_CONFDIR="${APACHE1_CONFDIR}/modules.d" |
|
|
| 64 | APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d" |
53 | APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d" |
| 65 | |
54 | |
| 66 | #### |
55 | # @ECLASS-VARIABLE: APACHE2_VHOSTDIR |
| 67 | ## APACHE1_MODULES_VHOSTDIR, APACHE2_MODULES_VHOSTDIR |
56 | # @DESCRIPTION: |
| 68 | ## |
|
|
| 69 | ## Paths where virtual host configuration files are kept |
57 | # Path where virtual host configuration files are kept |
| 70 | #### |
|
|
| 71 | APACHE1_VHOSTDIR="${APACHE1_CONFDIR}/vhosts.d" |
|
|
| 72 | APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d" |
58 | APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d" |
| 73 | |
59 | |
| 74 | #### |
60 | # @ECLASS-VARIABLE: APACHE2_MODULESDIR |
| 75 | ## APACHE1_MODULESDIR, APACHE2_MODULESDIR |
61 | # @DESCRIPTION: |
| 76 | ## |
|
|
| 77 | ## Paths where we install modules |
62 | # Path where we install modules |
| 78 | #### |
|
|
| 79 | APACHE1_MODULESDIR="${APACHE1_BASEDIR}/modules" |
|
|
| 80 | APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules" |
63 | APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules" |
| 81 | |
64 | |
| 82 | #### |
65 | # @ECLASS-VARIABLE: APACHE2_DEPEND |
| 83 | ## APACHE1_DEPEND, APACHE2_DEPEND |
66 | # @DESCRIPTION: |
| 84 | ## |
|
|
| 85 | ## Dependencies for apache 1.x and apache 2.x |
67 | # Dependencies for Apache 2.x |
| 86 | ## - apache2 must be at least version 2.0.52-r3, this is lowest version |
|
|
| 87 | ## containing our new overall changes -- trapni (Jan 21 2005) |
|
|
| 88 | ## - apache1 must be at least version 1.3.33-r1, but how to |
|
|
| 89 | ## define the DEPEND here? (FIXME) -- trapni (Jan 21 2005) |
|
|
| 90 | ## - currently not possible - bug #4315 -- vericgar (Jan 21 2005) |
|
|
| 91 | #### |
|
|
| 92 | APACHE1_DEPEND="=net-www/apache-1*" |
68 | APACHE2_DEPEND="=www-servers/apache-2*" |
| 93 | APACHE2_DEPEND=">=net-www/apache-2.0.54-r10" |
|
|
| 94 | |
69 | |
|
|
70 | # @ECLASS-VARIABLE: APACHE2_0_DEPEND |
|
|
71 | # @DESCRIPTION: |
|
|
72 | # Dependencies for Apache 2.0.x |
|
|
73 | APACHE2_0_DEPEND="=www-servers/apache-2.0*" |
| 95 | |
74 | |
| 96 | #### |
75 | # @ECLASS-VARIABLE: APACHE2_2_DEPEND |
| 97 | ## APACHE_DEPEND |
76 | # @DESCRIPTION: |
| 98 | ## |
77 | # Dependencies for Apache 2.2.x |
|
|
78 | APACHE2_2_DEPEND="=www-servers/apache-2.2*" |
|
|
79 | |
|
|
80 | # @ECLASS-VARIABLE: WANT_APACHE_DEPEND |
|
|
81 | # @DESCRIPTION: |
| 99 | ## Dependency magic based on useflags to use the right DEPEND |
82 | # Dependency magic based on useflag to use the right DEPEND |
| 100 | #### |
83 | WANT_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} )" |
| 101 | |
84 | |
| 102 | APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} ) !apache2? ( ${APACHE1_DEPEND} )" |
85 | # ============================================================================== |
|
|
86 | # INTERNAL FUNCTIONS |
|
|
87 | # ============================================================================== |
| 103 | |
88 | |
| 104 | #### |
89 | # @FUNCTION: uses_apache2 |
| 105 | ## need_apache1 |
90 | # @DESCRIPTION: |
| 106 | ## |
91 | # sets up all of the environment variables required for an apache2 module |
|
|
92 | uses_apache2() { |
|
|
93 | debug-print-function $FUNCNAME $* |
|
|
94 | |
|
|
95 | # WARNING: Do not use these variables with anything that is put |
|
|
96 | # into the dependency cache (DEPEND/RDEPEND/etc) |
|
|
97 | APACHE_VERSION="2" |
|
|
98 | USE_APACHE="2" |
|
|
99 | APXS="${APXS2}" |
|
|
100 | APACHECTL="${APACHECTL2}" |
|
|
101 | APACHE_BASEDIR="${APACHE2_BASEDIR}" |
|
|
102 | APACHE_CONFDIR="${APACHE2_CONFDIR}" |
|
|
103 | APACHE_MODULES_CONFDIR="${APACHE2_MODULES_CONFDIR}" |
|
|
104 | APACHE_VHOSTSDIR="${APACHE2_VHOSTSDIR}" |
|
|
105 | APACHE_MODULESDIR="${APACHE2_MODULESDIR}" |
|
|
106 | } |
|
|
107 | |
|
|
108 | # @FUNCTION: doesnt_use_apache |
|
|
109 | # @DESCRIPTION: |
|
|
110 | # sets up all of the environment variables required for optional apache usage |
|
|
111 | doesnt_use_apache() { |
|
|
112 | debug-print-function $FUNCNAME $* |
|
|
113 | |
|
|
114 | APACHE_VERSION="0" |
|
|
115 | USE_APACHE="0" |
|
|
116 | } |
|
|
117 | |
|
|
118 | # ============================================================================== |
|
|
119 | # PUBLIC FUNCTIONS |
|
|
120 | # ============================================================================== |
|
|
121 | |
|
|
122 | # @FUNCTION: want_apache |
|
|
123 | # @DESCRIPTION: |
| 107 | ## An ebuild calls this to get the dependency information |
124 | # An ebuild calls this to get the dependency information for optional apache-2.x |
| 108 | ## for apache-1.x. An ebuild should use this in order for |
125 | # support. |
| 109 | ## future changes to the build infrastructure to happen |
|
|
| 110 | ## seamlessly. All an ebuild needs to do is include the |
|
|
| 111 | ## line need_apache1 somewhere. |
|
|
| 112 | #### |
|
|
| 113 | need_apache1() { |
126 | want_apache() { |
| 114 | debug-print-function need_apache1 |
127 | debug-print-function $FUNCNAME $* |
| 115 | |
128 | |
|
|
129 | IUSE="${IUSE} apache2" |
| 116 | DEPEND="${DEPEND} ${APACHE1_DEPEND}" |
130 | DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}" |
| 117 | RDEPEND="${RDEPEND} ${APACHE1_DEPEND}" |
131 | RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}" |
| 118 | APACHE_VERSION='1' |
|
|
| 119 | } |
|
|
| 120 | |
132 | |
| 121 | #### |
133 | if use apache2 ; then |
| 122 | ## need_apache2 |
134 | uses_apache2 |
| 123 | ## |
135 | else |
|
|
136 | doesnt_use_apache |
|
|
137 | fi |
|
|
138 | } |
|
|
139 | |
|
|
140 | # @FUNCTION: need_apache2 |
|
|
141 | # @DESCRIPTION: |
| 124 | ## An ebuild calls this to get the dependency information |
142 | # An ebuild calls this to get the dependency information for apache-2.x. An |
| 125 | ## for apache-2.x. An ebuild should use this in order for |
143 | # ebuild should use this in order for future changes to the build infrastructure |
| 126 | ## future changes to the build infrastructure to happen |
|
|
| 127 | ## seamlessly. All an ebuild needs to do is include the |
144 | # to happen seamlessly. All an ebuild needs to do is include the line |
| 128 | ## line need_apache1 somewhere. |
145 | # need_apache2 somewhere. |
| 129 | #### |
|
|
| 130 | need_apache2() { |
146 | need_apache2() { |
| 131 | debug-print-function need_apache2 |
147 | debug-print-function $FUNCNAME $* |
| 132 | |
148 | |
| 133 | DEPEND="${DEPEND} ${APACHE2_DEPEND}" |
149 | DEPEND="${DEPEND} ${APACHE2_DEPEND}" |
| 134 | RDEPEND="${RDEPEND} ${APACHE2_DEPEND}" |
150 | RDEPEND="${RDEPEND} ${APACHE2_DEPEND}" |
| 135 | APACHE_VERSION='2' |
151 | uses_apache2 |
| 136 | } |
152 | } |
| 137 | |
153 | |
| 138 | #### |
154 | # @FUNCTION: need_apache2_0 |
| 139 | ## DO NOT CHANGE THIS FUNCTION UNLESS YOU UNDERSTAND THE CONSEQUENCES IT |
155 | # @DESCRIPTION: |
| 140 | ## WILL HAVE ON THE CACHE! There MUST be a apache2? () block in DEPEND for |
156 | # Works like need_apache2 above, but its used by modules that only support |
| 141 | ## things to work correct in the dependency calculation stage. |
157 | # apache 2.0 and do not work with higher versions. |
| 142 | #### |
158 | need_apache2_0() { |
|
|
159 | debug-print-function $FUNCNAME $* |
|
|
160 | |
|
|
161 | DEPEND="${DEPEND} ${APACHE2_0_DEPEND}" |
|
|
162 | RDEPEND="${RDEPEND} ${APACHE2_0_DEPEND}" |
|
|
163 | uses_apache2 |
|
|
164 | } |
|
|
165 | |
|
|
166 | # @FUNCTION: need_apache2_2 |
|
|
167 | # @DESCRIPTION: |
|
|
168 | # Works like need_apache2 above, but its used by modules that only support |
|
|
169 | # apache 2.2 and do not work with lower versions. |
|
|
170 | need_apache2_2() { |
|
|
171 | debug-print-function $FUNCNAME $* |
|
|
172 | |
|
|
173 | DEPEND="${DEPEND} ${APACHE2_2_DEPEND}" |
|
|
174 | RDEPEND="${RDEPEND} ${APACHE2_2_DEPEND}" |
|
|
175 | uses_apache2 |
|
|
176 | } |
|
|
177 | |
|
|
178 | # @FUNCTION: need_apache |
|
|
179 | # @DESCRIPTION: |
|
|
180 | # Legacy alias for need_apache2 |
| 143 | need_apache() { |
181 | need_apache() { |
| 144 | debug-print-function need_apache |
182 | need_apache2 |
|
|
183 | } |
| 145 | |
184 | |
| 146 | IUSE="${IUSE} apache2" |
185 | # @FUNCTION: apr_config |
| 147 | DEPEND="${DEPEND} ${APACHE_DEPEND}" |
186 | # @DESCRIPTION: |
| 148 | RDEPEND="${RDEPEND} ${APACHE_DEPEND}" |
187 | # Version magic to get the correct apr-config binary based on the (probably) |
| 149 | if useq apache2; then |
188 | # installed version of apache. This is needed to get modules to link to the |
| 150 | APACHE_VERSION='2' |
189 | # same apr/apu as apache (i.e. link 0.9 for 2.0, 1.x for 2.2) |
| 151 | USE_APACHE2=2 |
190 | apr_config() { |
| 152 | APXS="$APXS2" |
191 | debug-print-function $FUNCNAME $* |
| 153 | APACHECTL="${APACHECTL2}" |
192 | |
| 154 | APACHE_BASEDIR="${APACHE2_BASEDIR}" |
193 | local default="${1:-1}" |
| 155 | APACHE_CONFDIR="${APACHE2_CONFDIR}" |
194 | if [[ "${USE_APACHE}" == "2" ]]; then |
| 156 | APACHE_MODULES_CONFDIR="${APACHE2_MODULES_CONFDIR}" |
195 | if has_version ${APACHE2_0_DEPEND}; then |
| 157 | APACHE_VHOSTSDIR="${APACHE2_VHOSTSDIR}" |
196 | echo apr-config |
| 158 | APACHE_MODULESDIR="${APACHE2_MODULESDIR}" |
197 | else |
|
|
198 | echo apr-1-config |
|
|
199 | fi |
| 159 | else |
200 | else |
| 160 | APACHE_VERSION='1' |
201 | if [[ "${default}" == "0" ]]; then |
| 161 | APXS="$APXS1" |
202 | echo apr-config |
| 162 | USE_APACHE2= |
203 | elif [[ "${default}" == "1" ]]; then |
| 163 | APACHECTL="${APACHECTL1}" |
204 | echo apr-1-config |
| 164 | APACHE_BASEDIR="${APACHE1_BASEDIR}" |
205 | else |
| 165 | APACHE_CONFDIR="${APACHE1_CONFDIR}" |
206 | die "Unknown version specifier: ${default}" |
| 166 | APACHE_MODULES_CONFDIR="${APACHE1_MODULES_CONFDIR}" |
207 | fi |
| 167 | APACHE_VHOSTSDIR="${APACHE1_VHOSTSDIR}" |
|
|
| 168 | APACHE_MODULESDIR="${APACHE1_MODULESDIR}" |
|
|
| 169 | fi |
208 | fi |
| 170 | } |
209 | } |
|
|
210 | |
|
|
211 | # @FUNCTION: apu_config |
|
|
212 | # @DESCRIPTION: |
|
|
213 | # Version magic to get the correct apu-config binary based on the (probably) |
|
|
214 | # installed version of apache. This is needed to get modules to link to the |
|
|
215 | # same apr/apu as apache (i.e. link 0.9 for 2.0, 1.x for 2.2) |
|
|
216 | apu_config() { |
|
|
217 | debug-print-function $FUNCNAME $* |
|
|
218 | |
|
|
219 | local default="${1:-1}" |
|
|
220 | if [[ "${USE_APACHE}" == "2" ]]; then |
|
|
221 | if has_version ${APACHE2_0_DEPEND}; then |
|
|
222 | echo apu-config |
|
|
223 | else |
|
|
224 | echo apu-1-config |
|
|
225 | fi |
|
|
226 | else |
|
|
227 | if [[ "${default}" == "0" ]]; then |
|
|
228 | echo apu-config |
|
|
229 | elif [[ "${default}" == "1" ]]; then |
|
|
230 | echo apu-1-config |
|
|
231 | else |
|
|
232 | die "Unknown version specifier: ${default}" |
|
|
233 | fi |
|
|
234 | fi |
|
|
235 | } |