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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.14 - (hide annotations) (download)
Sun May 25 09:27:48 2008 UTC (6 years, 2 months ago) by hoffie
Branch: MAIN
Changes since 1.13: +18 -9 lines
allow for using new-style postgresql packages in php, bug 222933, thanks to dev-zero for the assistance

1 chtekk 1.9 # Copyright 1999-2007 Gentoo Foundation
2 stuart 1.1 # Distributed under the terms of the GNU General Public License v2
3 hoffie 1.14 # $Header: /var/cvsroot/gentoo-x86/eclass/php-common-r1.eclass,v 1.13 2008/03/03 17:05:06 jokey Exp $
4 jokey 1.11
5     # Based on robbat2's work on the php4 sapi eclass
6     # Based on stuart's work on the php5 sapi eclass
7    
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 stuart 1.1
17    
18 chtekk 1.9 # ========================================================================
19 stuart 1.1 # CFLAG SANITY
20 chtekk 1.9 # ========================================================================
21 stuart 1.1
22     php_check_cflags() {
23 chtekk 1.6 # Fixes bug #14067.
24     # Changed order to run it in reverse for bug #32022 and #12021.
25 jokey 1.13 replace-cpu-flags "k6*" "i586"
26 stuart 1.1 }
27    
28 chtekk 1.9 # ========================================================================
29 stuart 1.1 # IMAP SUPPORT
30 chtekk 1.9 # ========================================================================
31 stuart 1.1
32     php_check_imap() {
33 chtekk 1.9 if ! use "imap" && ! phpconfutils_usecheck "imap" ; then
34 stuart 1.1 return
35     fi
36    
37 chtekk 1.9 if use "ssl" || phpconfutils_usecheck "ssl" ; then
38 stuart 1.1 if ! built_with_use virtual/imap-c-client ssl ; then
39     eerror
40 chtekk 1.6 eerror "IMAP with SSL requested, but your IMAP C-Client libraries are built without SSL!"
41 stuart 1.1 eerror
42 chtekk 1.6 die "Please recompile the IMAP C-Client libraries with SSL support enabled"
43     fi
44     else
45     if built_with_use virtual/imap-c-client ssl ; then
46     eerror
47     eerror "IMAP without SSL requested, but your IMAP C-Client libraries are built with SSL!"
48     eerror
49     die "Please recompile the IMAP C-Client libraries with SSL support disabled"
50 stuart 1.1 fi
51     fi
52 jokey 1.13
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 stuart 1.1 }
62    
63 chtekk 1.9 # ========================================================================
64 stuart 1.1 # JAVA EXTENSION SUPPORT
65     #
66 chtekk 1.9 # The bundled java extension is unique to PHP4, but there is
67     # now the PHP-Java-Bridge that works under both PHP4 and PHP5.
68     # ========================================================================
69 stuart 1.1
70 hollow 1.2 php_check_java() {
71 chtekk 1.9 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
72 chtekk 1.6 return
73 stuart 1.1 fi
74    
75 jokey 1.12 JDKHOME="$(java-config --jdk-home)"
76 chtekk 1.6 NOJDKERROR="You need to use the 'java-config' utility to set your JVM to a JDK!"
77     if [[ -z "${JDKHOME}" ]] || [[ ! -d "${JDKHOME}" ]] ; then
78 stuart 1.1 eerror "${NOJDKERROR}"
79     die "${NOJDKERROR}"
80     fi
81    
82     # stuart@gentoo.org - 2003/05/18
83     # Kaffe JVM is not a drop-in replacement for the Sun JDK at this time
84     if echo ${JDKHOME} | grep kaffe > /dev/null 2>&1 ; then
85     eerror
86     eerror "PHP will not build using the Kaffe Java Virtual Machine."
87     eerror "Please change your JVM to either Blackdown or Sun's."
88     eerror
89     eerror "To build PHP without Java support, please re-run this emerge"
90     eerror "and place the line:"
91 hollow 1.2 eerror " USE='-java-internal'"
92 chtekk 1.6 eerror "in front of your emerge command, for example:"
93 hollow 1.2 eerror " USE='-java-internal' emerge =dev-lang/php-4*"
94 stuart 1.1 eerror
95 chtekk 1.6 eerror "or edit your USE flags in /etc/make.conf."
96 stuart 1.1 die "Kaffe JVM not supported"
97     fi
98    
99 hollow 1.2 JDKVER=$(java-config --java-version 2>&1 | awk '/^java version/ { print $3 }' | xargs )
100 stuart 1.1 einfo "Active JDK version: ${JDKVER}"
101 chtekk 1.3 case "${JDKVER}" in
102 stuart 1.1 1.4.*) ;;
103     1.5.*) ewarn "Java 1.5 is NOT supported at this time, and might not work." ;;
104 chtekk 1.6 *) eerror "A Java 1.4 JDK is recommended for Java support in PHP." ; die ;;
105 stuart 1.1 esac
106     }
107    
108     php_install_java() {
109 chtekk 1.9 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
110 chtekk 1.6 return
111 stuart 1.1 fi
112    
113 chtekk 1.6 # We put these into /usr/lib so that they cannot conflict with
114 stuart 1.1 # other versions of PHP (e.g. PHP 4 & PHP 5)
115 chtekk 1.6 insinto "${PHPEXTDIR}"
116 chtekk 1.8
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    
123 stuart 1.1 einfo "Installing JAR for PHP"
124 chtekk 1.6 doins "ext/java/php_java.jar"
125 stuart 1.1
126     einfo "Installing Java test page"
127 chtekk 1.6 newins "ext/java/except.php" "java-test.php"
128 stuart 1.1 }
129    
130 chtekk 1.3 php_install_java_inifile() {
131 chtekk 1.9 if ! use "java-internal" && ! phpconfutils_usecheck "java-internal" ; then
132 chtekk 1.6 return
133 chtekk 1.4 fi
134    
135 jokey 1.12 JAVA_LIBRARY="$(grep -- '-DJAVALIB' Makefile | sed -e 's,.\+-DJAVALIB=\"\([^"]*\)\".*$,\1,g;' | sort -u)"
136 chtekk 1.3
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"
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"
141    
142     dosym "${PHP_EXT_INI_DIR}/java.ini" "${PHP_EXT_INI_DIR_ACTIVE}/java.ini"
143     }
144    
145 chtekk 1.9 # ========================================================================
146 stuart 1.1 # MTA SUPPORT
147 chtekk 1.9 # ========================================================================
148 stuart 1.1
149     php_check_mta() {
150 chtekk 1.6 if ! [[ -x "${ROOT}/usr/sbin/sendmail" ]] ; then
151     ewarn
152     ewarn "You need a virtual/mta that provides a sendmail compatible binary!"
153     ewarn "All major MTAs provide this, and it's usually some symlink created"
154     ewarn "as '${ROOT}/usr/sbin/sendmail*'. You should also be able to use other"
155     ewarn "MTAs directly, but you'll have to edit the sendmail_path directive"
156     ewarn "in your php.ini for this to work."
157     ewarn
158     fi
159 stuart 1.1 }
160    
161 chtekk 1.9 # ========================================================================
162 stuart 1.1 # ORACLE SUPPORT
163 chtekk 1.9 # ========================================================================
164 stuart 1.1
165 chtekk 1.5 php_check_oracle_all() {
166 chtekk 1.9 if use "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then
167 stuart 1.1 eerror
168 chtekk 1.6 eerror "You must have the ORACLE_HOME variable set in your environment to"
169     eerror "compile the Oracle extension."
170 stuart 1.1 eerror
171     die "Oracle configuration incorrect; user error"
172     fi
173    
174 chtekk 1.9 if use "oci8" || use "oracle7" ; then
175 stuart 1.1 if has_version 'dev-db/oracle-instantclient-basic' ; then
176 chtekk 1.6 ewarn
177 stuart 1.1 ewarn "Please ensure you have a full install of the Oracle client."
178 chtekk 1.6 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient."
179     ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you"
180     ewarn "want to use 'dev-db/oracle-instantclient-basic' as Oracle client."
181     ewarn
182 stuart 1.1 fi
183     fi
184     }
185    
186 chtekk 1.5 php_check_oracle_8() {
187 chtekk 1.9 if use "oci8" && [[ -z "${ORACLE_HOME}" ]] ; then
188 chtekk 1.5 eerror
189 chtekk 1.6 eerror "You must have the ORACLE_HOME variable set in your environment to"
190     eerror "compile the Oracle extension."
191 chtekk 1.5 eerror
192     die "Oracle configuration incorrect; user error"
193     fi
194    
195 chtekk 1.9 if use "oci8" ; then
196 chtekk 1.5 if has_version 'dev-db/oracle-instantclient-basic' ; then
197 chtekk 1.6 ewarn
198 chtekk 1.5 ewarn "Please ensure you have a full install of the Oracle client."
199 chtekk 1.6 ewarn "'dev-db/oracle-instantclient-basic' is NOT sufficient."
200     ewarn "Please enable the 'oci8-instant-client' USE flag instead, if you"
201     ewarn "want to use 'dev-db/oracle-instantclient-basic' as Oracle client."
202     ewarn
203 chtekk 1.5 fi
204     fi
205     }
206    
207 chtekk 1.9 # ========================================================================
208 chtekk 1.7 # POSTGRESQL SUPPORT
209 chtekk 1.9 # ========================================================================
210 chtekk 1.7
211     php_check_pgsql() {
212 chtekk 1.9 if use "postgres" \
213 hoffie 1.14 && use "apache2" && use "threads" ; then
214     if has_version ">=dev-db/libpq-8.1.3-r1" \
215     && ! built_with_use ">=dev-db/libpq-8.1.3-r1" "threads" ; then
216     eerror
217     eerror "You must build dev-db/libpq with USE=threads"
218     eerror "if you want to build PHP with threads support!"
219     eerror
220     die "Rebuild dev-db/libpq with USE=threads"
221     fi
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 chtekk 1.7 fi
231     }
232    
233 chtekk 1.9 # ========================================================================
234     # MYSQL CHARSET DETECTION SUPPORT ## Thanks to hoffie
235     # ========================================================================
236    
237     php_get_mycnf_charset() {
238 jokey 1.10 # nothing todo if no mysql installed
239     if [[ ! -f "${ROOT}/etc/mysql/my.cnf" ]]; then
240     echo "empty"
241     return
242     fi
243 chtekk 1.9 local sapi="${1}"
244     local section=""
245     local client_charset=""
246     local sapi_charset=""
247    
248     # remove comments and pipe the output to our while loop
249     while read line ; do
250     line=$(echo "${line}" | sed 's:[;#][^\n]*::g')
251    
252     # skip empty lines
253     if [[ "${line}" == "" ]] ; then
254     continue
255     fi
256    
257     # capture sections
258     tmp=$(echo "${line}" | sed 's:\[\([-a-z0-9\_]*\)\]:\1:')
259     if [[ "${line}" != "${tmp}" ]] ; then
260     section=${tmp}
261     else
262     # we don't need to check lines which are not in a section we are interested about
263     if [[ "${section}" != "client" && "${section}" != "php-${sapi}" ]] ; then
264     continue
265     fi
266    
267     # match default-character-set= lines
268     tmp=$(echo "${line}" | sed 's|^[[:space:]\ ]*default-character-set[[:space:]\ ]*=[[:space:]\ ]*\"\?\([a-z0-9\-]*\)\"\?|\1|')
269     if [[ "${line}" == "${tmp}" ]] ; then
270     # nothing changed, irrelevant line
271     continue
272     fi
273     if [[ "${section}" == "client" ]] ; then
274     client_charset="${tmp}"
275     else
276     if [[ "${section}" == "php-${sapi}" ]] ; then
277     sapi_charset="${tmp}"
278     fi
279     fi
280     fi
281     done < "${ROOT}/etc/mysql/my.cnf"
282     # 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)
283     if [[ -n "${sapi_charset}" ]] ; then
284     echo "${sapi_charset}"
285     elif [[ -n "${client_charset}" ]] ; then
286     echo "${client_charset}"
287     else
288     echo "empty"
289     fi
290     }

  ViewVC Help
Powered by ViewVC 1.1.20