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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.35 - (show annotations) (download)
Thu Jun 18 14:22:59 2015 UTC (2 years, 3 months ago) by grknight
Branch: MAIN
Changes since 1.34: +14 -14 lines
Remove phpconfutils calls in preparation for its deprecation

1 # Copyright 1999-2015 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.34 2015/06/17 20:11:28 grknight Exp $
4
5 # @ECLASS: depend.php.eclass
6 # @MAINTAINER:
7 # Gentoo PHP team <php-bugs@gentoo.org>
8 # @AUTHOR:
9 # Author: Stuart Herbert <stuart@gentoo.org>
10 # Author: Luca Longinotti <chtekk@gentoo.org>
11 # Author: Jakub Moc <jakub@gentoo.org> (documentation)
12 # @BLURB: Functions to allow ebuilds to depend on php5 and check for specific features.
13 # @DESCRIPTION:
14 # This eclass provides functions that allow ebuilds to depend on php5 and check
15 # for specific PHP features, SAPIs etc. Also provides dodoc-php wrapper to install
16 # documentation for PHP packages to php-specific location.
17
18 inherit eutils multilib
19
20 # PHP5-only depend functions
21
22 # @FUNCTION: need_php5_cli
23 # @DESCRIPTION:
24 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP5
25 # with cli SAPI.
26 need_php5_cli() {
27 eqawarn "(need_php5_cli) Deprecated function call. Set to be removed on 2015-07-17"
28 DEPEND="${DEPEND} =dev-lang/php-5*"
29 RDEPEND="${RDEPEND} =dev-lang/php-5*"
30 PHP_VERSION="5"
31 }
32
33 # @FUNCTION: need_php5_httpd
34 # @DESCRIPTION:
35 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP5
36 # with either cgi or apache2 SAPI.
37 need_php5_httpd() {
38 eqawarn "(need_php5_httpd) Deprecated function call. Set to be removed on 2015-07-17"
39 DEPEND="${DEPEND} =virtual/httpd-php-5*"
40 RDEPEND="${RDEPEND} =virtual/httpd-php-5*"
41 PHP_VERSION="5"
42 }
43
44 # @FUNCTION: need_php5
45 # @DESCRIPTION:
46 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP5
47 # (with any SAPI).
48 need_php5() {
49 DEPEND="${DEPEND} =dev-lang/php-5*"
50 RDEPEND="${RDEPEND} =dev-lang/php-5*"
51 PHP_VERSION="5"
52 PHP_SHARED_CAT="php5"
53 }
54
55 # common settings go in here
56 uses_php5() {
57 # cache this
58 libdir=$(get_libdir)
59
60 PHPIZE="/usr/${libdir}/php5/bin/phpize"
61 PHPCONFIG="/usr/${libdir}/php5/bin/php-config"
62 PHPCLI="/usr/${libdir}/php5/bin/php"
63 PHPCGI="/usr/${libdir}/php5/bin/php-cgi"
64 PHP_PKG="$(best_version =dev-lang/php-5*)"
65 PHPPREFIX="/usr/${libdir}/php5"
66 EXT_DIR="$(${PHPCONFIG} --extension-dir 2>/dev/null)"
67
68 einfo
69 einfo "Using ${PHP_PKG}"
70 einfo
71 }
72
73 # general PHP depend functions
74
75 # @FUNCTION: need_php_cli
76 # @DESCRIPTION:
77 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP
78 # (any version) with cli SAPI.
79 need_php_cli() {
80 eqawarn "(need_php_cli) Deprecated function call. Set to be removed on 2015-07-17"
81 DEPEND="${DEPEND} dev-lang/php"
82 RDEPEND="${RDEPEND} dev-lang/php"
83 }
84
85 # @FUNCTION: need_php_httpd
86 # @DESCRIPTION:
87 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP
88 # (any version) with either cgi or apache2 SAPI.
89 need_php_httpd() {
90 DEPEND="${DEPEND} virtual/httpd-php"
91 RDEPEND="${RDEPEND} virtual/httpd-php"
92 }
93
94 # @FUNCTION: need_php
95 # @DESCRIPTION:
96 # Set this after setting DEPEND/RDEPEND in your ebuild if the ebuild requires PHP
97 # (any version with any SAPI).
98 need_php() {
99 DEPEND="${DEPEND} dev-lang/php"
100 RDEPEND="${RDEPEND} dev-lang/php"
101 PHP_SHARED_CAT="php"
102 }
103
104 # @FUNCTION: need_php_by_category
105 # @DESCRIPTION:
106 # Set this after setting DEPEND/RDEPEND in your ebuild to depend on PHP version
107 # determined by ${CATEGORY} - any PHP version or PHP5 for dev-php or
108 # dev-php5, respectively.
109 need_php_by_category() {
110 eqawarn "(need_php_by_category) Deprecated function call. Set to be removed on 2015-07-17"
111 case "${CATEGORY}" in
112 dev-php) need_php ;;
113 *) die "Version of PHP required by packages in category ${CATEGORY} unknown"
114 esac
115 }
116
117
118 # @FUNCTION: has_php
119 # @DESCRIPTION:
120 # Call this function from your pkg_setup, src_compile, src_install etc. if you
121 # need to know which PHP version is being used and where the PHP binaries/data
122 # are installed.
123 has_php() {
124 # Detect which PHP version we have installed
125 if has_version '=dev-lang/php-5*' ; then
126 PHP_VERSION="5"
127 else
128 die "Unable to find an installed dev-lang/php package"
129 fi
130
131 # If we get here, then PHP_VERSION tells us which version of PHP we
132 # want to use
133 uses_php${PHP_VERSION}
134 }
135
136 # @FUNCTION: require_php_sapi_from
137 # @USAGE: <list of SAPIs>
138 # @DESCRIPTION:
139 # Call this function from pkg_setup if your package only works with
140 # specific SAPI(s) and specify a list of PHP SAPI USE flags that are
141 # required (one or more from cli, cgi, apache2) as arguments.
142 # Returns if any of the listed SAPIs have been installed, dies if none
143 # of them is available.
144 #
145 # Unfortunately, if you want to be really sure that the required SAPI is
146 # provided by PHP, you will have to use this function or similar ones (like
147 # require_php_cli or require_php_cgi) in pkg_setup until we are able to
148 # depend on USE flags being enabled. The above described need_php[45]_cli
149 # and need_php[45]_httpd functions cannot guarantee these requirements.
150 # See Bug 2272 for details.
151 require_php_sapi_from() {
152 eqawarn "(require_php_sapi_from) Deprecated function call. Set to be removed on 2015-07-17"
153 has_php
154
155 local has_sapi="0"
156 local x
157
158 einfo "Checking for compatible SAPI(s)"
159
160 for x in $@ ; do
161 if built_with_use =${PHP_PKG} ${x} ; then
162 einfo " Discovered compatible SAPI ${x}"
163 has_sapi="1"
164 fi
165 done
166
167 if [[ "${has_sapi}" == "1" ]] ; then
168 return
169 fi
170
171 eerror
172 eerror "${PHP_PKG} needs to be re-installed with one of the following"
173 eerror "USE flags enabled:"
174 eerror
175 eerror " $@"
176 eerror
177 die "No compatible PHP SAPIs found"
178 }
179
180 # @FUNCTION: require_php_with_use
181 # @USAGE: <list of USE flags>
182 # @DESCRIPTION:
183 # Call this function from pkg_setup if your package requires PHP compiled
184 # with specific USE flags. Returns if all of the listed USE flags are enabled.
185 # Dies if any of the listed USE flags are disabled.
186
187 # @VARIABLE: PHPCHECKNODIE
188 # @DESCRIPTION:
189 # You can set PHPCHECKNODIE to non-empty value in your ebuild to chain multiple
190 # require_php_with_(any)_use checks without making the ebuild die on every failure.
191 # This is useful in cases when certain PHP features are only required if specific
192 # USE flag(s) are enabled for that ebuild.
193 # @CODE
194 # Example:
195 #
196 # local flags="pcre session snmp sockets wddx"
197 # use mysql && flags="${flags} mysql"
198 # use postgres && flags="${flags} postgres"
199 # if ! PHPCHECKNODIE="yes" require_php_with_use ${flags} \
200 # || ! PHPCHECKNODIE="yes" require_php_with_any_use gd gd-external ; then
201 # die "Re-install ${PHP_PKG} with ${flags} and either gd or gd-external"
202 # fi
203 # @CODE
204 require_php_with_use() {
205 has_php
206
207 local missing_use=""
208 local x
209
210 einfo "Checking for required PHP feature(s) ..."
211
212 for x in $@ ; do
213 case $x in
214 pcre|spl|reflection|mhash)
215 eqawarn "require_php_with_use MUST NOT check for the pcre, spl, mhash or reflection USE flag."
216 eqawarn "These USE flags are removed from >=dev-lang/php-5.3 and your ebuild will break"
217 eqawarn "if you check the USE flags against PHP 5.3 ebuilds."
218 eqawarn "Please use USE dependencies from EAPI 2 instead"
219 ;;
220 esac
221
222 if ! built_with_use =${PHP_PKG} ${x} ; then
223 einfo " Discovered missing USE flag: ${x}"
224 missing_use="${missing_use} ${x}"
225 fi
226 done
227
228 if [[ -z "${missing_use}" ]] ; then
229 if [[ -z "${PHPCHECKNODIE}" ]] ; then
230 return
231 else
232 return 0
233 fi
234 fi
235
236 if [[ -z "${PHPCHECKNODIE}" ]] ; then
237 eerror
238 eerror "${PHP_PKG} needs to be re-installed with all of the following"
239 eerror "USE flags enabled:"
240 eerror
241 eerror " $@"
242 eerror
243 die "Missing PHP USE flags found"
244 else
245 return 1
246 fi
247 }
248
249 # @FUNCTION: require_php_with_any_use
250 # @USAGE: <list of USE flags>
251 # @DESCRIPTION:
252 # Call this function from pkg_setup if your package requires PHP compiled with
253 # any of specified USE flags. Returns if any of the listed USE flags are enabled.
254 # Dies if all of the listed USE flags are disabled.
255 require_php_with_any_use() {
256 eqawarn "(require_php_with_any_use) Deprecated function call. Set to be removed on 2015-07-17"
257 has_php
258
259 local missing_use=""
260 local x
261
262 einfo "Checking for required PHP feature(s) ..."
263
264 for x in $@ ; do
265 if built_with_use =${PHP_PKG} ${x} ; then
266 einfo " USE flag ${x} is enabled, ok ..."
267 return
268 else
269 missing_use="${missing_use} ${x}"
270 fi
271 done
272
273 if [[ -z "${missing_use}" ]] ; then
274 if [[ -z "${PHPCHECKNODIE}" ]] ; then
275 return
276 else
277 return 0
278 fi
279 fi
280
281 if [[ -z "${PHPCHECKNODIE}" ]] ; then
282 eerror
283 eerror "${PHP_PKG} needs to be re-installed with any of the following"
284 eerror "USE flags enabled:"
285 eerror
286 eerror " $@"
287 eerror
288 die "Missing PHP USE flags found"
289 else
290 return 1
291 fi
292 }
293
294 # ========================================================================
295 # has_*() functions
296 #
297 # These functions return 0 if the condition is satisfied, 1 otherwise
298 # ========================================================================
299
300 # @FUNCTION: has_zts
301 # @DESCRIPTION:
302 # Check if our PHP was compiled with ZTS (Zend Thread Safety) enabled.
303 # @RETURN: 0 if true, 1 otherwise
304 has_zts() {
305 eqawarn "(has_zts) Deprecated function call. Set to be removed on 2015-07-17"
306 has_php
307
308 if built_with_use =${PHP_PKG} apache2 threads ; then
309 return 0
310 fi
311
312 return 1
313 }
314
315 # @FUNCTION: has_debug
316 # @DESCRIPTION:
317 # Check if our PHP was built with debug support enabled.
318 # @RETURN: 0 if true, 1 otherwise
319 has_debug() {
320 eqawarn "(has_debug) Deprecated function call. Set to be removed on 2015-07-17"
321 has_php
322
323 if built_with_use =${PHP_PKG} debug ; then
324 return 0
325 fi
326
327 return 1
328 }
329
330 # @FUNCTION: has_concurrentmodphp
331 # @DESCRIPTION:
332 # Check if our PHP was built with the concurrentmodphp support enabled.
333 # @RETURN: 0 if true, 1 otherwise
334 has_concurrentmodphp() {
335 eqawarn "(has_concurrentmodphp) Deprecated function call. Set to be removed on 2015-07-17"
336 has_php
337
338 if built_with_use =${PHP_PKG} apache2 concurrentmodphp ; then
339 return 0
340 fi
341
342 return 1
343 }
344
345 # ========================================================================
346 # require_*() functions
347 #
348 # These functions die() if PHP was built without the required features
349 # ========================================================================
350
351 # @FUNCTION: require_pdo
352 # @DESCRIPTION:
353 # Require a PHP built with PDO support (PHP5 only).
354 # This function is now redundant and DEPRECATED since
355 # pdo-external use flag and pecl-pdo-* ebuilds were removed.
356 # You should use require_php_with_use pdo instead now.
357 # @RETURN: die if feature is missing
358 require_pdo() {
359 eqawarn "(require_pdo) Deprecated function call. Set to be removed on 2015-07-17"
360 has_php
361
362 # Was PHP5 compiled with internal PDO support?
363 if built_with_use =${PHP_PKG} pdo ; then
364 return
365 else
366 eerror
367 eerror "No PDO extension for PHP found."
368 eerror "Please note that PDO only exists for PHP 5."
369 eerror "Please install a PDO extension for PHP 5."
370 eerror "You must install >=dev-lang/php-5.1 with USE=\"pdo\"."
371 eerror
372 die "No PDO extension for PHP 5 found"
373 fi
374 }
375
376 # @FUNCTION: require_php_cli
377 # @DESCRIPTION:
378 # Determines which installed PHP version has the CLI SAPI enabled.
379 # Useful for PEAR stuff, or anything which needs to run PHP script
380 # depending on the CLI SAPI.
381 # @RETURN: die if feature is missing
382 require_php_cli() {
383 eqawarn "(require_php_cli) Deprecated function call. Set to be removed on 2015-07-17"
384 # If PHP_PKG is set, then we have remembered our PHP settings
385 # from last time
386 if [[ -n ${PHP_PKG} ]] ; then
387 return
388 fi
389
390 local PHP_PACKAGE_FOUND=""
391
392 if has_version '=dev-lang/php-5*' ; then
393 PHP_PACKAGE_FOUND="1"
394 pkg="$(best_version '=dev-lang/php-5*')"
395 if built_with_use =${pkg} cli ; then
396 PHP_VERSION="5"
397 fi
398 fi
399
400 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
401 die "Unable to find an installed dev-lang/php package"
402 fi
403
404 if [[ -z ${PHP_VERSION} ]] ; then
405 die "No PHP CLI installed. Re-emerge dev-lang/php with USE=cli."
406 fi
407
408 # If we get here, then PHP_VERSION tells us which version of PHP we
409 # want to use
410 uses_php${PHP_VERSION}
411 }
412
413 # @FUNCTION: require_php_cgi
414 # @DESCRIPTION:
415 # Determines which installed PHP version has the CGI SAPI enabled.
416 # Useful for anything which needs to run PHP scripts depending on the CGI SAPI.
417 # @RETURN: die if feature is missing
418 require_php_cgi() {
419 # If PHP_PKG is set, then we have remembered our PHP settings
420 # from last time
421 if [[ -n ${PHP_PKG} ]] ; then
422 return
423 fi
424
425 local PHP_PACKAGE_FOUND=""
426
427 if has_version '=dev-lang/php-5*' ; then
428 PHP_PACKAGE_FOUND="1"
429 pkg="$(best_version '=dev-lang/php-5*')"
430 if built_with_use =${pkg} cgi ; then
431 PHP_VERSION="5"
432 fi
433 fi
434
435 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
436 die "Unable to find an installed dev-lang/php package"
437 fi
438
439 if [[ -z ${PHP_VERSION} ]] ; then
440 die "No PHP CGI installed. Re-emerge dev-lang/php with USE=cgi."
441 fi
442
443 # If we get here, then PHP_VERSION tells us which version of PHP we
444 # want to use
445 uses_php${PHP_VERSION}
446 }
447
448 # @FUNCTION: require_sqlite
449 # @DESCRIPTION:
450 # Require a PHP built with SQLite support
451 # @RETURN: die if feature is missing
452 require_sqlite() {
453 eqawarn "(require_sqlite) Deprecated function call. Set to be removed on 2015-07-17"
454 has_php
455
456 # Has our PHP been built with SQLite support?
457 if built_with_use =${PHP_PKG} sqlite ; then
458 return
459 fi
460
461 # If we get here, then we don't have any SQLite support for PHP installed
462 eerror
463 eerror "No SQLite extension for PHP found."
464 eerror "Please install an SQLite extension for PHP,"
465 eerror "this is done best by simply adding the"
466 eerror "'sqlite' USE flag when emerging dev-lang/php."
467 eerror
468 die "No SQLite extension for PHP found"
469 }
470
471 # @FUNCTION: require_gd
472 # @DESCRIPTION:
473 # Require a PHP built with GD support
474 # @RETURN: die if feature is missing
475 require_gd() {
476 eqawarn "(require_gd) Deprecated function call. Set to be removed on 2015-07-17"
477 has_php
478
479 # Do we have the internal GD support installed?
480 if built_with_use =${PHP_PKG} gd ; then
481 return
482 fi
483
484 # Ok, maybe GD was built using the external library support?
485 if built_with_use =${PHP_PKG} gd-external ; then
486 return
487 fi
488
489 # If we get here, then we have no GD support
490 eerror
491 eerror "No GD support for PHP found."
492 eerror "Please install the GD support for PHP,"
493 eerror "you must install dev-lang/php with either"
494 eerror "the 'gd' or the 'gd-external' USE flags"
495 eerror "turned on."
496 eerror
497 die "No GD support found for PHP"
498 }
499
500 # ========================================================================
501 # Misc functions
502 #
503 # These functions provide miscellaneous checks and functionality.
504 # ========================================================================
505
506 # @FUNCTION: php_binary_extension
507 # @DESCRIPTION:
508 # Executes some checks needed when installing a binary PHP extension.
509 php_binary_extension() {
510 eqawarn "(php_binary_extension) Deprecated function call. Set to be removed on 2015-07-17"
511 has_php
512
513 local PUSE_ENABLED=""
514
515 # Binary extensions do not support the change of PHP
516 # API version, so they can't be installed when USE flags
517 # are enabled which change the PHP API version, they also
518 # don't provide correctly versioned symbols for our use
519
520 if has_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 has_concurrentmodphp ; then
531 eerror
532 eerror "You cannot install binary PHP extensions when"
533 eerror "the 'concurrentmodphp' USE flag is enabled!"
534 eerror "Please reemerge dev-lang/php with the"
535 eerror "'concurrentmodphp' USE flag turned off."
536 eerror
537 PUSE_ENABLED="1"
538 fi
539
540 if [[ -n ${PUSE_ENABLED} ]] ; then
541 die "'debug' and/or 'concurrentmodphp' USE flags turned on!"
542 fi
543 }
544
545 # @FUNCTION: dodoc-php
546 # @USAGE: <list of docs>
547 # @DESCRIPTION:
548 # Alternative to dodoc function for use in our PHP eclasses and ebuilds.
549 # Stored here because depend.php gets always sourced everywhere in the PHP
550 # ebuilds and eclasses. It simply is dodoc with a changed path to the docs.
551 # NOTE: No support for docinto is provided!
552 dodoc-php() {
553 if [[ $# -lt 1 ]] ; then
554 echo "$0: at least one argument needed" 1>&2
555 exit 1
556 fi
557
558 phpdocdir="/usr/share/doc/${CATEGORY}/${PF}/"
559
560 for x in $@ ; do
561 if [[ -s "${x}" ]] ; then
562 insinto "${phpdocdir}"
563 doins "${x}"
564 gzip -f -9 "${D}/${phpdocdir}/${x##*/}"
565 elif [[ ! -e "${x}" ]] ; then
566 echo "dodoc-php: ${x} does not exist" 1>&2
567 fi
568 done
569 }
570
571 # @FUNCTION: dohtml-php
572 # @USAGE: <list of html docs>
573 # @DESCRIPTION:
574 # Alternative to dohtml function for use in our PHP eclasses and ebuilds.
575 # Stored here because depend.php gets always sourced everywhere in the PHP
576 # ebuilds and eclasses. It simply is dohtml with a changed path to the docs.
577 # NOTE: No support for [-a|-A|-p|-x] options is provided!
578 dohtml-php() {
579 if [[ $# -lt 1 ]] ; then
580 echo "$0: at least one argument needed" 1>&2
581 exit 1
582 fi
583
584 phphtmldir="/usr/share/doc/${CATEGORY}/${PF}/html"
585
586 for x in $@ ; do
587 if [[ -s "${x}" ]] ; then
588 insinto "${phphtmldir}"
589 doins "${x}"
590 elif [[ ! -e "${x}" ]] ; then
591 echo "dohtml-php: ${x} does not exist" 1>&2
592 fi
593 done
594 }

  ViewVC Help
Powered by ViewVC 1.1.20