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

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.33 - (show annotations) (download)
Wed Jun 17 18:54:44 2015 UTC (3 years, 5 months ago) by grknight
Branch: MAIN
Changes since 1.32: +15 -2 lines
Deprecate unused functions in depend.php.eclass

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.32 2012/06/02 19:16:31 zmedico 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 phpconfutils
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} || phpconfutils_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} && ! phpconfutils_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} || phpconfutils_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 || phpconfutils_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 || phpconfutils_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 || phpconfutils_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 || phpconfutils_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 # If PHP_PKG is set, then we have remembered our PHP settings
384 # from last time
385 if [[ -n ${PHP_PKG} ]] ; then
386 return
387 fi
388
389 local PHP_PACKAGE_FOUND=""
390
391 if has_version '=dev-lang/php-5*' ; then
392 PHP_PACKAGE_FOUND="1"
393 pkg="$(best_version '=dev-lang/php-5*')"
394 if built_with_use =${pkg} cli || phpconfutils_built_with_use =${pkg} cli ; then
395 PHP_VERSION="5"
396 fi
397 fi
398
399 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
400 die "Unable to find an installed dev-lang/php package"
401 fi
402
403 if [[ -z ${PHP_VERSION} ]] ; then
404 die "No PHP CLI installed. Re-emerge dev-lang/php with USE=cli."
405 fi
406
407 # If we get here, then PHP_VERSION tells us which version of PHP we
408 # want to use
409 uses_php${PHP_VERSION}
410 }
411
412 # @FUNCTION: require_php_cgi
413 # @DESCRIPTION:
414 # Determines which installed PHP version has the CGI SAPI enabled.
415 # Useful for anything which needs to run PHP scripts depending on the CGI SAPI.
416 # @RETURN: die if feature is missing
417 require_php_cgi() {
418 # If PHP_PKG is set, then we have remembered our PHP settings
419 # from last time
420 if [[ -n ${PHP_PKG} ]] ; then
421 return
422 fi
423
424 local PHP_PACKAGE_FOUND=""
425
426 if has_version '=dev-lang/php-5*' ; then
427 PHP_PACKAGE_FOUND="1"
428 pkg="$(best_version '=dev-lang/php-5*')"
429 if built_with_use =${pkg} cgi || phpconfutils_built_with_use =${pkg} cgi ; then
430 PHP_VERSION="5"
431 fi
432 fi
433
434 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
435 die "Unable to find an installed dev-lang/php package"
436 fi
437
438 if [[ -z ${PHP_VERSION} ]] ; then
439 die "No PHP CGI installed. Re-emerge dev-lang/php with USE=cgi."
440 fi
441
442 # If we get here, then PHP_VERSION tells us which version of PHP we
443 # want to use
444 uses_php${PHP_VERSION}
445 }
446
447 # @FUNCTION: require_sqlite
448 # @DESCRIPTION:
449 # Require a PHP built with SQLite support
450 # @RETURN: die if feature is missing
451 require_sqlite() {
452 eqawarn "(require_sqlite) Deprecated function call. Set to be removed on 2015-07-17"
453 has_php
454
455 # Has our PHP been built with SQLite support?
456 if built_with_use =${PHP_PKG} sqlite || phpconfutils_built_with_use =${PHP_PKG} sqlite ; then
457 return
458 fi
459
460 # If we get here, then we don't have any SQLite support for PHP installed
461 eerror
462 eerror "No SQLite extension for PHP found."
463 eerror "Please install an SQLite extension for PHP,"
464 eerror "this is done best by simply adding the"
465 eerror "'sqlite' USE flag when emerging dev-lang/php."
466 eerror
467 die "No SQLite extension for PHP found"
468 }
469
470 # @FUNCTION: require_gd
471 # @DESCRIPTION:
472 # Require a PHP built with GD support
473 # @RETURN: die if feature is missing
474 require_gd() {
475 eqawarn "(require_gd) Deprecated function call. Set to be removed on 2015-07-17"
476 has_php
477
478 # Do we have the internal GD support installed?
479 if built_with_use =${PHP_PKG} gd || phpconfutils_built_with_use =${PHP_PKG} gd ; then
480 return
481 fi
482
483 # Ok, maybe GD was built using the external library support?
484 if built_with_use =${PHP_PKG} gd-external || phpconfutils_built_with_use =${PHP_PKG} gd-external ; then
485 return
486 fi
487
488 # If we get here, then we have no GD support
489 eerror
490 eerror "No GD support for PHP found."
491 eerror "Please install the GD support for PHP,"
492 eerror "you must install dev-lang/php with either"
493 eerror "the 'gd' or the 'gd-external' USE flags"
494 eerror "turned on."
495 eerror
496 die "No GD support found for PHP"
497 }
498
499 # ========================================================================
500 # Misc functions
501 #
502 # These functions provide miscellaneous checks and functionality.
503 # ========================================================================
504
505 # @FUNCTION: php_binary_extension
506 # @DESCRIPTION:
507 # Executes some checks needed when installing a binary PHP extension.
508 php_binary_extension() {
509 eqawarn "(php_binary_extension) Deprecated function call. Set to be removed on 2015-07-17"
510 has_php
511
512 local PUSE_ENABLED=""
513
514 # Binary extensions do not support the change of PHP
515 # API version, so they can't be installed when USE flags
516 # are enabled which change the PHP API version, they also
517 # don't provide correctly versioned symbols for our use
518
519 if has_debug ; then
520 eerror
521 eerror "You cannot install binary PHP extensions"
522 eerror "when the 'debug' USE flag is enabled!"
523 eerror "Please reemerge dev-lang/php with the"
524 eerror "'debug' USE flag turned off."
525 eerror
526 PUSE_ENABLED="1"
527 fi
528
529 if has_concurrentmodphp ; then
530 eerror
531 eerror "You cannot install binary PHP extensions when"
532 eerror "the 'concurrentmodphp' USE flag is enabled!"
533 eerror "Please reemerge dev-lang/php with the"
534 eerror "'concurrentmodphp' USE flag turned off."
535 eerror
536 PUSE_ENABLED="1"
537 fi
538
539 if [[ -n ${PUSE_ENABLED} ]] ; then
540 die "'debug' and/or 'concurrentmodphp' USE flags turned on!"
541 fi
542 }
543
544 # @FUNCTION: dodoc-php
545 # @USAGE: <list of docs>
546 # @DESCRIPTION:
547 # Alternative to dodoc function for use in our PHP eclasses and ebuilds.
548 # Stored here because depend.php gets always sourced everywhere in the PHP
549 # ebuilds and eclasses. It simply is dodoc with a changed path to the docs.
550 # NOTE: No support for docinto is provided!
551 dodoc-php() {
552 if [[ $# -lt 1 ]] ; then
553 echo "$0: at least one argument needed" 1>&2
554 exit 1
555 fi
556
557 phpdocdir="/usr/share/doc/${CATEGORY}/${PF}/"
558
559 for x in $@ ; do
560 if [[ -s "${x}" ]] ; then
561 insinto "${phpdocdir}"
562 doins "${x}"
563 gzip -f -9 "${D}/${phpdocdir}/${x##*/}"
564 elif [[ ! -e "${x}" ]] ; then
565 echo "dodoc-php: ${x} does not exist" 1>&2
566 fi
567 done
568 }
569
570 # @FUNCTION: dohtml-php
571 # @USAGE: <list of html docs>
572 # @DESCRIPTION:
573 # Alternative to dohtml function for use in our PHP eclasses and ebuilds.
574 # Stored here because depend.php gets always sourced everywhere in the PHP
575 # ebuilds and eclasses. It simply is dohtml with a changed path to the docs.
576 # NOTE: No support for [-a|-A|-p|-x] options is provided!
577 dohtml-php() {
578 if [[ $# -lt 1 ]] ; then
579 echo "$0: at least one argument needed" 1>&2
580 exit 1
581 fi
582
583 phphtmldir="/usr/share/doc/${CATEGORY}/${PF}/html"
584
585 for x in $@ ; do
586 if [[ -s "${x}" ]] ; then
587 insinto "${phphtmldir}"
588 doins "${x}"
589 elif [[ ! -e "${x}" ]] ; then
590 echo "dohtml-php: ${x} does not exist" 1>&2
591 fi
592 done
593 }

  ViewVC Help
Powered by ViewVC 1.1.20