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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.10 - (hide annotations) (download)
Sat Jan 21 09:15:08 2006 UTC (8 years, 6 months ago) by sebastian
Branch: MAIN
Changes since 1.9: +9 -3 lines
Fix require_php_cli(), too.

1 stuart 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 sebastian 1.10 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.php.eclass,v 1.9 2006/01/21 09:02:44 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     local missing_use=
190     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     if [[ -z ${missing_use} ]]; then
202     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 stuart 1.1 if [[ -n ${PHP_PKG} ]]; then
223     return
224     fi
225    
226     if [[ -z ${PHP_VERSION} ]]; then
227     # detect which PHP version installed
228 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
229     PHP_VERSION=4
230     elif has_version '=dev-lang/php-5*' ; then
231 stuart 1.1 PHP_VERSION=5
232     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     # do we have php5.1 installed?
288    
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 stuart 1.1 eerror "Please install dev-lang/php-5*"
294     eerror
295     die "PHP 5 not installed"
296     fi
297    
298     # was php5 compiled w/ pdo support?
299    
300     if built_with_use =${PHP_PKG} pdo ; then
301     return
302     fi
303    
304     # ok, maybe PDO was built as an external extension?
305    
306     if built_with_use =${PHP_PKG} pdo-external && has_version dev-php5/pecl-pdo ; then
307     return
308     fi
309    
310 hollow 1.3 # ok, as last resort, it suffices that pecl-pdo was installed to have PDO support
311 stuart 1.1
312     if has_version dev-php5/pecl-pdo ; then
313     return
314     fi
315    
316 hollow 1.3 # if we get here, then we have no PDO support
317 stuart 1.1
318     eerror
319     eerror "No PDO extension for PHP found."
320     eerror "Please note that PDO only exists for PHP 5."
321     eerror "Please install a PDO extension for PHP 5,"
322     eerror "you must install dev-lang/php-5.0* with"
323     eerror "the 'pdo-external' USE flag or you must"
324     eerror "install dev-lang/php-5.1* with either"
325     eerror "the 'pdo' or the 'pdo-external' USE flags"
326     eerror "turned on."
327     eerror
328 hollow 1.3 die "No PDO extension found for PHP 5"
329 stuart 1.1 }
330    
331     # determines which installed PHP version has the CLI sapi
332     # useful for PEAR eclass, or anything which needs to run PHP
333 hollow 1.3 # scripts depending on the cli sapi
334 stuart 1.1
335     require_php_cli()
336     {
337     # if PHP_PKG is set, then we have remembered our PHP settings
338     # from last time
339 hollow 1.3
340 stuart 1.1 if [[ -n ${PHP_PKG} ]]; then
341     return
342     fi
343    
344     # detect which PHP version installed
345 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
346 sebastian 1.10 PHP_PACKAGE_FOUND=1
347 chtekk 1.6 pkg="`best_version '=dev-lang/php-4*'`"
348     if built_with_use =${pkg} cli ; then
349     PHP_VERSION=4
350     fi
351 sebastian 1.10 fi
352    
353     if has_version '=dev-lang/php-5*' ; then
354     PHP_PACKAGE_FOUND=1
355 stuart 1.1 pkg="`best_version '=dev-lang/php-5*'`"
356     if built_with_use =${pkg} cli ; then
357     PHP_VERSION=5
358     fi
359 sebastian 1.10 fi
360    
361     if [[ -z ${PHP_PACKAGE_FOUND} ]]; then
362 stuart 1.1 die "Unable to find an installed dev-lang/php package"
363     fi
364    
365     if [[ -z ${PHP_VERSION} ]]; then
366     die "No PHP CLI installed"
367     fi
368    
369     # if we get here, then PHP_VERSION tells us which version of PHP we
370     # want to use
371 hollow 1.3
372     uses_php${PHP_VERSION}
373     }
374    
375     # determines which installed PHP version has the CGI sapi
376     # useful for anything which needs to run PHP scripts
377     # depending on the cgi sapi
378    
379     require_php_cgi()
380     {
381     # if PHP_PKG is set, then we have remembered our PHP settings
382     # from last time
383    
384     if [[ -n ${PHP_PKG} ]]; then
385     return
386     fi
387    
388     # detect which PHP version installed
389 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
390 sebastian 1.9 PHP_PACKAGE_FOUND=1
391 chtekk 1.6 pkg="`best_version '=dev-lang/php-4*'`"
392     if built_with_use =${pkg} cgi ; then
393     PHP_VERSION=4
394     fi
395 sebastian 1.9 fi
396    
397     if has_version '=dev-lang/php-5*' ; then
398     PHP_PACKAGE_FOUND=1
399 hollow 1.3 pkg="`best_version '=dev-lang/php-5*'`"
400     if built_with_use =${pkg} cgi ; then
401     PHP_VERSION=5
402     fi
403 sebastian 1.9 fi
404    
405     if [[ -z ${PHP_PACKAGE_FOUND} ]]; then
406 hollow 1.3 die "Unable to find an installed dev-lang/php package"
407     fi
408    
409     if [[ -z ${PHP_VERSION} ]]; then
410     die "No PHP CGI installed"
411     fi
412    
413     # if we get here, then PHP_VERSION tells us which version of PHP we
414     # want to use
415    
416 stuart 1.1 uses_php${PHP_VERSION}
417     }
418    
419     # require a PHP built with sqlite support
420    
421     require_sqlite()
422     {
423     has_php
424    
425 hollow 1.3 # has our PHP been built with sqlite?
426    
427 stuart 1.1 if built_with_use =${PHP_PKG} sqlite ; then
428     return
429     fi
430    
431 hollow 1.3 # do we have pecl-sqlite installed for PHP 4?
432    
433 stuart 1.1 if [[ ${PHP_VERSION} == 4 ]] ; then
434     if has_version dev-php4/pecl-sqlite ; then
435     return
436     fi
437     fi
438    
439 hollow 1.3 # if we get here, then we don't have any sqlite support for PHP installed
440    
441 stuart 1.1 eerror
442     eerror "No sqlite extension for PHP found."
443     eerror "Please install an sqlite extension for PHP,"
444     eerror "this is done best by simply adding the"
445     eerror "'sqlite' USE flag when emerging dev-lang/php."
446     eerror
447     die "No sqlite extension for PHP found"
448     }
449 hollow 1.3
450 chtekk 1.6 # require a PHP built with GD support
451    
452 hollow 1.3 require_gd()
453     {
454     has_php
455    
456     # do we have the internal GD support installed?
457    
458     if built_with_use =${PHP_PKG} gd ; then
459     return
460     fi
461    
462     # ok, maybe GD was built using the external support?
463    
464     if built_with_use =${PHP_PKG} gd-external ; then
465     return
466     fi
467    
468     # if we get here, then we have no GD support
469    
470     eerror
471     eerror "No GD support for PHP found."
472     eerror "Please install the GD support for PHP,"
473     eerror "you must install dev-lang/php with either"
474     eerror "the 'gd' or the 'gd-external' USE flags"
475     eerror "turned on."
476     eerror
477     die "No GD support found for PHP"
478     }
479 chtekk 1.6
480     # ========================================================================
481     # Misc functions
482     #
483     # These functions provide miscellaneous checks and functionality.
484     # ========================================================================
485    
486     # executes some checks needed when installing a binary PHP extension
487    
488     php_binary_extension() {
489     has_php
490    
491     # binary extensions do not support the change of PHP
492     # API version, so they can't be installed when USE flags
493     # are enabled wich change the PHP API version
494    
495     if built_with_use =${PHP_PKG} hardenedphp ; then
496     eerror
497     eerror "You cannot install binary PHP extensions"
498     eerror "when the 'hardenedphp' USE flag is enabled!"
499     eerror "Please reemerge dev-lang/php with the"
500     eerror "'hardenedphp' USE flag turned off."
501     eerror
502     die "'hardenedphp' USE flag turned on"
503     fi
504    
505     if built_with_use =${PHP_PKG} debug ; then
506     eerror
507     eerror "You cannot install binary PHP extensions"
508     eerror "when the 'debug' USE flag is enabled!"
509     eerror "Please reemerge dev-lang/php with the"
510     eerror "'debug' USE flag turned off."
511     eerror
512     die "'debug' USE flag turned on"
513     fi
514     }
515    
516     # alternative to dodoc for use in our php eclasses and ebuilds
517     # stored here because depend.php gets always sourced everywhere
518     # in the PHP ebuilds and eclasses
519     # it simply is dodoc with a changed path to the docs
520     # no support for docinto is given!
521    
522     dodoc-php()
523     {
524     if [ $# -lt 1 ] ; then
525     echo "$0: at least one argument needed" 1>&2
526     exit 1
527     fi
528    
529     phpdocdir="${D}/usr/share/doc/${CATEGORY}/${PF}/"
530    
531     if [ ! -d "${phpdocdir}" ] ; then
532     install -d "${phpdocdir}"
533     fi
534    
535     for x in "$@" ; do
536     if [ -s "${x}" ] ; then
537     install -m0644 "${x}" "${phpdocdir}"
538     gzip -f -9 "${phpdocdir}/${x##*/}"
539     elif [ ! -e "${x}" ] ; then
540     echo "dodoc-php: ${x} does not exist" 1>&2
541     fi
542     done
543     }

  ViewVC Help
Powered by ViewVC 1.1.20