/[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.19 - (hide annotations) (download)
Sun Apr 28 16:15:33 2013 UTC (14 months, 3 weeks ago) by zmedico
Branch: MAIN
CVS Tags: HEAD
Changes since 1.18: +3 -3 lines
Bug #467646 - Refer to /etc/portage/make.conf, not /etc/make.conf.

1 zmedico 1.19 # Copyright 1999-2013 Gentoo Foundation
2 stuart 1.1 # Distributed under the terms of the GNU General Public License v2
3 zmedico 1.19 # $Header: /var/cvsroot/gentoo-x86/eclass/php-common-r1.eclass,v 1.18 2011/12/27 17:55:12 fauli 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 zmedico 1.19 eerror "or edit your USE flags in /etc/portage/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 hoffie 1.15 if use "postgres" && use "apache2" && use "threads" ; then
213 hoffie 1.16 if has_version dev-db/libpq ; then
214     if has_version ">=dev-db/libpq-8" && \
215     ! built_with_use ">=dev-db/libpq-8" "threads" ; then
216 hoffie 1.15 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     else
223     local pgsql_ver=$(eselect postgresql show)
224 scarabeus 1.17 if [[ ${pgsql_ver} == "(none)" ]]; then
225     eerror "QA: Please select your PostgreSQL version \"eselect postgresql list\""
226     die "Can't determine PgSQL."
227     fi
228 hoffie 1.15 if ! built_with_use "=dev-db/postgresql-base-${pgsql_ver}*" threads ; then
229     eerror
230     eerror "You must build =dev-db/postgresql-base-${pgsql_ver} with USE=threads"
231     eerror "if you want to build PHP with threads support!"
232     eerror
233     die "Rebuild =dev-db/postgresql-base-${pgsql_ver} with USE=threads"
234     fi
235 hoffie 1.14 fi
236 chtekk 1.7 fi
237     }
238    
239 chtekk 1.9 # ========================================================================
240     # MYSQL CHARSET DETECTION SUPPORT ## Thanks to hoffie
241     # ========================================================================
242    
243     php_get_mycnf_charset() {
244 jokey 1.10 # nothing todo if no mysql installed
245     if [[ ! -f "${ROOT}/etc/mysql/my.cnf" ]]; then
246     echo "empty"
247     return
248     fi
249 chtekk 1.9 local sapi="${1}"
250     local section=""
251     local client_charset=""
252     local sapi_charset=""
253    
254     # remove comments and pipe the output to our while loop
255     while read line ; do
256     line=$(echo "${line}" | sed 's:[;#][^\n]*::g')
257    
258     # skip empty lines
259     if [[ "${line}" == "" ]] ; then
260     continue
261     fi
262    
263     # capture sections
264     tmp=$(echo "${line}" | sed 's:\[\([-a-z0-9\_]*\)\]:\1:')
265     if [[ "${line}" != "${tmp}" ]] ; then
266     section=${tmp}
267     else
268     # we don't need to check lines which are not in a section we are interested about
269     if [[ "${section}" != "client" && "${section}" != "php-${sapi}" ]] ; then
270     continue
271     fi
272    
273     # match default-character-set= lines
274     tmp=$(echo "${line}" | sed 's|^[[:space:]\ ]*default-character-set[[:space:]\ ]*=[[:space:]\ ]*\"\?\([a-z0-9\-]*\)\"\?|\1|')
275     if [[ "${line}" == "${tmp}" ]] ; then
276     # nothing changed, irrelevant line
277     continue
278     fi
279     if [[ "${section}" == "client" ]] ; then
280     client_charset="${tmp}"
281     else
282     if [[ "${section}" == "php-${sapi}" ]] ; then
283     sapi_charset="${tmp}"
284     fi
285     fi
286     fi
287     done < "${ROOT}/etc/mysql/my.cnf"
288     # 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)
289     if [[ -n "${sapi_charset}" ]] ; then
290     echo "${sapi_charset}"
291     elif [[ -n "${client_charset}" ]] ; then
292     echo "${client_charset}"
293     else
294     echo "empty"
295     fi
296     }

  ViewVC Help
Powered by ViewVC 1.1.20