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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (hide annotations) (download)
Sat Jan 21 09:02:44 2006 UTC (8 years, 5 months ago) by sebastian
Branch: MAIN
Changes since 1.8: +9 -3 lines
Fix bug 119137. Patch has been reviewd by Jakub Moc <jakub@gentoo.org>.

1 stuart 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 sebastian 1.9 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.php.eclass,v 1.8 2006/01/01 01:14:59 swegener 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     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     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 hollow 1.3
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 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
384 sebastian 1.9 PHP_PACKAGE_FOUND=1
385 chtekk 1.6 pkg="`best_version '=dev-lang/php-4*'`"
386     if built_with_use =${pkg} cgi ; then
387     PHP_VERSION=4
388     fi
389 sebastian 1.9 fi
390    
391     if has_version '=dev-lang/php-5*' ; then
392     PHP_PACKAGE_FOUND=1
393 hollow 1.3 pkg="`best_version '=dev-lang/php-5*'`"
394     if built_with_use =${pkg} cgi ; then
395     PHP_VERSION=5
396     fi
397 sebastian 1.9 fi
398    
399     if [[ -z ${PHP_PACKAGE_FOUND} ]]; then
400 hollow 1.3 die "Unable to find an installed dev-lang/php package"
401     fi
402    
403     if [[ -z ${PHP_VERSION} ]]; then
404     die "No PHP CGI installed"
405     fi
406    
407     # if we get here, then PHP_VERSION tells us which version of PHP we
408     # want to use
409    
410 stuart 1.1 uses_php${PHP_VERSION}
411     }
412    
413     # require a PHP built with sqlite support
414    
415     require_sqlite()
416     {
417     has_php
418    
419 hollow 1.3 # has our PHP been built with sqlite?
420    
421 stuart 1.1 if built_with_use =${PHP_PKG} sqlite ; then
422     return
423     fi
424    
425 hollow 1.3 # do we have pecl-sqlite installed for PHP 4?
426    
427 stuart 1.1 if [[ ${PHP_VERSION} == 4 ]] ; then
428     if has_version dev-php4/pecl-sqlite ; then
429     return
430     fi
431     fi
432    
433 hollow 1.3 # if we get here, then we don't have any sqlite support for PHP installed
434    
435 stuart 1.1 eerror
436     eerror "No sqlite extension for PHP found."
437     eerror "Please install an sqlite extension for PHP,"
438     eerror "this is done best by simply adding the"
439     eerror "'sqlite' USE flag when emerging dev-lang/php."
440     eerror
441     die "No sqlite extension for PHP found"
442     }
443 hollow 1.3
444 chtekk 1.6 # require a PHP built with GD support
445    
446 hollow 1.3 require_gd()
447     {
448     has_php
449    
450     # do we have the internal GD support installed?
451    
452     if built_with_use =${PHP_PKG} gd ; then
453     return
454     fi
455    
456     # ok, maybe GD was built using the external support?
457    
458     if built_with_use =${PHP_PKG} gd-external ; then
459     return
460     fi
461    
462     # if we get here, then we have no GD support
463    
464     eerror
465     eerror "No GD support for PHP found."
466     eerror "Please install the GD support for PHP,"
467     eerror "you must install dev-lang/php with either"
468     eerror "the 'gd' or the 'gd-external' USE flags"
469     eerror "turned on."
470     eerror
471     die "No GD support found for PHP"
472     }
473 chtekk 1.6
474     # ========================================================================
475     # Misc functions
476     #
477     # These functions provide miscellaneous checks and functionality.
478     # ========================================================================
479    
480     # executes some checks needed when installing a binary PHP extension
481    
482     php_binary_extension() {
483     has_php
484    
485     # binary extensions do not support the change of PHP
486     # API version, so they can't be installed when USE flags
487     # are enabled wich change the PHP API version
488    
489     if built_with_use =${PHP_PKG} hardenedphp ; then
490     eerror
491     eerror "You cannot install binary PHP extensions"
492     eerror "when the 'hardenedphp' USE flag is enabled!"
493     eerror "Please reemerge dev-lang/php with the"
494     eerror "'hardenedphp' USE flag turned off."
495     eerror
496     die "'hardenedphp' USE flag turned on"
497     fi
498    
499     if built_with_use =${PHP_PKG} debug ; then
500     eerror
501     eerror "You cannot install binary PHP extensions"
502     eerror "when the 'debug' USE flag is enabled!"
503     eerror "Please reemerge dev-lang/php with the"
504     eerror "'debug' USE flag turned off."
505     eerror
506     die "'debug' USE flag turned on"
507     fi
508     }
509    
510     # alternative to dodoc for use in our php eclasses and ebuilds
511     # stored here because depend.php gets always sourced everywhere
512     # in the PHP ebuilds and eclasses
513     # it simply is dodoc with a changed path to the docs
514     # no support for docinto is given!
515    
516     dodoc-php()
517     {
518     if [ $# -lt 1 ] ; then
519     echo "$0: at least one argument needed" 1>&2
520     exit 1
521     fi
522    
523     phpdocdir="${D}/usr/share/doc/${CATEGORY}/${PF}/"
524    
525     if [ ! -d "${phpdocdir}" ] ; then
526     install -d "${phpdocdir}"
527     fi
528    
529     for x in "$@" ; do
530     if [ -s "${x}" ] ; then
531     install -m0644 "${x}" "${phpdocdir}"
532     gzip -f -9 "${phpdocdir}/${x##*/}"
533     elif [ ! -e "${x}" ] ; then
534     echo "dodoc-php: ${x} does not exist" 1>&2
535     fi
536     done
537     }

  ViewVC Help
Powered by ViewVC 1.1.20