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

Diff of /eclass/depend.apache.eclass

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

Revision 1.2 Revision 1.35
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.2 2004/07/16 11:22:57 stuart Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/depend.apache.eclass,v 1.35 2007/11/25 14:27:52 hollow Exp $
4 4
5ECLASS="depend.apache" 5# @ECLASS: depend.apache.eclass
6INHERITED="$INHERITED $ECLASS" 6# @MAINTAINER: apache-devs@gentoo.org
7IUSE="apache apache2" 7# @BLURB: Functions to allow ebuilds to depend on apache
8# @DESCRIPTION:
9# This eclass handles depending on apache in a sane way and providing
10# information 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.
8 17
9DEPEND="$DEPEND apache? ( =net-www/apache-1* ) apache2? ( =net-www/apache-2* )" 18inherit multilib
10 19
11# call this function to work out which version of the apache web server 20# ==============================================================================
12# your ebuild should be installing itself to use 21# INTERNAL VARIABLES
22# ==============================================================================
13 23
14detect_apache_useflags() { 24# @ECLASS-VARIABLE: APACHE_VERSION
25# @DESCRIPTION:
26# Stores the version of apache we are going to be ebuilding. This variable is
27# set by the need_apache functions.
28#APACHE_VERSION="2"
29
30# @ECLASS-VARIABLE: APXS2
31# @DESCRIPTION:
32# Paths to the apxs tool
33APXS2="/usr/sbin/apxs2"
34
35# @ECLASS-VARIABLE: APACHECTL2
36# @DESCRIPTION:
37# Path to the apachectl tool
38APACHECTL2="/usr/sbin/apache2ctl"
39
40# @ECLASS-VARIABLE: APACHE2_BASEDIR
41# @DESCRIPTION:
42# Path to the server root directory
43APACHE2_BASEDIR="/usr/$(get_libdir)/apache2"
44
45# @ECLASS-VARIABLE: APACHE2_CONFDIR
46# @DESCRIPTION:
47# Path to the configuration file directory
48APACHE2_CONFDIR="/etc/apache2"
49
50# @ECLASS-VARIABLE: APACHE2_MODULES_CONFDIR
51# @DESCRIPTION:
52# Path where module configuration files are kept
53APACHE2_MODULES_CONFDIR="${APACHE2_CONFDIR}/modules.d"
54
55# @ECLASS-VARIABLE: APACHE2_VHOSTDIR
56# @DESCRIPTION:
57# Path where virtual host configuration files are kept
58APACHE2_VHOSTDIR="${APACHE2_CONFDIR}/vhosts.d"
59
60# @ECLASS-VARIABLE: APACHE2_MODULESDIR
61# @DESCRIPTION:
62# Path where we install modules
63APACHE2_MODULESDIR="${APACHE2_BASEDIR}/modules"
64
65# @ECLASS-VARIABLE: APACHE2_DEPEND
66# @DESCRIPTION:
67# Dependencies for Apache 2.x
68APACHE2_DEPEND="=www-servers/apache-2*"
69
70# @ECLASS-VARIABLE: APACHE2_0_DEPEND
71# @DESCRIPTION:
72# Dependencies for Apache 2.0.x
73APACHE2_0_DEPEND="=www-servers/apache-2.0*"
74
75# @ECLASS-VARIABLE: APACHE2_2_DEPEND
76# @DESCRIPTION:
77# Dependencies for Apache 2.2.x
78APACHE2_2_DEPEND="=www-servers/apache-2.2*"
79
80# @ECLASS-VARIABLE: WANT_APACHE_DEPEND
81# @DESCRIPTION:
82# Dependency magic based on useflag to use the right DEPEND
83WANT_APACHE_DEPEND="apache2? ( ${APACHE2_DEPEND} )"
84
85# ==============================================================================
86# INTERNAL FUNCTIONS
87# ==============================================================================
88
89# @FUNCTION: uses_apache2
90# @DESCRIPTION:
91# sets up all of the environment variables required for an apache2 module
92uses_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"
15 USE_APACHE1= 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
111doesnt_use_apache() {
112 debug-print-function $FUNCNAME $*
113
114 APACHE_VERSION="0"
16 USE_APACHE2= 115 USE_APACHE="0"
17 USE_APACHE_MULTIPLE=
18
19 useq apache2 && USE_APACHE2=1
20 useq apache && USE_APACHE1=1
21
22 [ -n "$USE_APACHE1" ] && [ -n "$USE_APACHE2" ] && USE_APACHE_MULTIPLE=1
23} 116}
24 117
25detect_apache_installed() { 118# ==============================================================================
26 HAS_APACHE1= 119# PUBLIC FUNCTIONS
27 HAS_APACHE2= 120# ==============================================================================
28 HAS_APACHE_MULTIPLE=
29 HAS_APACHE_ANY=
30 121
31 has_version '=net-www/apache-1*' && HAS_APACHE1=1 && HAS_APACHE_ANY=1 122# @FUNCTION: want_apache
32 has_version '=net-www/apache-2*' && HAS_APACHE2=1 && HAS_APACHE_ANY=1 123# @DESCRIPTION:
33 124# An ebuild calls this to get the dependency information for optional apache-2.x
34 [ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" && HAVE_APACHE_MULTIPLE=1 125# support.
35}
36
37# call this function from your pkg_setup
38
39depend_apache() { 126want_apache() {
40 detect_apache_installed 127 debug-print-function $FUNCNAME $*
41 detect_apache_useflags
42 128
43 # deal with the multiple cases first - much easier 129 IUSE="${IUSE} apache2"
44 if [ -n "$USE_APACHE_MULTIPLE" ]; then 130 DEPEND="${DEPEND} ${WANT_APACHE_DEPEND}"
45 echo 131 RDEPEND="${RDEPEND} ${WANT_APACHE_DEPEND}"
46 eerror "You have both the apache and apache2 USE flags set" 132
47 eerror 133 if use apache2 ; then
48 eerror "Please set only ONE of these USE flags, and try again" 134 uses_apache2
49 echo 135 else
50 die "Multiple Apache USE flags set - you can only have one set at a time" 136 doesnt_use_apache
51 fi 137 fi
138}
52 139
140# @FUNCTION: need_apache2
141# @DESCRIPTION:
142# An ebuild calls this to get the dependency information for apache-2.x. An
143# ebuild should use this in order for future changes to the build infrastructure
144# to happen seamlessly. All an ebuild needs to do is include the line
145# need_apache2 somewhere.
146need_apache2() {
147 debug-print-function $FUNCNAME $*
148
149 DEPEND="${DEPEND} ${APACHE2_DEPEND}"
150 RDEPEND="${RDEPEND} ${APACHE2_DEPEND}"
151 uses_apache2
152}
153
154# @FUNCTION: need_apache2_0
155# @DESCRIPTION:
156# Works like need_apache2 above, but its used by modules that only support
157# apache 2.0 and do not work with higher versions.
158need_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.
170need_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
181need_apache() {
182 need_apache2
183}
184
185# @FUNCTION: apr_config
186# @DESCRIPTION:
187# Version magic to get the correct apr-config binary based on the (probably)
188# installed version of apache. This is needed to get modules to link to the
189# same apr/apu as apache (i.e. link 0.9 for 2.0, 1.x for 2.2)
190apr_config() {
191 debug-print-function $FUNCNAME $*
192
193 local default="${1:-1}"
53 if [ -n "$USE_APACHE2" ] ; then 194 if [[ "${USE_APACHE}" == "2" ]]; then
54 if [ -z "$HAS_APACHE2" -a -n "$HAS_APACHE_ANY" ] ; then 195 if has_version ${APACHE2_0_DEPEND}; then
55 echo 196 echo apr-config
56 eerror "You have the 'apache2' USE flag set, but only have Apache v1 installed" 197 else
57 eerror "If you really meant to upgrade to Apache v2, please install Apache v2" 198 echo apr-1-config
58 eerror "before installing $CATEGORY/${PN}-${PVR}" 199 fi
59 echo
60 die "Automatic upgrade of Apache would be forced; avoiding"
61 else 200 else
62 einfo "Apache 2 support enabled" 201 if [[ "${default}" == "0" ]]; then
63 DETECT_APACHE=2 202 echo apr-config
64 return 203 elif [[ "${default}" == "1" ]]; then
204 echo apr-1-config
205 else
206 die "Unknown version specifier: ${default}"
65 fi 207 fi
66 fi 208 fi
209}
67 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)
216apu_config() {
217 debug-print-function $FUNCNAME $*
218
219 local default="${1:-1}"
68 if [ -n "$USE_APACHE1" ]; then 220 if [[ "${USE_APACHE}" == "2" ]]; then
69 if [ -z "$HAS_APACHE1" -a -n "$HAS_APACHE_ANY" ]; then 221 if has_version ${APACHE2_0_DEPEND}; then
70 echo 222 echo apu-config
71 eerror "You have the 'apache' USE flag set, but only have a later version of" 223 else
72 eerror "Apache installed on your computer. Please use the 'apache2' USE flag" 224 echo apu-1-config
73 eerror "or downgrade to Apache v1 before installing $CATEGORY/${PN}-${PVR}" 225 fi
74 echo
75 die "Avoiding installing older version of Apache"
76 else 226 else
77 einfo "Apache 1 support enabled" 227 if [[ "${default}" == "0" ]]; then
78 DETECT_APACHE=1 228 echo apu-config
79 return 229 elif [[ "${default}" == "1" ]]; then
230 echo apu-1-config
231 else
232 die "Unknown version specifier: ${default}"
80 fi 233 fi
81 fi 234 fi
82} 235}
83

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.35

  ViewVC Help
Powered by ViewVC 1.1.20