/[gentoo-x86]/eclass/php-common-r1.eclass
Gentoo

Diff of /eclass/php-common-r1.eclass

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

Revision 1.6 Revision 1.15
1# Copyright 1999-2005 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/php-common-r1.eclass,v 1.6 2006/03/24 23:05:49 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/php-common-r1.eclass,v 1.15 2008/05/27 10:14:34 hoffie Exp $
4 4
5# ########################################################################
6#
7# eclass/php-common-r1.eclass
8# Contains common functions which are shared between the
9# PHP4 and PHP5 packages
10#
11# USE THIS ECLASS FOR THE "CONSOLIDATED" PACKAGES
12#
13# Based on robbat2's work on the php4 sapi eclass 5# Based on robbat2's work on the php4 sapi eclass
14# Based on stuart's work on the php5 sapi eclass 6# Based on stuart's work on the php5 sapi eclass
15#
16# Maintained by the PHP Herd <php-bugs@gentoo.org>
17#
18# ########################################################################
19 7
20# ######################################################################## 8# @ECLASS: php-common-r1.eclass
9# @MAINTAINER:
10# Gentoo PHP team <php-bugs@gentoo.org>
11# @BLURB: Common functions which are shared between the PHP4 and PHP5 packages.
12# @DESCRIPTION:
13# This eclass provides common functions which are shared between the PHP4 and PHP5 packages.
14# It is only used by php*-sapi eclasses currently and the functions are not intended
15# for direct use in ebuilds.
16
17
18# ========================================================================
21# CFLAG SANITY 19# CFLAG SANITY
22# ######################################################################## 20# ========================================================================
23 21
24php_check_cflags() { 22php_check_cflags() {
25 # Filter the following from C[XX]FLAGS regardless, as apache won't be
26 # supporting LFS until 2.2 is released and in the tree. Fixes bug #24373.
27 filter-flags "-D_FILE_OFFSET_BITS=64"
28 filter-flags "-D_FILE_OFFSET_BITS=32"
29 filter-flags "-D_LARGEFILE_SOURCE=1"
30 filter-flags "-D_LARGEFILE_SOURCE"
31
32 # Fixes bug #14067. 23 # Fixes bug #14067.
33 # Changed order to run it in reverse for bug #32022 and #12021. 24 # Changed order to run it in reverse for bug #32022 and #12021.
34 replace-flags "-march=k6-3" "-march=i586" 25 replace-cpu-flags "k6*" "i586"
35 replace-flags "-march=k6-2" "-march=i586"
36 replace-flags "-march=k6" "-march=i586"
37} 26}
38 27
39# ######################################################################## 28# ========================================================================
40# IMAP SUPPORT 29# IMAP SUPPORT
41# ######################################################################## 30# ========================================================================
42 31
43php_check_imap() { 32php_check_imap() {
44 if ! useq "imap" && ! phpconfutils_usecheck "imap" ; then 33 if ! use "imap" && ! phpconfutils_usecheck "imap" ; then
45 return 34 return
46 fi 35 fi
47 36
48 if useq "ssl" || phpconfutils_usecheck "ssl" ; then 37 if use "ssl" || phpconfutils_usecheck "ssl" ; then
49 if ! built_with_use virtual/imap-c-client ssl ; then 38 if ! built_with_use virtual/imap-c-client ssl ; then
50 eerror 39 eerror
51 eerror "IMAP with SSL requested, but your IMAP C-Client libraries are built without SSL!" 40 eerror "IMAP with SSL requested, but your IMAP C-Client libraries are built without SSL!"
52 eerror 41 eerror
53 die "Please recompile the IMAP C-Client libraries with SSL support enabled" 42 die "Please recompile the IMAP C-Client libraries with SSL support enabled"
58 eerror "IMAP without SSL requested, but your IMAP C-Client libraries are built with SSL!" 47 eerror "IMAP without SSL requested, but your IMAP C-Client libraries are built with SSL!"
59 eerror 48 eerror
60 die "Please recompile the IMAP C-Client libraries with SSL support disabled" 49 die "Please recompile the IMAP C-Client libraries with SSL support disabled"
61 fi 50 fi
62 fi 51 fi
63}
64 52
65# ######################################################################## 53 if use "kolab" || phpconfutils_usecheck "kolab" ; then
54 if ! built_with_use net-libs/c-client kolab ; then
55 eerror
56 eerror "IMAP with annotations support requested, but net-libs/c-client is built without it!"
57 eerror
58 die "Please recompile net-libs/c-client with USE=kolab."
59 fi
60 fi
61}
62
63# ========================================================================
66# JAVA EXTENSION SUPPORT 64# JAVA EXTENSION SUPPORT
67# 65#
68# The bundled java extension is unique to PHP4 at the time of writing, but 66# The bundled java extension is unique to PHP4, but there is
69# there is now the PHP-Java-Bridge that works under both PHP4 and PHP5. 67# now the PHP-Java-Bridge that works under both PHP4 and PHP5.
70# ######################################################################## 68# ========================================================================
71 69
72php_check_java() { 70php_check_java() {
73 if ! useq "java-internal" && ! phpconfutils_usecheck "java-internal" ; then 71 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
74 return 72 return
75 fi 73 fi
76 74
77 JDKHOME="`java-config --jdk-home`" 75 JDKHOME="$(java-config --jdk-home)"
78 NOJDKERROR="You need to use the 'java-config' utility to set your JVM to a JDK!" 76 NOJDKERROR="You need to use the 'java-config' utility to set your JVM to a JDK!"
79 if [[ -z "${JDKHOME}" ]] || [[ ! -d "${JDKHOME}" ]] ; then 77 if [[ -z "${JDKHOME}" ]] || [[ ! -d "${JDKHOME}" ]] ; then
80 eerror "${NOJDKERROR}" 78 eerror "${NOJDKERROR}"
81 die "${NOJDKERROR}" 79 die "${NOJDKERROR}"
82 fi 80 fi
106 *) eerror "A Java 1.4 JDK is recommended for Java support in PHP." ; die ;; 104 *) eerror "A Java 1.4 JDK is recommended for Java support in PHP." ; die ;;
107 esac 105 esac
108} 106}
109 107
110php_install_java() { 108php_install_java() {
111 if ! useq "java-internal" && ! phpconfutils_usecheck "java-internal" ; then 109 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
112 return 110 return
113 fi 111 fi
114 112
115 # We put these into /usr/lib so that they cannot conflict with 113 # We put these into /usr/lib so that they cannot conflict with
116 # other versions of PHP (e.g. PHP 4 & PHP 5) 114 # other versions of PHP (e.g. PHP 4 & PHP 5)
117 insinto "${PHPEXTDIR}" 115 insinto "${PHPEXTDIR}"
116
117 einfo "Installing PHP java extension"
118 doins "modules/java.so"
119
120 einfo "Creating PHP java extension symlink"
121 dosym "${PHPEXTDIR}/java.so" "${PHPEXTDIR}/libphp_java.so"
122
118 einfo "Installing JAR for PHP" 123 einfo "Installing JAR for PHP"
119 doins "ext/java/php_java.jar" 124 doins "ext/java/php_java.jar"
120 125
121 einfo "Installing Java test page" 126 einfo "Installing Java test page"
122 newins "ext/java/except.php" "java-test.php" 127 newins "ext/java/except.php" "java-test.php"
123
124 einfo "Installing Java extension for PHP"
125 doins "modules/java.so"
126
127 dosym "${PHPEXTDIR}/java.so" "${PHPEXTDIR}/libphp_java.so"
128} 128}
129 129
130php_install_java_inifile() { 130php_install_java_inifile() {
131 if ! useq "java-internal" && ! phpconfutils_usecheck "java-internal" ; then 131 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
132 return 132 return
133 fi 133 fi
134 134
135 JAVA_LIBRARY="`grep -- '-DJAVALIB' Makefile | sed -e 's,.\+-DJAVALIB=\"\([^"]*\)\".*$,\1,g;' | sort -u`" 135 JAVA_LIBRARY="$(grep -- '-DJAVALIB' Makefile | sed -e 's,.\+-DJAVALIB=\"\([^"]*\)\".*$,\1,g;' | sort -u)"
136 136
137 echo "extension = java.so" >> "${D}/${PHP_EXT_INI_DIR}/java.ini" 137 echo "extension = java.so" >> "${D}/${PHP_EXT_INI_DIR}/java.ini"
138 echo "java.library = ${JAVA_LIBRARY}" >> "${D}/${PHP_EXT_INI_DIR}/java.ini" 138 echo "java.library = ${JAVA_LIBRARY}" >> "${D}/${PHP_EXT_INI_DIR}/java.ini"
139 echo "java.class.path = ${PHPEXTDIR}/php_java.jar" >> "${D}/${PHP_EXT_INI_DIR}/java.ini" 139 echo "java.class.path = ${PHPEXTDIR}/php_java.jar" >> "${D}/${PHP_EXT_INI_DIR}/java.ini"
140 echo "java.library.path = ${PHPEXTDIR}" >> "${D}/${PHP_EXT_INI_DIR}/java.ini" 140 echo "java.library.path = ${PHPEXTDIR}" >> "${D}/${PHP_EXT_INI_DIR}/java.ini"
141 141
142 dosym "${PHP_EXT_INI_DIR}/java.ini" "${PHP_EXT_INI_DIR_ACTIVE}/java.ini" 142 dosym "${PHP_EXT_INI_DIR}/java.ini" "${PHP_EXT_INI_DIR_ACTIVE}/java.ini"
143} 143}
144 144
145# ######################################################################## 145# ========================================================================
146# MTA SUPPORT 146# MTA SUPPORT
147# ######################################################################## 147# ========================================================================
148 148
149php_check_mta() { 149php_check_mta() {
150 if ! [[ -x "${ROOT}/usr/sbin/sendmail" ]] ; then 150 if ! [[ -x "${ROOT}/usr/sbin/sendmail" ]] ; then
151 ewarn 151 ewarn
152 ewarn "You need a virtual/mta that provides a sendmail compatible binary!" 152 ewarn "You need a virtual/mta that provides a sendmail compatible binary!"
156 ewarn "in your php.ini for this to work." 156 ewarn "in your php.ini for this to work."
157 ewarn 157 ewarn
158 fi 158 fi
159} 159}
160 160
161# ######################################################################## 161# ========================================================================
162# ORACLE SUPPORT 162# ORACLE SUPPORT
163# ######################################################################## 163# ========================================================================
164 164
165php_check_oracle_all() { 165php_check_oracle_all() {
166 if useq "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then 166 if use "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then
167 eerror 167 eerror
168 eerror "You must have the ORACLE_HOME variable set in your environment to" 168 eerror "You must have the ORACLE_HOME variable set in your environment to"
169 eerror "compile the Oracle extension." 169 eerror "compile the Oracle extension."
170 eerror 170 eerror
171 die "Oracle configuration incorrect; user error" 171 die "Oracle configuration incorrect; user error"
172 fi 172 fi
173 173
174 if useq "oci8" || useq "oracle7" ; then 174 if use "oci8" || use "oracle7" ; then
175 if has_version 'dev-db/oracle-instantclient-basic' ; then 175 if has_version 'dev-db/oracle-instantclient-basic' ; then
176 ewarn 176 ewarn
177 ewarn "Please ensure you have a full install of the Oracle client." 177 ewarn "Please ensure you have a full install of the Oracle client."
178 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient." 178 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient."
179 ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you" 179 ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you"
182 fi 182 fi
183 fi 183 fi
184} 184}
185 185
186php_check_oracle_8() { 186php_check_oracle_8() {
187 if useq "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then 187 if use "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then
188 eerror 188 eerror
189 eerror "You must have the ORACLE_HOME variable set in your environment to" 189 eerror "You must have the ORACLE_HOME variable set in your environment to"
190 eerror "compile the Oracle extension." 190 eerror "compile the Oracle extension."
191 eerror 191 eerror
192 die "Oracle configuration incorrect; user error" 192 die "Oracle configuration incorrect; user error"
193 fi 193 fi
194 194
195 if useq "oci8" ; then 195 if use "oci8" ; then
196 if has_version 'dev-db/oracle-instantclient-basic' ; then 196 if has_version 'dev-db/oracle-instantclient-basic' ; then
197 ewarn 197 ewarn
198 ewarn "Please ensure you have a full install of the Oracle client." 198 ewarn "Please ensure you have a full install of the Oracle client."
199 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient." 199 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient."
200 ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you" 200 ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you"
202 ewarn 202 ewarn
203 fi 203 fi
204 fi 204 fi
205} 205}
206 206
207# ######################################################################## 207# ========================================================================
208# END OF ECLASS 208# POSTGRESQL SUPPORT
209# ######################################################################## 209# ========================================================================
210
211php_check_pgsql() {
212 if use "postgres" && use "apache2" && use "threads" ; then
213 if has_version ">=dev-db/libpq-8.1.3-r1" ; then
214 if ! built_with_use ">=dev-db/libpq-8.1.3-r1" "threads" ; then
215 eerror
216 eerror "You must build dev-db/libpq with USE=threads"
217 eerror "if you want to build PHP with threads support!"
218 eerror
219 die "Rebuild dev-db/libpq with USE=threads"
220 fi
221 else
222 local pgsql_ver=$(eselect postgresql show)
223 if ! built_with_use "=dev-db/postgresql-base-${pgsql_ver}*" threads ; then
224 eerror
225 eerror "You must build =dev-db/postgresql-base-${pgsql_ver} with USE=threads"
226 eerror "if you want to build PHP with threads support!"
227 eerror
228 die "Rebuild =dev-db/postgresql-base-${pgsql_ver} with USE=threads"
229 fi
230 fi
231 fi
232}
233
234# ========================================================================
235# MYSQL CHARSET DETECTION SUPPORT ## Thanks to hoffie
236# ========================================================================
237
238php_get_mycnf_charset() {
239 # nothing todo if no mysql installed
240 if [[ ! -f "${ROOT}/etc/mysql/my.cnf" ]]; then
241 echo "empty"
242 return
243 fi
244 local sapi="${1}"
245 local section=""
246 local client_charset=""
247 local sapi_charset=""
248
249 # remove comments and pipe the output to our while loop
250 while read line ; do
251 line=$(echo "${line}" | sed 's:[;#][^\n]*::g')
252
253 # skip empty lines
254 if [[ "${line}" == "" ]] ; then
255 continue
256 fi
257
258 # capture sections
259 tmp=$(echo "${line}" | sed 's:\[\([-a-z0-9\_]*\)\]:\1:')
260 if [[ "${line}" != "${tmp}" ]] ; then
261 section=${tmp}
262 else
263 # we don't need to check lines which are not in a section we are interested about
264 if [[ "${section}" != "client" && "${section}" != "php-${sapi}" ]] ; then
265 continue
266 fi
267
268 # match default-character-set= lines
269 tmp=$(echo "${line}" | sed 's|^[[:space:]\ ]*default-character-set[[:space:]\ ]*=[[:space:]\ ]*\"\?\([a-z0-9\-]*\)\"\?|\1|')
270 if [[ "${line}" == "${tmp}" ]] ; then
271 # nothing changed, irrelevant line
272 continue
273 fi
274 if [[ "${section}" == "client" ]] ; then
275 client_charset="${tmp}"
276 else
277 if [[ "${section}" == "php-${sapi}" ]] ; then
278 sapi_charset="${tmp}"
279 fi
280 fi
281 fi
282 done < "${ROOT}/etc/mysql/my.cnf"
283 # if a sapi-specific section with a default-character-set= value was found we use it, otherwise we use the client charset (which may be empty)
284 if [[ -n "${sapi_charset}" ]] ; then
285 echo "${sapi_charset}"
286 elif [[ -n "${client_charset}" ]] ; then
287 echo "${client_charset}"
288 else
289 echo "empty"
290 fi
291}

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.20