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

Diff of /eclass/apache-module.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.19 Revision 1.20
1# Copyright 1999-2007 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/apache-module.eclass,v 1.19 2007/05/12 02:28:51 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/apache-module.eclass,v 1.20 2007/11/25 14:27:52 hollow Exp $
4
5# @ECLASS: apache-module
6# @MAINTAINER: apache-devs@gentoo.org
7# @BLURB: Provides a common set of functions for apache modules
8# @DESCRIPTION:
9# This eclass handles apache modules in a sane way and providing information
10# about where certain interfaces are located.
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.
4 17
5inherit depend.apache 18inherit depend.apache
6 19
7# This eclass provides a common set of functions for Apache modules. 20# ==============================================================================
21# INTERNAL VARIABLES
22# ==============================================================================
8 23
9# NOTE: If you use this, be sure you use the need_* call after you have 24# @ECLASS-VARIABLE: APXS2_S
10# defined DEPEND and RDEPEND. Also note that you can not rely on the 25# @DESCRIPTION:
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 26# Path to temporary build directory
22####
23APXS1_S=""
24APXS2_S="" 27APXS2_S=""
25 28
26#### 29# @ECLASS-VARIABLE: APXS2_ARGS
27## APXS1_ARGS, APXS2_ARGS 30# @DESCRIPTION:
28##
29## Arguments to pass to the apxs tool 31# Arguments to pass to the apxs tool
30####
31APXS1_ARGS=""
32APXS2_ARGS="" 32APXS2_ARGS=""
33 33
34#### 34# @ECLASS-VARIABLE: APACHE2_MOD_FILE
35## APACHE1_MOD_FILE, APACHE2_MOD_FILE 35# @DESCRIPTION:
36##
37## Name of the module that src_install installs (only, minus the .so) 36# Name of the module that src_install installs (minus the .so)
38####
39APACHE1_MOD_FILE=""
40APACHE2_MOD_FILE="" 37APACHE2_MOD_FILE=""
41 38
42#### 39# @ECLASS-VARIABLE: APACHE2_MOD_CONF
43## APACHE1_MOD_CONF, APACHE2_MOD_CONF 40# @DESCRIPTION:
44##
45## Configuration file installed by src_install 41# Configuration file installed by src_install
46####
47APACHE1_MOD_CONF=""
48APACHE2_MOD_CONF="" 42APACHE2_MOD_CONF=""
49 43
50#### 44# @ECLASS-VARIABLE: APACHE2_MOD_DEFINE
51## APACHE1_MOD_DEFINE, APACHE2_MOD_DEFINE 45# @DESCRIPTION:
52##
53## Name of define (eg FOO) to use in conditional loading of the installed 46# 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 47# module/it's config file, multiple defines should be space separated
55####
56APACHE1_MOD_DEFINE=""
57APACHE2_MOD_DEFINE="" 48APACHE2_MOD_DEFINE=""
58 49
59#### 50# @ECLASS-VARIABLE: DOCFILES
60## DOCFILES 51# @DESCRIPTION:
61##
62## If the exported src_install() is being used, and ${DOCFILES} is non-zero, 52# If the exported src_install() is being used, and ${DOCFILES} is non-zero, some
63## some sed-fu is applied to split out html documentation (if any) from normal 53# sed-fu is applied to split out html documentation (if any) from normal
64## documentation, and dodoc'd or dohtml'd 54# documentation, and dodoc'd or dohtml'd
65####
66DOCFILES="" 55DOCFILES=""
67 56
68###### 57# ==============================================================================
69## Utility functions 58# PUBLIC FUNCTIONS
70###### 59# ==============================================================================
71 60
72#### 61# @FUNCTION: apache_cd_dir
73## apache_cd_dir 62# @DESCRIPTION:
74##
75## Return the path to our temporary build dir 63# Return the path to our temporary build dir
76####
77apache_cd_dir() { 64apache_cd_dir() {
78 debug-print-function $FUNCNAME $* 65 debug-print-function $FUNCNAME $*
79 66
80 if [[ "${APACHE_VERSION}" == "1" ]] ; then
81 [[ -n "${APXS1_S}" ]] && CD_DIR="${APXS1_S}"
82 else
83 [[ -n "${APXS2_S}" ]] && CD_DIR="${APXS2_S}" 67 [[ -n "${APXS2_S}" ]] && CD_DIR="${APXS2_S}"
84 fi
85 68
86 # XXX - Is this really needed? Can't we just return ${S}?
87 if [[ -z "${CD_DIR}" ]] ; then 69 if [[ -z "${CD_DIR}" ]] ; then
88 if [[ -d "${S}/src" ]] ; then 70 if [[ -d "${S}/src" ]] ; then
89 CD_DIR="${S}/src" 71 CD_DIR="${S}/src"
90 else 72 else
91 CD_DIR="${S}" 73 CD_DIR="${S}"
94 76
95 debug-print apache_cd_dir: "CD_DIR=${CD_DIR}" 77 debug-print apache_cd_dir: "CD_DIR=${CD_DIR}"
96 echo "${CD_DIR}" 78 echo "${CD_DIR}"
97} 79}
98 80
99#### 81# @FUNCTION: apache_mod_file
100## apache_mod_file 82# @DESCRIPTION:
101##
102## Return the path to the module file 83# Return the path to the module file
103####
104apache_mod_file() { 84apache_mod_file() {
105 debug-print-function $FUNCNAME $* 85 debug-print-function $FUNCNAME $*
106 86
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}" 87 [[ -n "${APACHE2_MOD_FILE}" ]] && MOD_FILE="${APACHE2_MOD_FILE}"
112 [[ -z "${MOD_FILE}" ]] && MOD_FILE="$(apache_cd_dir)/.libs/${PN}.so" 88 [[ -z "${MOD_FILE}" ]] && MOD_FILE="$(apache_cd_dir)/.libs/${PN}.so"
113 fi
114 89
115 debug-print apache_mod_file: "MOD_FILE=${MOD_FILE}" 90 debug-print apache_mod_file: "MOD_FILE=${MOD_FILE}"
116 echo "${MOD_FILE}" 91 echo "${MOD_FILE}"
117} 92}
118 93
119####
120## apache_doc_magic 94# @FUNCTION: apache_doc_magic
121## 95# @DESCRIPTION:
122## Some magic for picking out html files from ${DOCFILES}. It takes 96# Some magic for picking out html files from ${DOCFILES}. It takes an optional
123## an optional first argument `html'; if the first argument is equals 97# first argument `html'; if the first argument is equals `html', only html files
124## `html', only html files are returned, otherwise normal (non-html) 98# are returned, otherwise normal (non-html) docs are returned.
125## docs are returned.
126####
127apache_doc_magic() { 99apache_doc_magic() {
128 debug-print-function $FUNCNAME $* 100 debug-print-function $FUNCNAME $*
129 101
130 if [[ -n "${DOCFILES}" ]] ; then 102 if [[ -n "${DOCFILES}" ]] ; then
131 if [[ "x$1" == "xhtml" ]] ; then 103 if [[ "x$1" == "xhtml" ]] ; then
137 debug-print apache_doc_magic: "DOCS=${DOCS}" 109 debug-print apache_doc_magic: "DOCS=${DOCS}"
138 echo "${DOCS}" 110 echo "${DOCS}"
139 fi 111 fi
140} 112}
141 113
142###### 114# @FUNCTION: apache-module_pkg_setup
143## Apache 1.x ebuild functions - !!! DEPRECATED !!! 115# @DESCRIPTION:
144###### 116# Checks to see if APACHE2_SAFE_MPMS is set and if the currently installed MPM
145 117# does appear in the list.
146####
147## apache1_src_compile - !!! DEPRECATED !!!
148####
149apache1_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####
161apache1_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####
192apache1_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####
223apache2_pkg_setup() { 118apache-module_pkg_setup() {
224 debug-print-function $FUNCNAME $* 119 debug-print-function $FUNCNAME $*
225 120
226 if [[ -n "${APACHE2_SAFE_MPMS}" ]] ; then 121 if [[ -n "${APACHE2_SAFE_MPMS}" ]] ; then
227 INSTALLED_MPM="$(${ROOT}/usr/sbin/apxs2 -q MPM_NAME)" 122 INSTALLED_MPM="$(${ROOT}/usr/sbin/apxs2 -q MPM_NAME)"
228 123
239 die "No safe MPM installed." 134 die "No safe MPM installed."
240 fi 135 fi
241 fi 136 fi
242} 137}
243 138
244#### 139# @FUNCTION: apache-module_src_compile
245## apache2_src_compile 140# @DESCRIPTION:
246##
247## The default action is to call ${APXS2} with the value of 141# The default action is to call ${APXS2} with the value of ${APXS2_ARGS}. If a
248## ${APXS2_ARGS}. If a module requires a different build setup 142# module requires a different build setup than this, use ${APXS2} in your own
249## than this, use ${APXS2} in your own src_compile routine. 143# src_compile routine.
250####
251apache2_src_compile() { 144apache-module_src_compile() {
252 debug-print-function $FUNCNAME $* 145 debug-print-function $FUNCNAME $*
253 146
254 CD_DIR=$(apache_cd_dir) 147 CD_DIR=$(apache_cd_dir)
255 cd "${CD_DIR}" || die "cd ${CD_DIR} failed" 148 cd "${CD_DIR}" || die "cd ${CD_DIR} failed"
256 APXS2_ARGS="${APXS2_ARGS:--c ${PN}.c}" 149 APXS2_ARGS="${APXS2_ARGS:--c ${PN}.c}"
257 ${APXS2} ${APXS2_ARGS} || die "${APXS2} ${APXS2_ARGS} failed" 150 ${APXS2} ${APXS2_ARGS} || die "${APXS2} ${APXS2_ARGS} failed"
258} 151}
259 152
260#### 153# @FUNCTION: apache-module_src_install
261## apache2_src_install 154# @DESCRIPTION:
262##
263## This installs the files into apache's directories. The module is installed 155# 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, 156# from a directory chosen as above (APXS2_S or ${S}/src). In addition, this
265## this function can also set the executable permission on files listed in EXECFILES. 157# function can also set the executable permission on files listed in
266## The configuration file name is listed in CONFFILE without the .conf extensions, 158# APACHE2_EXECFILES. The configuration file name is listed in APACHE2_MOD_CONF
267## so if you configuration is 55_mod_foo.conf, CONFFILE would be 55_mod_foo. 159# without the .conf extensions, so if you configuration is 55_mod_foo.conf,
268## DOCFILES contains the list of files you want filed as documentation. 160# APACHE2_MOD_CONF would be 55_mod_foo. DOCFILES contains the list of files you
269#### 161# want filed as documentation.
270apache2_src_install() { 162apache-module_src_install() {
271 debug-print-function $FUNCNAME $* 163 debug-print-function $FUNCNAME $*
272 164
273 CD_DIR=$(apache_cd_dir) 165 CD_DIR=$(apache_cd_dir)
274 cd "${CD_DIR}" || die "cd ${CD_DIR} failed" 166 cd "${CD_DIR}" || die "cd ${CD_DIR} failed"
275 167
298 [[ -n "${OTHER_DOCS}" ]] && dodoc ${OTHER_DOCS} 190 [[ -n "${OTHER_DOCS}" ]] && dodoc ${OTHER_DOCS}
299 [[ -n "${HTML_DOCS}" ]] && dohtml ${HTML_DOCS} 191 [[ -n "${HTML_DOCS}" ]] && dohtml ${HTML_DOCS}
300 fi 192 fi
301} 193}
302 194
195# @FUNCTION: apache-module_pkg_postinst
196# @DESCRIPTION:
197# This prints out information about the installed module and how to enable it.
303apache2_pkg_postinst() { 198apache-module_pkg_postinst() {
304 debug-print-function $FUNCNAME $* 199 debug-print-function $FUNCNAME $*
305 200
306 if [[ -n "${APACHE2_MOD_DEFINE}" ]] ; then 201 if [[ -n "${APACHE2_MOD_DEFINE}" ]] ; then
307 local my_opts="-D ${APACHE2_MOD_DEFINE// / -D }" 202 local my_opts="-D ${APACHE2_MOD_DEFINE// / -D }"
308 203
328 else 223 else
329 INSTALLED_MPM_SAFE="${INSTALLED_MPM_SAFE} ${mpm}" 224 INSTALLED_MPM_SAFE="${INSTALLED_MPM_SAFE} ${mpm}"
330 fi 225 fi
331 226
332 if [[ -n "${INSTALLED_MPM_UNSAFE}" ]] ; then 227 if [[ -n "${INSTALLED_MPM_UNSAFE}" ]] ; then
333 ewarn "You have one or more MPMs installed that will not work with" 228 ewarn "Your installed MPM will not work with this module (${PN})."
334 ewarn "this module (${PN}). Please make sure that you only enable" 229 ewarn "Please make sure that you only enable this module"
335 ewarn "this module if you are using one of the following MPMs:" 230 ewarn "if you are using one of the following MPMs:"
336 ewarn " ${INSTALLED_MPM_SAFE}" 231 ewarn " ${INSTALLED_MPM_SAFE}"
337 fi 232 fi
338 fi 233 fi
339} 234}
340 235
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
350apache-module_pkg_setup() {
351 debug-print-function $FUNCNAME $*
352
353 if [[ ${APACHE_VERSION} -eq "2" ]] ; then
354 apache2_pkg_setup
355 fi
356}
357
358apache-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
368apache-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
378apache-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
388EXPORT_FUNCTIONS pkg_setup src_compile src_install pkg_postinst 236EXPORT_FUNCTIONS pkg_setup src_compile src_install pkg_postinst

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.20