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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Wed Nov 30 09:59:31 2005 UTC (8 years, 7 months ago) by chriswhite
Changes since 1.1: +200 -21 lines
*** empty log message ***

1 stuart 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 chriswhite 1.1.1.1 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.php.eclass,v 1.7 2005/11/20 01:35:05 chtekk 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 chriswhite 1.1.1.1 # <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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 # 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     #
142     # returns if any one of the listed SAPIs has been installed
143     # dies if none of the listed SAPIs has been installed
144    
145 chriswhite 1.1.1.1 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     #
182     # returns if all of the listed USE flags are set
183     # dies if any of the listed USE flags are not set
184    
185 chriswhite 1.1.1.1 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1
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 chriswhite 1.1.1.1 if has_version '=dev-lang/php-4*' ; then
229 stuart 1.1 PHP_VERSION=4
230 chriswhite 1.1.1.1 elif has_version '=dev-lang/php-5*' ; then
231     PHP_VERSION=5
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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1 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 chriswhite 1.1.1.1 # 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 chriswhite 1.1.1.1
340 stuart 1.1 if [[ -n ${PHP_PKG} ]]; then
341     return
342     fi
343    
344     # detect which PHP version installed
345 chriswhite 1.1.1.1 if has_version '=dev-lang/php-4*' ; then
346     pkg="`best_version '=dev-lang/php-4*'`"
347     if built_with_use =${pkg} cli ; then
348     PHP_VERSION=4
349     fi
350     elif has_version '=dev-lang/php-5*' ; then
351 stuart 1.1 pkg="`best_version '=dev-lang/php-5*'`"
352     if built_with_use =${pkg} cli ; then
353     PHP_VERSION=5
354     fi
355 chriswhite 1.1.1.1 else
356     die "Unable to find an installed dev-lang/php package"
357     fi
358    
359     if [[ -z ${PHP_VERSION} ]]; then
360     die "No PHP CLI installed"
361     fi
362    
363     # if we get here, then PHP_VERSION tells us which version of PHP we
364     # want to use
365    
366     uses_php${PHP_VERSION}
367     }
368    
369     # determines which installed PHP version has the CGI sapi
370     # useful for anything which needs to run PHP scripts
371     # depending on the cgi sapi
372    
373     require_php_cgi()
374     {
375     # if PHP_PKG is set, then we have remembered our PHP settings
376     # from last time
377    
378     if [[ -n ${PHP_PKG} ]]; then
379     return
380     fi
381    
382     # detect which PHP version installed
383     if has_version '=dev-lang/php-4*' ; then
384 stuart 1.1 pkg="`best_version '=dev-lang/php-4*'`"
385 chriswhite 1.1.1.1 if built_with_use =${pkg} cgi ; then
386 stuart 1.1 PHP_VERSION=4
387     fi
388 chriswhite 1.1.1.1 elif has_version '=dev-lang/php-5*' ; then
389     pkg="`best_version '=dev-lang/php-5*'`"
390     if built_with_use =${pkg} cgi ; then
391     PHP_VERSION=5
392     fi
393 stuart 1.1 else
394     die "Unable to find an installed dev-lang/php package"
395     fi
396    
397     if [[ -z ${PHP_VERSION} ]]; then
398 chriswhite 1.1.1.1 die "No PHP CGI installed"
399 stuart 1.1 fi
400    
401     # if we get here, then PHP_VERSION tells us which version of PHP we
402     # want to use
403 chriswhite 1.1.1.1
404 stuart 1.1 uses_php${PHP_VERSION}
405     }
406    
407     # require a PHP built with sqlite support
408    
409     require_sqlite()
410     {
411     has_php
412    
413 chriswhite 1.1.1.1 # has our PHP been built with sqlite?
414    
415 stuart 1.1 if built_with_use =${PHP_PKG} sqlite ; then
416     return
417     fi
418    
419 chriswhite 1.1.1.1 # do we have pecl-sqlite installed for PHP 4?
420    
421 stuart 1.1 if [[ ${PHP_VERSION} == 4 ]] ; then
422     if has_version dev-php4/pecl-sqlite ; then
423     return
424     fi
425     fi
426    
427 chriswhite 1.1.1.1 # if we get here, then we don't have any sqlite support for PHP installed
428    
429 stuart 1.1 eerror
430     eerror "No sqlite extension for PHP found."
431     eerror "Please install an sqlite extension for PHP,"
432     eerror "this is done best by simply adding the"
433     eerror "'sqlite' USE flag when emerging dev-lang/php."
434     eerror
435     die "No sqlite extension for PHP found"
436     }
437 chriswhite 1.1.1.1
438     # require a PHP built with GD support
439    
440     require_gd()
441     {
442     has_php
443    
444     # do we have the internal GD support installed?
445    
446     if built_with_use =${PHP_PKG} gd ; then
447     return
448     fi
449    
450     # ok, maybe GD was built using the external support?
451    
452     if built_with_use =${PHP_PKG} gd-external ; then
453     return
454     fi
455    
456     # if we get here, then we have no GD support
457    
458     eerror
459     eerror "No GD support for PHP found."
460     eerror "Please install the GD support for PHP,"
461     eerror "you must install dev-lang/php with either"
462     eerror "the 'gd' or the 'gd-external' USE flags"
463     eerror "turned on."
464     eerror
465     die "No GD support found for PHP"
466     }
467    
468     # ========================================================================
469     # Misc functions
470     #
471     # These functions provide miscellaneous checks and functionality.
472     # ========================================================================
473    
474     # executes some checks needed when installing a binary PHP extension
475    
476     php_binary_extension() {
477     has_php
478    
479     # binary extensions do not support the change of PHP
480     # API version, so they can't be installed when USE flags
481     # are enabled wich change the PHP API version
482    
483     if built_with_use =${PHP_PKG} hardenedphp ; then
484     eerror
485     eerror "You cannot install binary PHP extensions"
486     eerror "when the 'hardenedphp' USE flag is enabled!"
487     eerror "Please reemerge dev-lang/php with the"
488     eerror "'hardenedphp' USE flag turned off."
489     eerror
490     die "'hardenedphp' USE flag turned on"
491     fi
492    
493     if built_with_use =${PHP_PKG} debug ; then
494     eerror
495     eerror "You cannot install binary PHP extensions"
496     eerror "when the 'debug' USE flag is enabled!"
497     eerror "Please reemerge dev-lang/php with the"
498     eerror "'debug' USE flag turned off."
499     eerror
500     die "'debug' USE flag turned on"
501     fi
502     }
503    
504     # alternative to dodoc for use in our php eclasses and ebuilds
505     # stored here because depend.php gets always sourced everywhere
506     # in the PHP ebuilds and eclasses
507     # it simply is dodoc with a changed path to the docs
508     # no support for docinto is given!
509    
510     dodoc-php()
511     {
512     if [ $# -lt 1 ] ; then
513     echo "$0: at least one argument needed" 1>&2
514     exit 1
515     fi
516    
517     phpdocdir="${D}/usr/share/doc/${CATEGORY}/${PF}/"
518    
519     if [ ! -d "${phpdocdir}" ] ; then
520     install -d "${phpdocdir}"
521     fi
522    
523     for x in "$@" ; do
524     if [ -s "${x}" ] ; then
525     install -m0644 "${x}" "${phpdocdir}"
526     gzip -f -9 "${phpdocdir}/${x##*/}"
527     elif [ ! -e "${x}" ] ; then
528     echo "dodoc-php: ${x} does not exist" 1>&2
529     fi
530     done
531     }

  ViewVC Help
Powered by ViewVC 1.1.20