| 1 | # Copyright 1999-2005 Gentoo Foundation |
1 | # Copyright 1999-2007 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-base-r1.eclass,v 1.2 2005/09/25 15:21:22 kloeri Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-base-r1.eclass,v 1.7 2007/05/12 02:54:35 chtekk Exp $ |
| 4 | # |
4 | # |
| 5 | # Author: Tal Peer <coredumb@gentoo.org> |
5 | # Author: Tal Peer <coredumb@gentoo.org> |
| 6 | # Author: Stuart Herbert <stuart@gentoo.org> |
6 | # Author: Stuart Herbert <stuart@gentoo.org> |
|
|
7 | # Author: Luca Longinotti <chtekk@gentoo.org> |
|
|
8 | # Maintained by the PHP Team <php-bugs@gentoo.org> |
| 7 | # |
9 | # |
| 8 | # The php-ext-base eclass provides a unified interface for adding standalone |
10 | # The php-ext-base-r1 eclass provides a unified interface for adding standalone |
| 9 | # PHP extensions ('modules') to the php.ini files on your system. |
11 | # PHP extensions ('modules') to the php.ini files on your system. |
| 10 | # |
12 | # |
| 11 | # Combined with php-ext-source, we have a standardised solution for supporting |
13 | # Combined with php-ext-source-r1, we have a standardised solution for supporting |
| 12 | # PHP extensions |
14 | # PHP extensions. |
| 13 | |
15 | |
| 14 | inherit depend.php |
16 | inherit depend.php |
| 15 | |
17 | |
| 16 | EXPORT_FUNCTIONS src_install |
18 | EXPORT_FUNCTIONS src_install |
| 17 | |
19 | |
| 18 | # ---begin ebuild configurable settings |
20 | # The extension name, this must be set, otherwise we die |
|
|
21 | [[ -z "${PHP_EXT_NAME}" ]] && die "No module name specified for the php-ext-base-r1 eclass" |
| 19 | |
22 | |
| 20 | # The extension name, this must be set, otherwise we die. |
23 | # Wether or not to add a line to php.ini for the extension |
| 21 | [ -z "${PHP_EXT_NAME}" ] && die "No module name specified for the php-ext eclass." |
24 | # (defaults to "yes" and shouldn't be changed in most cases) |
|
|
25 | [[ -z "${PHP_EXT_INI}" ]] && PHP_EXT_INI="yes" |
| 22 | |
26 | |
| 23 | # Wether the extensions is a Zend Engine extension |
27 | # Wether the extension is a ZendEngine extension or not |
| 24 | #(defaults to "no" and if you don't know what is it, you don't need it.) |
28 | # (defaults to "no" and if you don't know what is it, you don't need it) |
| 25 | [ -z "${PHP_EXT_ZENDEXT}" ] && PHP_EXT_ZENDEXT="no" |
29 | [[ -z "${PHP_EXT_ZENDEXT}" ]] && PHP_EXT_ZENDEXT="no" |
| 26 | |
|
|
| 27 | # Wether or not to add a line in the php.ini for the extension |
|
|
| 28 | # (defaults to "yes" and shouldn't be changed in most cases) |
|
|
| 29 | [ -z "${PHP_EXT_INI}" ] && PHP_EXT_INI="yes" |
|
|
| 30 | |
|
|
| 31 | # find out where to install extensions |
|
|
| 32 | EXT_DIR="`${PHPCONFIG} --extension-dir 2>/dev/null`" |
|
|
| 33 | |
|
|
| 34 | # ---end ebuild configurable settings |
|
|
| 35 | |
|
|
| 36 | DEPEND="${DEPEND} |
|
|
| 37 | >=sys-devel/m4-1.4.3 |
|
|
| 38 | >=sys-devel/libtool-1.5.18 |
|
|
| 39 | >=sys-devel/automake-1.9.6 |
|
|
| 40 | sys-devel/automake-wrapper |
|
|
| 41 | >=sys-devel/autoconf-2.59 |
|
|
| 42 | sys-devel/autoconf-wrapper" |
|
|
| 43 | |
30 | |
| 44 | php-ext-base-r1_buildinilist() { |
31 | php-ext-base-r1_buildinilist() { |
| 45 | # work out the list of .ini files to edit/add to |
32 | # Work out the list of <ext>.ini files to edit/add to |
| 46 | if [ -z "${PHPSAPILIST}" ]; then |
33 | if [[ -z "${PHPSAPILIST}" ]] ; then |
| 47 | PHPSAPILIST="apache1 apache2 cli cgi" |
34 | PHPSAPILIST="apache2 cli cgi" |
| 48 | fi |
35 | fi |
| 49 | |
36 | |
| 50 | PHPINIFILELIST= |
37 | PHPINIFILELIST="" |
| 51 | |
38 | |
| 52 | for x in ${PHPSAPILIST} ; do |
39 | for x in ${PHPSAPILIST} ; do |
| 53 | if [ -f /etc/php/${x}-php${PHP_VERSION}/php.ini ]; then |
40 | if [[ -f "/etc/php/${x}-php${PHP_VERSION}/php.ini" ]] ; then |
| 54 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-php${PHP_VERSION}/ext/${PHP_EXT_NAME}.ini" |
41 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-php${PHP_VERSION}/ext/${PHP_EXT_NAME}.ini" |
| 55 | fi |
42 | fi |
| 56 | done |
43 | done |
| 57 | } |
44 | } |
| 58 | |
45 | |
| 59 | php-ext-base-r1_src_install() { |
46 | php-ext-base-r1_src_install() { |
|
|
47 | # Pull in the PHP settings |
| 60 | has_php |
48 | has_php |
| 61 | addpredict /usr/share/snmp/mibs/.index |
49 | addpredict /usr/share/snmp/mibs/.index |
|
|
50 | |
|
|
51 | # Build the list of <ext>.ini files to edit/add to |
| 62 | php-ext-base-r1_buildinilist |
52 | php-ext-base-r1_buildinilist |
|
|
53 | |
|
|
54 | # Add the needed lines to the <ext>.ini files |
| 63 | if [ "${PHP_EXT_INI}" = "yes" ] ; then |
55 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
| 64 | php-ext-base-r1_addextension "${PHP_EXT_NAME}.so" |
56 | php-ext-base-r1_addextension "${PHP_EXT_NAME}.so" |
| 65 | fi |
57 | fi |
|
|
58 | |
|
|
59 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
|
|
60 | for inifile in ${PHPINIFILELIST} ; do |
|
|
61 | inidir="${inifile/${PHP_EXT_NAME}.ini/}" |
|
|
62 | inidir="${inidir/ext/ext-active}" |
|
|
63 | dodir "/${inidir}" |
|
|
64 | dosym "/${inifile}" "/${inifile/ext/ext-active}" |
|
|
65 | done |
|
|
66 | |
| 66 | # add support for installing php files into a version dependant directory |
67 | # Add support for installing PHP files into a version dependant directory |
| 67 | PHP_EXT_SHARED_DIR="/usr/share/${PHP_SHARED_CAT}/${PHP_EXT_NAME}" |
68 | PHP_EXT_SHARED_DIR="/usr/share/${PHP_SHARED_CAT}/${PHP_EXT_NAME}" |
| 68 | } |
69 | } |
| 69 | |
70 | |
| 70 | php-ext-base-r1_addextension() { |
71 | php-ext-base-r1_addextension() { |
| 71 | if [ "${PHP_EXT_ZENDEXT}" = "yes" ] ; then |
72 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
|
|
73 | # We need the full path for ZendEngine extensions |
|
|
74 | # and we need to check for debugging enabled! |
| 72 | if has_zts ; then |
75 | if has_zts ; then |
|
|
76 | if has_debug ; then |
|
|
77 | ext_type="zend_extension_debug_ts" |
|
|
78 | else |
| 73 | ext_type="zend_extension_ts" |
79 | ext_type="zend_extension_ts" |
|
|
80 | fi |
| 74 | ext_file="${EXT_DIR}/$1" |
81 | ext_file="${EXT_DIR}/$1" |
| 75 | else |
82 | else |
|
|
83 | if has_debug ; then |
|
|
84 | ext_type="zend_extension_debug" |
|
|
85 | else |
| 76 | ext_type="zend_extension" |
86 | ext_type="zend_extension" |
|
|
87 | fi |
| 77 | ext_file="${EXT_DIR}/$1" |
88 | ext_file="${EXT_DIR}/$1" |
| 78 | fi |
89 | fi |
| 79 | else |
90 | else |
| 80 | # we do *not* add the full path for the extension! |
91 | # We don't need the full path for normal extensions! |
| 81 | ext_type="extension" |
92 | ext_type="extension" |
| 82 | ext_file="$1" |
93 | ext_file="$1" |
| 83 | fi |
94 | fi |
| 84 | |
95 | |
| 85 | php-ext-base-r1_addtoinifiles "${ext_type}" "${ext_file}" "Extension added" |
96 | php-ext-base-r1_addtoinifiles "${ext_type}" "${ext_file}" "Extension added" |
| 86 | } |
97 | } |
| 87 | |
98 | |
| 88 | # $1 - setting name |
99 | # $1 - Setting name |
| 89 | # $2 - setting value |
100 | # $2 - Setting value |
| 90 | # $3 - file to add to |
101 | # $3 - File to add to |
| 91 | # $4 - sanitised text to output |
102 | # $4 - Sanitized text to output |
| 92 | |
103 | |
| 93 | php-ext-base-r1_addtoinifile() { |
104 | php-ext-base-r1_addtoinifile() { |
| 94 | if [[ ! -d `dirname $3` ]]; then |
105 | if [[ ! -d `dirname $3` ]] ; then |
| 95 | mkdir -p `dirname $3` |
106 | mkdir -p `dirname $3` |
| 96 | fi |
107 | fi |
| 97 | |
108 | |
| 98 | # are we adding the name of a section? |
109 | # Are we adding the name of a section? |
| 99 | if [[ ${1:0:1} == "[" ]] ; then |
110 | if [[ ${1:0:1} == "[" ]] ; then |
| 100 | echo "$1" >> $3 |
111 | echo "$1" >> "$3" |
| 101 | my_added="$1" |
112 | my_added="$1" |
| 102 | else |
113 | else |
| 103 | echo "$1=$2" >> $3 |
114 | echo "$1=$2" >> "$3" |
| 104 | my_added="$1=$2" |
115 | my_added="$1=$2" |
| 105 | fi |
116 | fi |
| 106 | |
117 | |
| 107 | if [ -z "$4" ]; then |
118 | if [[ -z "$4" ]] ; then |
| 108 | einfo "Added '$my_added' to /$3" |
119 | einfo "Added '$my_added' to /$3" |
| 109 | else |
120 | else |
| 110 | einfo "$4 to /$3" |
121 | einfo "$4 to /$3" |
| 111 | fi |
122 | fi |
| 112 | |
123 | |
| 113 | # yes, this is inefficient - but it works every time ;-) |
|
|
| 114 | |
|
|
| 115 | insinto /`dirname $3` |
124 | insinto /`dirname $3` |
| 116 | doins $3 |
125 | doins "$3" |
| 117 | } |
126 | } |
| 118 | |
127 | |
| 119 | php-ext-base-r1_addtoinifiles() { |
128 | php-ext-base-r1_addtoinifiles() { |
| 120 | for x in ${PHPINIFILELIST} ; do |
129 | for x in ${PHPINIFILELIST} ; do |
| 121 | php-ext-base-r1_addtoinifile "$1" "$2" "$x" "$3" |
130 | php-ext-base-r1_addtoinifile "$1" "$2" "$x" "$3" |