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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (hide annotations) (download)
Sat Jan 21 11:48:29 2006 UTC (8 years, 7 months ago) by chtekk
Branch: MAIN
Changes since 1.10: +23 -19 lines
Style fixes, has_php shall prefer PHP5 over PHP4.

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

  ViewVC Help
Powered by ViewVC 1.1.20