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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (show annotations) (download)
Fri Mar 24 23:05:47 2006 UTC (8 years, 4 months ago) by chtekk
Branch: MAIN
Changes since 1.11: +184 -169 lines
Use phpconfutils, fix bug #120088, fix bug #122379.

1 # Copyright 1999-2005 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.php.eclass,v 1.11 2006/01/21 11:48:29 chtekk Exp $
4 #
5 # ========================================================================
6 #
7 # depend.php.eclass
8 # functions to allow ebuilds to depend on php4 and/or php5
9 #
10 # Author: Stuart Herbert
11 # <stuart@gentoo.org>
12 #
13 # Author: Luca Longinotti
14 # <chtekk@gentoo.org>
15 #
16 # Maintained by the PHP Herd <php-bugs@gentoo.org>
17 #
18 # ========================================================================
19
20 inherit eutils phpconfutils
21
22 # PHP4-only depend functions
23 need_php4_cli() {
24 DEPEND="${DEPEND} =virtual/php-4*"
25 RDEPEND="${RDEPEND} =virtual/php-4*"
26 PHP_VERSION="4"
27 }
28
29 need_php4_httpd() {
30 DEPEND="${DEPEND} =virtual/httpd-php-4*"
31 RDEPEND="${RDEPEND} =virtual/httpd-php-4*"
32 PHP_VERSION="4"
33 }
34
35 need_php4() {
36 DEPEND="${DEPEND} =dev-lang/php-4*"
37 RDEPEND="${RDEPEND} =dev-lang/php-4*"
38 PHP_VERSION="4"
39 PHP_SHARED_CAT="php4"
40 }
41
42 # common settings go in here
43 uses_php4() {
44 # cache this
45 libdir=$(get_libdir)
46
47 PHPIZE="/usr/${libdir}/php4/bin/phpize"
48 PHPCONFIG="/usr/${libdir}/php4/bin/php-config"
49 PHPCLI="/usr/${libdir}/php4/bin/php"
50 PHPCGI="/usr/${libdir}/php4/bin/php-cgi"
51 PHP_PKG="`best_version =dev-lang/php-4*`"
52 PHPPREFIX="/usr/${libdir}/php4"
53
54 einfo
55 einfo "Using ${PHP_PKG}"
56 einfo
57 }
58
59 # PHP5-only depend functions
60 need_php5_cli() {
61 DEPEND="${DEPEND} =virtual/php-5*"
62 RDEPEND="${RDEPEND} =virtual/php-5*"
63 PHP_VERSION="5"
64 }
65
66 need_php5_httpd() {
67 DEPEND="${DEPEND} =virtual/httpd-php-5*"
68 RDEPEND="${RDEPEND} =virtual/httpd-php-5*"
69 PHP_VERSION="5"
70 }
71
72 need_php5() {
73 DEPEND="${DEPEND} =dev-lang/php-5*"
74 RDEPEND="${RDEPEND} =dev-lang/php-5*"
75 PHP_VERSION="5"
76 PHP_SHARED_CAT="php5"
77 }
78
79 # common settings go in here
80 uses_php5() {
81 # cache this
82 libdir=$(get_libdir)
83
84 PHPIZE="/usr/${libdir}/php5/bin/phpize"
85 PHPCONFIG="/usr/${libdir}/php5/bin/php-config"
86 PHPCLI="/usr/${libdir}/php5/bin/php"
87 PHPCGI="/usr/${libdir}/php5/bin/php-cgi"
88 PHP_PKG="`best_version =dev-lang/php-5*`"
89 PHPPREFIX="/usr/${libdir}/php5"
90
91 einfo
92 einfo "Using ${PHP_PKG}"
93 einfo
94 }
95
96 # general PHP depend functions
97 need_php_cli() {
98 DEPEND="${DEPEND} virtual/php"
99 RDEPEND="${RDEPEND} virtual/php"
100 }
101
102 need_php_httpd() {
103 DEPEND="${DEPEND} virtual/httpd-php"
104 RDEPEND="${RDEPEND} virtual/httpd-php"
105 }
106
107 need_php() {
108 DEPEND="${DEPEND} dev-lang/php"
109 RDEPEND="${RDEPEND} dev-lang/php"
110 PHP_SHARED_CAT="php"
111 }
112
113 need_php_by_category() {
114 case "${CATEGORY}" in
115 dev-php) need_php ;;
116 dev-php4) need_php4 ;;
117 dev-php5) need_php5 ;;
118 *) die "I don't know which version of PHP packages in ${CATEGORY} require"
119 esac
120 }
121
122 # Call this function from your pkg_setup, src_compile and src_install methods
123 # if you need to know where the PHP binaries are installed and their data
124
125 has_php() {
126 # If PHP_PKG is already set, then we have remembered our PHP settings
127 # from last time
128 if [[ -n ${PHP_PKG} ]] ; then
129 return
130 fi
131
132 if [[ -z ${PHP_VERSION} ]] ; then
133 # Detect which PHP version we have installed
134 if has_version '=dev-lang/php-5*' ; then
135 PHP_VERSION="5"
136 elif has_version '=dev-lang/php-4*' ; then
137 PHP_VERSION="4"
138 else
139 die "Unable to find an installed dev-lang/php package"
140 fi
141 fi
142
143 # If we get here, then PHP_VERSION tells us which version of PHP we
144 # want to use
145 uses_php${PHP_VERSION}
146 }
147
148 # Call this function from pkg_setup if your package only works with
149 # specific SAPIs
150 #
151 # $1 ... a list of PHP SAPI USE flags (cli, cgi, apache, apache2)
152 #
153 # Returns if any one of the listed SAPIs have been installed
154 # Dies if none of the listed SAPIs have been installed
155
156 require_php_sapi_from() {
157 has_php
158
159 local has_sapi="0"
160 local x
161
162 einfo "Checking for compatible SAPI(s)"
163
164 for x in $@ ; do
165 if built_with_use =${PHP_PKG} ${x} ; then
166 einfo " Discovered compatible SAPI ${x}"
167 has_sapi="1"
168 fi
169 done
170
171 if [[ "${has_sapi}" == "1" ]] ; then
172 return
173 fi
174
175 eerror
176 eerror "${PHP_PKG} needs to be re-installed with one of the following"
177 eerror "USE flags enabled:"
178 eerror
179 eerror " $@"
180 eerror
181 die "No compatible PHP SAPIs found"
182 }
183
184 # Call this function from pkg_setup if your package requires PHP compiled
185 # with specific USE flags
186 #
187 # $1 ... a list of USE flags
188 #
189 # Returns if all of the listed USE flags are enabled
190 # Dies if any of the listed USE flags are disabled
191
192 require_php_with_use() {
193 has_php
194
195 local missing_use=""
196 local x
197
198 einfo "Checking for required PHP feature(s):"
199
200 for x in $@ ; do
201 if ! built_with_use =${PHP_PKG} ${x} && ! phpconfutils_built_with_use =${PHP_PKG} ${x} ; then
202 einfo " Discovered missing USE flag ${x}"
203 missing_use="${missing_use} ${x}"
204 fi
205 done
206
207 if [[ -z ${missing_use} ]] ; then
208 return
209 fi
210
211 eerror
212 eerror "${PHP_PKG} needs to be re-installed with all of the following"
213 eerror "USE flags enabled:"
214 eerror
215 eerror " $@"
216 eerror
217 die "Missing PHP USE flags found"
218 }
219
220 # Call this function from pkg_setup if your package requires PHP compiled
221 # with any of specified USE flags
222 #
223 # $1 ... a list of USE flags
224 #
225 # Returns if any of the listed USE flags are enabled
226 # Dies if all of the listed USE flags are disabled
227
228 require_php_with_any_use() {
229 has_php
230
231 local missing_use=""
232 local x
233
234 einfo "Checking for required PHP feature(s):"
235
236 for x in $@ ; do
237 if built_with_use =${PHP_PKG} ${x} || phpconfutils_built_with_use =${PHP_PKG} ${x} ; then
238 einfo " USE flag ${x} is enabled, ok ..."
239 return
240 else
241 missing_use="${missing_use} ${x}"
242 fi
243 done
244
245 if [[ -z ${missing_use} ]] ; then
246 return
247 fi
248
249 eerror
250 eerror "${PHP_PKG} needs to be re-installed with any of the following"
251 eerror "USE flags enabled:"
252 eerror
253 eerror " $@"
254 eerror
255 die "Missing PHP USE flags found"
256 }
257
258 # ========================================================================
259 # has_*() functions
260 #
261 # These functions return 0 if the condition is satisfied, 1 otherwise
262 # ========================================================================
263
264 # Check if our PHP was compiled with ZTS (Zend Thread Safety) enabled
265
266 has_zts() {
267 has_php
268
269 if built_with_use =${PHP_PKG} apache2 threads ; then
270 return 0
271 fi
272
273 return 1
274 }
275
276 # Check if our PHP was built with Hardened-PHP enabled
277
278 has_hardenedphp() {
279 has_php
280
281 if built_with_use =${PHP_PKG} hardenedphp ; then
282 return 0
283 fi
284
285 return 1
286 }
287
288 # Check if our PHP was built with debug support enabled
289
290 has_debug() {
291 has_php
292
293 if built_with_use =${PHP_PKG} debug ; then
294 return 0
295 fi
296
297 return 1
298 }
299
300 # ========================================================================
301 # require_*() functions
302 #
303 # These functions die() if PHP was built without the required features
304 # ========================================================================
305
306 # Require a PHP built with PDO support (PHP5 only)
307
308 require_pdo() {
309 has_php
310
311 # Do we have PHP5 installed?
312 if [[ "${PHP_VERSION}" == "4" ]] ; then
313 eerror
314 eerror "This package requires PDO."
315 eerror "PDO is only available for PHP 5."
316 eerror "You must install =dev-lang/php-5.0* with"
317 eerror "the 'pdo-external' USE flag or you must"
318 eerror "install >=dev-lang/php-5.1 with either"
319 eerror "the 'pdo' or the 'pdo-external' USE flags"
320 eerror "turned on."
321 eerror
322 die "PHP 5 not installed"
323 fi
324
325 # Was PHP5 compiled with internal PDO support?
326 if built_with_use =${PHP_PKG} pdo ; then
327 return
328 fi
329
330 # Ok, maybe PDO was built as an external extension?
331 if built_with_use =${PHP_PKG} pdo-external && has_version 'dev-php5/pecl-pdo' ; then
332 return
333 fi
334
335 # Ok, as last resort, it suffices that pecl-pdo was installed to have PDO support
336 if has_version 'dev-php5/pecl-pdo' ; then
337 return
338 fi
339
340 # If we get here, then we have no PDO support
341 eerror
342 eerror "No PDO extension for PHP found."
343 eerror "Please note that PDO only exists for PHP 5."
344 eerror "Please install a PDO extension for PHP 5,"
345 eerror "you must install =dev-lang/php-5.0* with"
346 eerror "the 'pdo-external' USE flag or you must"
347 eerror "install >=dev-lang/php-5.1 with either"
348 eerror "the 'pdo' or the 'pdo-external' USE flags"
349 eerror "turned on."
350 eerror
351 die "No PDO extension for PHP 5 found"
352 }
353
354 # Determines which installed PHP version has the CLI SAPI enabled,
355 # useful for PEAR stuff, or anything which needs to run PHP
356 # scripts depending on the CLI SAPI
357
358 require_php_cli() {
359 # If PHP_PKG is set, then we have remembered our PHP settings
360 # from last time
361 if [[ -n ${PHP_PKG} ]] ; then
362 return
363 fi
364
365 local PHP_PACKAGE_FOUND=""
366
367 # Detect which PHP version we have installed
368 if has_version '=dev-lang/php-4*' ; then
369 PHP_PACKAGE_FOUND="1"
370 pkg="`best_version '=dev-lang/php-4*'`"
371 if built_with_use =${pkg} cli ; then
372 PHP_VERSION="4"
373 fi
374 fi
375
376 if has_version '=dev-lang/php-5*' ; then
377 PHP_PACKAGE_FOUND="1"
378 pkg="`best_version '=dev-lang/php-5*'`"
379 if built_with_use =${pkg} cli ; then
380 PHP_VERSION="5"
381 fi
382 fi
383
384 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
385 die "Unable to find an installed dev-lang/php package"
386 fi
387
388 if [[ -z ${PHP_VERSION} ]] ; then
389 die "No PHP CLI installed"
390 fi
391
392 # If we get here, then PHP_VERSION tells us which version of PHP we
393 # want to use
394 uses_php${PHP_VERSION}
395 }
396
397 # Determines which installed PHP version has the CGI SAPI enabled,
398 # useful for anything which needs to run PHP scripts
399 # depending on the CGI SAPI
400
401 require_php_cgi() {
402 # If PHP_PKG is set, then we have remembered our PHP settings
403 # from last time
404 if [[ -n ${PHP_PKG} ]] ; then
405 return
406 fi
407
408 local PHP_PACKAGE_FOUND=""
409
410 # Detect which PHP version we have installed
411 if has_version '=dev-lang/php-4*' ; then
412 PHP_PACKAGE_FOUND="1"
413 pkg="`best_version '=dev-lang/php-4*'`"
414 if built_with_use =${pkg} cgi ; then
415 PHP_VERSION="4"
416 fi
417 fi
418
419 if has_version '=dev-lang/php-5*' ; then
420 PHP_PACKAGE_FOUND="1"
421 pkg="`best_version '=dev-lang/php-5*'`"
422 if built_with_use =${pkg} cgi ; then
423 PHP_VERSION="5"
424 fi
425 fi
426
427 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
428 die "Unable to find an installed dev-lang/php package"
429 fi
430
431 if [[ -z ${PHP_VERSION} ]] ; then
432 die "No PHP CGI installed"
433 fi
434
435 # If we get here, then PHP_VERSION tells us which version of PHP we
436 # want to use
437 uses_php${PHP_VERSION}
438 }
439
440 # Require a PHP built with SQLite support
441
442 require_sqlite() {
443 has_php
444
445 # Has our PHP been built with SQLite support?
446 if built_with_use =${PHP_PKG} sqlite || phpconfutils_built_with_use =${PHP_PKG} sqlite ; then
447 return
448 fi
449
450 # Do we have pecl-sqlite installed for PHP4?
451 if [[ "${PHP_VERSION}" == "4" ]] ; then
452 if has_version 'dev-php4/pecl-sqlite' ; then
453 return
454 fi
455 fi
456
457 # If we get here, then we don't have any SQLite support for PHP installed
458 eerror
459 eerror "No SQLite extension for PHP found."
460 eerror "Please install an SQLite extension for PHP,"
461 eerror "this is done best by simply adding the"
462 eerror "'sqlite' USE flag when emerging dev-lang/php."
463 eerror
464 die "No SQLite extension for PHP found"
465 }
466
467 # Require a PHP built with GD support
468
469 require_gd() {
470 has_php
471
472 # Do we have the internal GD support installed?
473 if built_with_use =${PHP_PKG} gd || phpconfutils_built_with_use =${PHP_PKG} gd ; then
474 return
475 fi
476
477 # Ok, maybe GD was built using the external library support?
478 if built_with_use =${PHP_PKG} gd-external || phpconfutils_built_with_use =${PHP_PKG} gd-external ; then
479 return
480 fi
481
482 # If we get here, then we have no GD support
483 eerror
484 eerror "No GD support for PHP found."
485 eerror "Please install the GD support for PHP,"
486 eerror "you must install dev-lang/php with either"
487 eerror "the 'gd' or the 'gd-external' USE flags"
488 eerror "turned on."
489 eerror
490 die "No GD support found for PHP"
491 }
492
493 # ========================================================================
494 # Misc functions
495 #
496 # These functions provide miscellaneous checks and functionality.
497 # ========================================================================
498
499 # Executes some checks needed when installing a binary PHP extension
500
501 php_binary_extension() {
502 has_php
503
504 local PUSE_ENABLED=""
505
506 # Binary extensions do not support the change of PHP
507 # API version, so they can't be installed when USE flags
508 # are enabled wich change the PHP API version
509
510 if built_with_use =${PHP_PKG} hardenedphp ; then
511 eerror
512 eerror "You cannot install binary PHP extensions"
513 eerror "when the 'hardenedphp' USE flag is enabled!"
514 eerror "Please reemerge dev-lang/php with the"
515 eerror "'hardenedphp' USE flag turned off."
516 eerror
517 PUSE_ENABLED="1"
518 fi
519
520 if built_with_use =${PHP_PKG} debug ; then
521 eerror
522 eerror "You cannot install binary PHP extensions"
523 eerror "when the 'debug' USE flag is enabled!"
524 eerror "Please reemerge dev-lang/php with the"
525 eerror "'debug' USE flag turned off."
526 eerror
527 PUSE_ENABLED="1"
528 fi
529
530 if [[ -n ${PUSE_ENABLED} ]] ; then
531 die "'hardenedphp' and/or 'debug' USE flags turned on"
532 fi
533 }
534
535 # Alternative to dodoc function for use in our PHP eclasses and
536 # ebuilds.
537 # Stored here because depend.php gets always sourced everywhere
538 # in the PHP ebuilds and eclasses.
539 # It simply is dodoc with a changed path to the docs.
540 # NOTE: no support for docinto is given!
541
542 dodoc-php() {
543 if [[ $# -lt 1 ]] ; then
544 echo "$0: at least one argument needed" 1>&2
545 exit 1
546 fi
547
548 phpdocdir="${D}/usr/share/doc/${CATEGORY}/${PF}/"
549
550 if [[ ! -d "${phpdocdir}" ]] ; then
551 install -d "${phpdocdir}"
552 fi
553
554 for x in $@ ; do
555 if [[ -s "${x}" ]] ; then
556 install -m0644 "${x}" "${phpdocdir}"
557 gzip -f -9 "${phpdocdir}/${x##*/}"
558 elif [[ ! -e "${x}" ]] ; then
559 echo "dodoc-php: ${x} does not exist" 1>&2
560 fi
561 done
562 }

  ViewVC Help
Powered by ViewVC 1.1.20