/[gentoo-x86]/eclass/apache-module.eclass
Gentoo

Contents of /eclass/apache-module.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.19 - (show annotations) (download)
Sat May 12 02:28:51 2007 UTC (7 years, 3 months ago) by chtekk
Branch: MAIN
Changes since 1.18: +63 -85 lines
Update for Apache 1.X masking.

1 # Copyright 1999-2007 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 inherit depend.apache
6
7 # This eclass provides a common set of functions for Apache modules.
8
9 # NOTE: If you use this, be sure you use the need_* call after you have
10 # defined DEPEND and RDEPEND. Also note that you can not rely on the
11 # automatic RDEPEND=DEPEND that Portage does if you use this eclass.
12 # See bug 107127 for more information.
13
14 ######
15 ## Common ebuild variables
16 ######
17
18 ####
19 ## APXS1_S, APXS2_S
20 ##
21 ## Paths to temporary build directories
22 ####
23 APXS1_S=""
24 APXS2_S=""
25
26 ####
27 ## APXS1_ARGS, APXS2_ARGS
28 ##
29 ## Arguments to pass to the apxs tool
30 ####
31 APXS1_ARGS=""
32 APXS2_ARGS=""
33
34 ####
35 ## APACHE1_MOD_FILE, APACHE2_MOD_FILE
36 ##
37 ## Name of the module that src_install installs (only, minus the .so)
38 ####
39 APACHE1_MOD_FILE=""
40 APACHE2_MOD_FILE=""
41
42 ####
43 ## APACHE1_MOD_CONF, APACHE2_MOD_CONF
44 ##
45 ## Configuration file installed by src_install
46 ####
47 APACHE1_MOD_CONF=""
48 APACHE2_MOD_CONF=""
49
50 ####
51 ## APACHE1_MOD_DEFINE, APACHE2_MOD_DEFINE
52 ##
53 ## Name of define (eg FOO) to use in conditional loading of the installed
54 ## module/it's config file, multiple defines should be space separated
55 ####
56 APACHE1_MOD_DEFINE=""
57 APACHE2_MOD_DEFINE=""
58
59 ####
60 ## DOCFILES
61 ##
62 ## If the exported src_install() is being used, and ${DOCFILES} is non-zero,
63 ## some sed-fu is applied to split out html documentation (if any) from normal
64 ## documentation, and dodoc'd or dohtml'd
65 ####
66 DOCFILES=""
67
68 ######
69 ## Utility functions
70 ######
71
72 ####
73 ## apache_cd_dir
74 ##
75 ## Return the path to our temporary build dir
76 ####
77 apache_cd_dir() {
78 debug-print-function $FUNCNAME $*
79
80 if [[ "${APACHE_VERSION}" == "1" ]] ; then
81 [[ -n "${APXS1_S}" ]] && CD_DIR="${APXS1_S}"
82 else
83 [[ -n "${APXS2_S}" ]] && CD_DIR="${APXS2_S}"
84 fi
85
86 # XXX - Is this really needed? Can't we just return ${S}?
87 if [[ -z "${CD_DIR}" ]] ; then
88 if [[ -d "${S}/src" ]] ; then
89 CD_DIR="${S}/src"
90 else
91 CD_DIR="${S}"
92 fi
93 fi
94
95 debug-print apache_cd_dir: "CD_DIR=${CD_DIR}"
96 echo "${CD_DIR}"
97 }
98
99 ####
100 ## apache_mod_file
101 ##
102 ## Return the path to the module file
103 ####
104 apache_mod_file() {
105 debug-print-function $FUNCNAME $*
106
107 if [[ "${APACHE_VERSION}" == "1" ]] ; then
108 [[ -n "${APACHE1_MOD_FILE}" ]] && MOD_FILE="${APACHE1_MOD_FILE}"
109 [[ -z "${MOD_FILE}" ]] && MOD_FILE="$(apache_cd_dir)/${PN}.so"
110 else
111 [[ -n "${APACHE2_MOD_FILE}" ]] && MOD_FILE="${APACHE2_MOD_FILE}"
112 [[ -z "${MOD_FILE}" ]] && MOD_FILE="$(apache_cd_dir)/.libs/${PN}.so"
113 fi
114
115 debug-print apache_mod_file: "MOD_FILE=${MOD_FILE}"
116 echo "${MOD_FILE}"
117 }
118
119 ####
120 ## apache_doc_magic
121 ##
122 ## Some magic for picking out html files from ${DOCFILES}. It takes
123 ## an optional first argument `html'; if the first argument is equals
124 ## `html', only html files are returned, otherwise normal (non-html)
125 ## docs are returned.
126 ####
127 apache_doc_magic() {
128 debug-print-function $FUNCNAME $*
129
130 if [[ -n "${DOCFILES}" ]] ; then
131 if [[ "x$1" == "xhtml" ]] ; then
132 DOCS="`echo ${DOCFILES} | sed -e 's/ /\n/g' | sed -e '/^[^ ]*.html$/ !d'`"
133 else
134 DOCS="`echo ${DOCFILES} | sed 's, *[^ ]*\+.html, ,g'`"
135 fi
136
137 debug-print apache_doc_magic: "DOCS=${DOCS}"
138 echo "${DOCS}"
139 fi
140 }
141
142 ######
143 ## Apache 1.x ebuild functions - !!! DEPRECATED !!!
144 ######
145
146 ####
147 ## apache1_src_compile - !!! DEPRECATED !!!
148 ####
149 apache1_src_compile() {
150 debug-print-function $FUNCNAME $*
151
152 CD_DIR=$(apache_cd_dir)
153 cd ${CD_DIR} || die "cd ${CD_DIR} failed"
154 APXS1_ARGS="${APXS1_ARGS:--c ${PN}.c}"
155 ${APXS1} ${APXS1_ARGS} || die "${APXS1} ${APXS1_ARGS} failed"
156 }
157
158 ####
159 ## apache1_src_install - !!! DEPRECATED !!!
160 ####
161 apache1_src_install() {
162 debug-print-function $FUNCNAME $*
163
164 CD_DIR=$(apache_cd_dir)
165 cd ${CD_DIR} || die "cd ${CD_DIR} failed"
166
167 MOD_FILE=$(apache_mod_file)
168
169 exeinto ${APACHE1_MODULESDIR}
170 doexe ${MOD_FILE} || die "internal ebuild error: '${MOD_FILE}' not found"
171 [ -n "${APACHE1_EXECFILES}" ] && doexe ${APACHE1_EXECFILES}
172
173 if [ -n "${APACHE1_MOD_CONF}" ] ; then
174 insinto ${APACHE1_MODULES_CONFDIR}
175 doins ${FILESDIR}/${APACHE1_MOD_CONF}.conf || die "internal ebuild error: '${FILESDIR}/${APACHE1_MOD_CONF}.conf' not found."
176 fi
177
178 cd ${S}
179
180 if [ -n "${DOCFILES}" ] ; then
181 OTHER_DOCS=$(apache_doc_magic)
182 HTML_DOCS=$(apache_doc_magic html)
183
184 [ -n "${OTHER_DOCS}" ] && dodoc ${OTHER_DOCS}
185 [ -n "${HTML_DOCS}" ] && dohtml ${HTML_DOCS}
186 fi
187 }
188
189 ####
190 ## apache1_pkg_postinst - !!! DEPRECATED !!!
191 ####
192 apache1_pkg_postinst() {
193 debug-print-function $FUNCNAME $*
194
195 if [ -n "${APACHE1_MOD_DEFINE}" ]; then
196 local my_opts="-D ${APACHE1_MOD_DEFINE// / -D }"
197
198 einfo
199 einfo "To enable ${PN}, you need to edit your /etc/conf.d/apache file and"
200 einfo "add '${my_opts}' to APACHE_OPTS."
201 einfo
202 fi
203 if [ -n "${APACHE1_MOD_CONF}" ] ; then
204 einfo
205 einfo "Configuration file installed as"
206 einfo " ${APACHE1_MODULES_CONFDIR}/$(basename ${APACHE1_MOD_CONF}).conf"
207 einfo "You may want to edit it before turning the module on in /etc/conf.d/apache"
208 einfo
209 fi
210 }
211
212 ######
213 ## Apache 2.x ebuild functions
214 ######
215
216 ####
217 ## apache2_pkg_setup
218 ##
219 ## Checks to see if APACHE2_MT_UNSAFE is set to anything other than "no". If it is, then
220 ## we check what the MPM style used by Apache is, if it isnt prefork, we let the user
221 ## know they need prefork, and then exit the build.
222 ####
223 apache2_pkg_setup() {
224 debug-print-function $FUNCNAME $*
225
226 if [[ -n "${APACHE2_SAFE_MPMS}" ]] ; then
227 INSTALLED_MPM="$(${ROOT}/usr/sbin/apxs2 -q MPM_NAME)"
228
229 if hasq ${INSTALLED_MPM} ${APACHE2_SAFE_MPMS} ; then
230 INSTALLED_MPM_SAFE="yes"
231 fi
232
233 if [[ -z "${INSTALLED_MPM_SAFE}" ]] ; then
234 eerror "The module you are trying to install (${PN})"
235 eerror "will only work with one of the following MPMs:"
236 eerror " ${APACHE2_SAFE_MPMS}"
237 eerror "You do not currently have any of these MPMs installed."
238 eerror "Please re-install apache with the correct mpm-* USE flag set."
239 die "No safe MPM installed."
240 fi
241 fi
242 }
243
244 ####
245 ## apache2_src_compile
246 ##
247 ## The default action is to call ${APXS2} with the value of
248 ## ${APXS2_ARGS}. If a module requires a different build setup
249 ## than this, use ${APXS2} in your own src_compile routine.
250 ####
251 apache2_src_compile() {
252 debug-print-function $FUNCNAME $*
253
254 CD_DIR=$(apache_cd_dir)
255 cd "${CD_DIR}" || die "cd ${CD_DIR} failed"
256 APXS2_ARGS="${APXS2_ARGS:--c ${PN}.c}"
257 ${APXS2} ${APXS2_ARGS} || die "${APXS2} ${APXS2_ARGS} failed"
258 }
259
260 ####
261 ## apache2_src_install
262 ##
263 ## This installs the files into apache's directories. The module is installed
264 ## from a directory chosen as above (APXS2_S or ${S}/src). In addition,
265 ## this function can also set the executable permission on files listed in EXECFILES.
266 ## The configuration file name is listed in CONFFILE without the .conf extensions,
267 ## so if you configuration is 55_mod_foo.conf, CONFFILE would be 55_mod_foo.
268 ## DOCFILES contains the list of files you want filed as documentation.
269 ####
270 apache2_src_install() {
271 debug-print-function $FUNCNAME $*
272
273 CD_DIR=$(apache_cd_dir)
274 cd "${CD_DIR}" || die "cd ${CD_DIR} failed"
275
276 MOD_FILE=$(apache_mod_file)
277
278 exeinto "${APACHE2_MODULESDIR}"
279 doexe ${MOD_FILE} || die "internal ebuild error: '${MOD_FILE}' not found"
280 [[ -n "${APACHE2_EXECFILES}" ]] && doexe ${APACHE2_EXECFILES}
281
282 if [[ -n "${APACHE2_MOD_CONF}" ]] ; then
283 insinto "${APACHE2_MODULES_CONFDIR}"
284 doins "${FILESDIR}/${APACHE2_MOD_CONF}.conf" || die "internal ebuild error: '${FILESDIR}/${APACHE2_MOD_CONF}.conf' not found"
285 fi
286
287 if [[ -n "${APACHE2_VHOSTFILE}" ]] ; then
288 insinto "${APACHE2_VHOSTDIR}"
289 doins "${FILESDIR}/${APACHE2_VHOSTFILE}.conf" || die "internal ebuild error: '${FILESDIR}/${APACHE2_VHOSTFILE}.conf' not found"
290 fi
291
292 cd "${S}"
293
294 if [[ -n "${DOCFILES}" ]] ; then
295 OTHER_DOCS=$(apache_doc_magic)
296 HTML_DOCS=$(apache_doc_magic html)
297
298 [[ -n "${OTHER_DOCS}" ]] && dodoc ${OTHER_DOCS}
299 [[ -n "${HTML_DOCS}" ]] && dohtml ${HTML_DOCS}
300 fi
301 }
302
303 apache2_pkg_postinst() {
304 debug-print-function $FUNCNAME $*
305
306 if [[ -n "${APACHE2_MOD_DEFINE}" ]] ; then
307 local my_opts="-D ${APACHE2_MOD_DEFINE// / -D }"
308
309 einfo
310 einfo "To enable ${PN}, you need to edit your /etc/conf.d/apache2 file and"
311 einfo "add '${my_opts}' to APACHE2_OPTS."
312 einfo
313 fi
314
315 if [[ -n "${APACHE2_MOD_CONF}" ]] ; then
316 einfo
317 einfo "Configuration file installed as"
318 einfo " ${APACHE2_MODULES_CONFDIR}/$(basename ${APACHE2_MOD_CONF}).conf"
319 einfo "You may want to edit it before turning the module on in /etc/conf.d/apache2"
320 einfo
321 fi
322
323 if [[ -n "${APACHE2_SAFE_MPMS}" ]] ; then
324 INSTALLED_MPM="$(${ROOT}/usr/sbin/apxs2 -q MPM_NAME)"
325
326 if ! hasq ${INSTALLED_MPM} ${APACHE2_SAFE_MPMS} ; then
327 INSTALLED_MPM_UNSAFE="${INSTALLED_MPM_UNSAFE} ${mpm}"
328 else
329 INSTALLED_MPM_SAFE="${INSTALLED_MPM_SAFE} ${mpm}"
330 fi
331
332 if [[ -n "${INSTALLED_MPM_UNSAFE}" ]] ; then
333 ewarn "You have one or more MPMs installed that will not work with"
334 ewarn "this module (${PN}). Please make sure that you only enable"
335 ewarn "this module if you are using one of the following MPMs:"
336 ewarn " ${INSTALLED_MPM_SAFE}"
337 fi
338 fi
339 }
340
341 ######
342 ## Apache dual (1.x or 2.x) ebuild functions - Apache 1.X DEPRECATED!
343 ##
344 ## This is where the magic happens. We provide dummy routines of all of the functions
345 ## provided by all of the specifics. We use APACHE_ECLASS_VER_* to see which versions
346 ## to call. If a function is provided by a given section (ie pkg_postinst in Apache 2.x)
347 ## the exported routine simply does nothing.
348 ######
349
350 apache-module_pkg_setup() {
351 debug-print-function $FUNCNAME $*
352
353 if [[ ${APACHE_VERSION} -eq "2" ]] ; then
354 apache2_pkg_setup
355 fi
356 }
357
358 apache-module_src_compile() {
359 debug-print-function $FUNCNAME $*
360
361 if [[ ${APACHE_VERSION} -eq "1" ]] ; then
362 apache1_src_compile
363 else
364 apache2_src_compile
365 fi
366 }
367
368 apache-module_src_install() {
369 debug-print-function $FUNCNAME $*
370
371 if [[ ${APACHE_VERSION} -eq "1" ]] ; then
372 apache1_src_install
373 else
374 apache2_src_install
375 fi
376 }
377
378 apache-module_pkg_postinst() {
379 debug-print-function $FUNCNAME $*
380
381 if [[ ${APACHE_VERSION} -eq "1" ]] ; then
382 apache1_pkg_postinst
383 else
384 apache2_pkg_postinst
385 fi
386 }
387
388 EXPORT_FUNCTIONS pkg_setup src_compile src_install pkg_postinst

  ViewVC Help
Powered by ViewVC 1.1.20