| 1 | # Copyright 1999-2007 Gentoo Foundation |
1 | # Copyright 1999-2012 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-source-r2.eclass,v 1.13 2011/08/15 12:48:27 olemarkus Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-source-r2.eclass,v 1.23 2012/01/15 17:18:48 olemarkus Exp $ |
| 4 | # |
4 | |
|
|
5 | # @ECLASS: php-ext-source-r2.eclass |
|
|
6 | # @MAINTAINER: |
|
|
7 | # Gentoo PHP team <php-bugs@gentoo.org> |
|
|
8 | # @AUTHOR: |
| 5 | # Author: Tal Peer <coredumb@gentoo.org> |
9 | # Author: Tal Peer <coredumb@gentoo.org> |
| 6 | # Author: Stuart Herbert <stuart@gentoo.org> |
10 | # Author: Stuart Herbert <stuart@gentoo.org> |
| 7 | # Author: Luca Longinotti <chtekk@gentoo.org> |
11 | # Author: Luca Longinotti <chtekk@gentoo.org> |
| 8 | # Author: Jakub Moc <jakub@gentoo.org> (documentation) |
12 | # Author: Jakub Moc <jakub@gentoo.org> (documentation) |
| 9 | # Author: Ole Markus With <olemarkus@gentoo.org> |
13 | # Author: Ole Markus With <olemarkus@gentoo.org> |
| 10 | |
|
|
| 11 | # @ECLASS: php-ext-source-r2.eclass |
|
|
| 12 | # @MAINTAINER: |
|
|
| 13 | # Gentoo PHP team <php-bugs@gentoo.org> |
|
|
| 14 | # @BLURB: A unified interface for compiling and installing standalone PHP extensions. |
14 | # @BLURB: A unified interface for compiling and installing standalone PHP extensions. |
| 15 | # @DESCRIPTION: |
15 | # @DESCRIPTION: |
| 16 | # This eclass provides a unified interface for compiling and installing standalone |
16 | # This eclass provides a unified interface for compiling and installing standalone |
| 17 | # PHP extensions (modules). |
17 | # PHP extensions (modules). |
| 18 | |
18 | |
| 19 | inherit flag-o-matic autotools |
19 | inherit flag-o-matic autotools |
| 20 | |
20 | |
| 21 | EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install |
21 | EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install |
| 22 | |
|
|
| 23 | # @ECLASS-VARIABLE: PHP_EXT_NAME |
|
|
| 24 | # @DESCRIPTION: |
|
|
| 25 | # The extension name. This must be set, otherwise the eclass dies. |
|
|
| 26 | # Only automagically set by php-ext-pecl-r1.eclass, so unless your ebuild |
|
|
| 27 | # inherits that eclass, you must set this manually before inherit. |
|
|
| 28 | [[ -z "${PHP_EXT_NAME}" ]] && die "No module name specified for the php-ext-source-r2 eclass" |
|
|
| 29 | |
22 | |
| 30 | DEPEND=">=sys-devel/m4-1.4.3 |
23 | DEPEND=">=sys-devel/m4-1.4.3 |
| 31 | >=sys-devel/libtool-1.5.18" |
24 | >=sys-devel/libtool-1.5.18" |
| 32 | RDEPEND="" |
25 | RDEPEND="" |
| 33 | |
26 | |
| 34 | # Because of USE deps, we require at least EAPI 2 |
27 | # Because of USE deps, we require at least EAPI 2 |
| 35 | case ${EAPI} in |
28 | case ${EAPI} in |
| 36 | 2|3) ;; |
29 | 2|3|4) ;; |
| 37 | *) |
30 | *) |
| 38 | die "php-ext-source-r2 is not compatible with EAPI=${EAPI}" |
31 | die "php-ext-source-r2 is not compatible with EAPI=${EAPI}" |
| 39 | esac |
32 | esac |
| 40 | |
33 | |
| 41 | # @ECLASS-VARIABLE: PHP_EXT_NAME |
34 | # @ECLASS-VARIABLE: PHP_EXT_NAME |
| … | |
… | |
| 58 | [[ -z "${PHP_EXT_ZENDEXT}" ]] && PHP_EXT_ZENDEXT="no" |
51 | [[ -z "${PHP_EXT_ZENDEXT}" ]] && PHP_EXT_ZENDEXT="no" |
| 59 | |
52 | |
| 60 | # @ECLASS-VARIABLE: USE_PHP |
53 | # @ECLASS-VARIABLE: USE_PHP |
| 61 | # @DESCRIPTION: |
54 | # @DESCRIPTION: |
| 62 | # Lists the PHP slots compatibile the extension is compatibile with |
55 | # Lists the PHP slots compatibile the extension is compatibile with |
| 63 | [[ -z "${USE_PHP}" ]] && USE_PHP="php5-3 php5-2" |
56 | [[ -z "${USE_PHP}" ]] && USE_PHP="php5-3" |
| 64 | |
57 | |
| 65 | # @ECLASS-VARIABLE: PHP_EXT_OPTIONAL_USE |
58 | # @ECLASS-VARIABLE: PHP_EXT_OPTIONAL_USE |
| 66 | # @DESCRIPTION: |
59 | # @DESCRIPTION: |
| 67 | # If set, this is the USE flag that the PHP dependencies are behind |
60 | # If set, this is the USE flag that the PHP dependencies are behind |
| 68 | # Most commonly set as PHP_EXT_OPTIONAL_USE=php to get the dependencies behind |
61 | # Most commonly set as PHP_EXT_OPTIONAL_USE=php to get the dependencies behind |
| … | |
… | |
| 90 | ${PHP_EXT_OPTIONAL_USE}${PHP_EXT_OPTIONAL_USE:+? ( } |
83 | ${PHP_EXT_OPTIONAL_USE}${PHP_EXT_OPTIONAL_USE:+? ( } |
| 91 | || ( ${SELFDEPEND} ) |
84 | || ( ${SELFDEPEND} ) |
| 92 | ${PHPDEPEND} |
85 | ${PHPDEPEND} |
| 93 | ${PHP_EXT_OPTIONAL_USE:+ )}" |
86 | ${PHP_EXT_OPTIONAL_USE:+ )}" |
| 94 | |
87 | |
|
|
88 | DEPEND="${DEPEND} |
|
|
89 | ${PHP_EXT_OPTIONAL_USE}${PHP_EXT_OPTIONAL_USE:+? ( } |
|
|
90 | ${PHPDEPEND} |
|
|
91 | ${PHP_EXT_OPTIONAL_USE:+ )} |
|
|
92 | " |
| 95 | |
93 | |
| 96 | # @FUNCTION: php-ext-source-r2_src_unpack |
94 | # @FUNCTION: php-ext-source-r2_src_unpack |
| 97 | # @DESCRIPTION: |
95 | # @DESCRIPTION: |
| 98 | # runs standard src_unpack + _phpize |
96 | # runs standard src_unpack + _phpize |
| 99 | # |
97 | |
| 100 | # @VARIABLE: PHP_EXT_SKIP_PHPIZE |
98 | # @VARIABLE: PHP_EXT_SKIP_PHPIZE |
| 101 | # @DESCRIPTION: |
99 | # @DESCRIPTION: |
| 102 | # phpize will be run by default for all ebuilds that use |
100 | # phpize will be run by default for all ebuilds that use |
| 103 | # php-ext-source-r2_src_unpack |
101 | # php-ext-source-r2_src_unpack |
| 104 | # Set PHP_EXT_SKIP_PHPIZE="yes" in your ebuild if you do not want to run phpize. |
102 | # Set PHP_EXT_SKIP_PHPIZE="yes" in your ebuild if you do not want to run phpize. |
| … | |
… | |
| 116 | php_init_slot_env ${slot} |
114 | php_init_slot_env ${slot} |
| 117 | php-ext-source-r2_phpize |
115 | php-ext-source-r2_phpize |
| 118 | done |
116 | done |
| 119 | } |
117 | } |
| 120 | |
118 | |
| 121 | # @FUNCTION php-ext-source-r2_phpize |
119 | # @FUNCTION: php-ext-source-r2_phpize |
| 122 | # @DESCRIPTION: |
120 | # @DESCRIPTION: |
| 123 | # Runs phpize and autotools in addition to the standard src_unpack |
121 | # Runs phpize and autotools in addition to the standard src_unpack |
| 124 | php-ext-source-r2_phpize() { |
122 | php-ext-source-r2_phpize() { |
| 125 | if [[ "${PHP_EXT_SKIP_PHPIZE}" != 'yes' ]] ; then |
123 | if [[ "${PHP_EXT_SKIP_PHPIZE}" != 'yes' ]] ; then |
| 126 | # Create configure out of config.m4 |
124 | # Create configure out of config.m4 |
| 127 | # I wish I could run this to solve #329071, but I cannot |
125 | # I wish I could run this to solve #329071, but I cannot |
| 128 | #autotools_run_tool ${PHPIZE} |
126 | #autotools_run_tool ${PHPIZE} |
| 129 | ${PHPIZE} |
127 | ${PHPIZE} |
| 130 | # force run of libtoolize and regeneration of related autotools |
128 | # force run of libtoolize and regeneration of related autotools |
| 131 | # files (bug 220519) |
129 | # files (bug 220519) |
| 132 | rm aclocal.m4 |
130 | rm aclocal.m4 |
| 133 | eautoreconf |
131 | eautoreconf |
| … | |
… | |
| 135 | } |
133 | } |
| 136 | |
134 | |
| 137 | # @FUNCTION: php-ext-source-r2_src_configure |
135 | # @FUNCTION: php-ext-source-r2_src_configure |
| 138 | # @DESCRIPTION: |
136 | # @DESCRIPTION: |
| 139 | # Takes care of standard configure for PHP extensions (modules). |
137 | # Takes care of standard configure for PHP extensions (modules). |
| 140 | # |
138 | |
| 141 | # @VARIABLE: my_conf |
139 | # @VARIABLE: my_conf |
| 142 | # @DESCRIPTION: |
140 | # @DESCRIPTION: |
| 143 | # Set this in the ebuild to pass configure options to econf. |
141 | # Set this in the ebuild to pass configure options to econf. |
| 144 | php-ext-source-r2_src_configure() { |
142 | php-ext-source-r2_src_configure() { |
| 145 | local slot |
143 | local slot |
| 146 | for slot in $(php_get_slots); do |
144 | for slot in $(php_get_slots); do |
| 147 | php_init_slot_env ${slot} |
145 | php_init_slot_env ${slot} |
| 148 | # Set the correct config options |
146 | # Set the correct config options |
| 149 | # We cannot use econf here, phpize/php-config deals with setting |
|
|
| 150 | # --prefix etc to whatever the php slot was configured to use |
|
|
| 151 | echo ./configure --with-php-config=${PHPCONFIG} ${my_conf} |
|
|
| 152 | ./configure --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
147 | econf --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
| 153 | done |
148 | done |
| 154 | } |
149 | } |
| 155 | |
150 | |
| 156 | # @FUNCTION: php-ext-source-r2_src_compile |
151 | # @FUNCTION: php-ext-source-r2_src_compile |
| 157 | # @DESCRIPTION: |
152 | # @DESCRIPTION: |
| … | |
… | |
| 188 | local doc |
183 | local doc |
| 189 | for doc in ${DOCS} ; do |
184 | for doc in ${DOCS} ; do |
| 190 | [[ -s ${doc} ]] && dodoc ${doc} |
185 | [[ -s ${doc} ]] && dodoc ${doc} |
| 191 | done |
186 | done |
| 192 | |
187 | |
|
|
188 | INSTALL_ROOT="${D}" emake install-headers |
| 193 | done |
189 | done |
| 194 | php-ext-source-r2_createinifiles |
190 | php-ext-source-r2_createinifiles |
| 195 | } |
191 | } |
| 196 | |
192 | |
| 197 | |
193 | |
| … | |
… | |
| 249 | |
245 | |
| 250 | |
246 | |
| 251 | # Add the needed lines to the <ext>.ini files |
247 | # Add the needed lines to the <ext>.ini files |
| 252 | local file |
248 | local file |
| 253 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
249 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
| 254 | for file in ${PHPINIFILELIST}; do |
250 | for file in ${PHPINIFILELIST}; do |
| 255 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" "${file}" |
251 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" "${file}" |
| 256 | done |
252 | done |
| 257 | fi |
253 | fi |
| 258 | |
|
|
| 259 | |
254 | |
| 260 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
255 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
| 261 | local inifile |
256 | local inifile |
| 262 | for inifile in ${PHPINIFILELIST} ; do |
257 | for inifile in ${PHPINIFILELIST} ; do |
| 263 | if [[ -n "${PHP_EXT_INIFILE}" ]]; then |
258 | if [[ -n "${PHP_EXT_INIFILE}" ]]; then |
| … | |
… | |
| 275 | done |
270 | done |
| 276 | |
271 | |
| 277 | # Add support for installing PHP files into a version dependant directory |
272 | # Add support for installing PHP files into a version dependant directory |
| 278 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
273 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
| 279 | done |
274 | done |
| 280 | |
|
|
| 281 | } |
275 | } |
| 282 | |
276 | |
| 283 | php-ext-source-r2_addextension() { |
277 | php-ext-source-r2_addextension() { |
| 284 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
278 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
| 285 | # We need the full path for ZendEngine extensions |
279 | # We need the full path for ZendEngine extensions |