1 | # Copyright 1999-2007 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-source-r2.eclass,v 1.4 2010/11/02 21:46:05 olemarkus Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-source-r2.eclass,v 1.10 2011/06/29 07:04:43 olemarkus 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> |
7 | # Author: Luca Longinotti <chtekk@gentoo.org> |
8 | # Author: Jakub Moc <jakub@gentoo.org> (documentation) |
8 | # Author: Jakub Moc <jakub@gentoo.org> (documentation) |
… | |
… | |
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 depend.php |
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 | |
22 | |
23 | # @ECLASS-VARIABLE: PHP_EXT_NAME |
23 | # @ECLASS-VARIABLE: PHP_EXT_NAME |
24 | # @DESCRIPTION: |
24 | # @DESCRIPTION: |
… | |
… | |
58 | [[ -z "${PHP_EXT_ZENDEXT}" ]] && PHP_EXT_ZENDEXT="no" |
58 | [[ -z "${PHP_EXT_ZENDEXT}" ]] && PHP_EXT_ZENDEXT="no" |
59 | |
59 | |
60 | # @ECLASS-VARIABLE: USE_PHP |
60 | # @ECLASS-VARIABLE: USE_PHP |
61 | # @DESCRIPTION: |
61 | # @DESCRIPTION: |
62 | # Lists the PHP slots compatibile the extension is compatibile with |
62 | # Lists the PHP slots compatibile the extension is compatibile with |
63 | [[ -z "${USE_PHP}" ]] && USE_PHP="php5-2 php5-3" |
63 | [[ -z "${USE_PHP}" ]] && USE_PHP="php5-3 php5-2" |
|
|
64 | |
|
|
65 | # @ECLASS-VARIABLE: PHP_EXT_OPTIONAL_USE |
|
|
66 | # @DESCRIPTION: |
|
|
67 | # 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 |
|
|
69 | # USE=php. |
|
|
70 | |
|
|
71 | # @ECLASS-VARIABLE: PHP_EXT_S |
|
|
72 | # @DESCRIPTION: |
|
|
73 | # The relative location of the temporary build directory for the PHP extension within |
|
|
74 | # the source package. This is useful for packages that bundle the PHP extension. |
|
|
75 | # Defaults to ${S} |
|
|
76 | [[ -z "${PHP_EXT_S}" ]] && PHP_EXT_S="${S}" |
64 | |
77 | |
65 | #Make sure at least one target is installed. Abuses USE dependencies. |
78 | #Make sure at least one target is installed. Abuses USE dependencies. |
66 | for target in ${USE_PHP}; do |
79 | for target in ${USE_PHP}; do |
67 | IUSE="${IUSE} php_targets_${target}" |
80 | IUSE="${IUSE} php_targets_${target}" |
68 | target=${target/+} |
81 | target=${target/+} |
69 | SELFDEPEND="${SELFDEPEND} =${CATEGORY}/${PF}[php_targets_${target}]" |
82 | SELFDEPEND="${SELFDEPEND} =${CATEGORY}/${PF}[php_targets_${target}]" |
70 | slot=${target/php} |
83 | slot=${target/php} |
71 | slot=${slot/-/.} |
84 | slot=${slot/-/.} |
72 | PHPDEPEND="${PHPDEPEND} |
85 | PHPDEPEND="${PHPDEPEND} |
73 | php_targets_${target}? ( dev-lang/php:${slot} )" |
86 | php_targets_${target}? ( dev-lang/php:${slot} )" |
74 | done |
87 | done |
75 | |
88 | |
76 | RDEPEND="${RDEPEND} |
89 | RDEPEND="${RDEPEND} |
|
|
90 | ${PHP_EXT_OPTIONAL_USE}${PHP_EXT_OPTIONAL_USE:+? ( } |
77 | || ( ${SELFDEPEND} ) |
91 | || ( ${SELFDEPEND} ) |
78 | ${PHPDEPEND}" |
92 | ${PHPDEPEND} |
|
|
93 | ${PHP_EXT_OPTIONAL_USE:+ )}" |
79 | |
94 | |
80 | |
95 | |
81 | # @FUNCTION: php-ext-source-r2_src_unpack |
96 | # @FUNCTION: php-ext-source-r2_src_unpack |
82 | # @DESCRIPTION: |
97 | # @DESCRIPTION: |
83 | # runs standard src_unpack + _phpize |
98 | # runs standard src_unpack + _phpize |
84 | # |
99 | # |
85 | # @VARIABLE: PHP_EXT_SKIP_PHPIZE |
100 | # @VARIABLE: PHP_EXT_SKIP_PHPIZE |
86 | # @DESCRIPTION: |
101 | # @DESCRIPTION: |
87 | # phpize will be run by default for all ebuilds that use |
102 | # phpize will be run by default for all ebuilds that use |
88 | # php-ext-source-r1_src_unpack |
103 | # php-ext-source-r2_src_unpack |
89 | # Set PHP_EXT_SKIP_PHPIZE="yes" in your ebuild if you do not want to run phpize. |
104 | # Set PHP_EXT_SKIP_PHPIZE="yes" in your ebuild if you do not want to run phpize. |
90 | php-ext-source-r2_src_unpack() { |
105 | php-ext-source-r2_src_unpack() { |
91 | unpack ${A} |
106 | unpack ${A} |
92 | local slot orig_s="$S" |
107 | local slot orig_s="${PHP_EXT_S}" |
93 | for slot in $(php_get_slots); do |
108 | for slot in $(php_get_slots); do |
94 | cp -r "${orig_s}" "${WORKDIR}/${slot}" |
109 | cp -r "${orig_s}" "${WORKDIR}/${slot}" |
95 | done |
110 | done |
96 | } |
111 | } |
97 | |
112 | |
98 | php-ext-source-r2_src_prepare() { |
113 | php-ext-source-r2_src_prepare() { |
99 | local slot orig_s="$S" |
114 | local slot orig_s="${PHP_EXT_S}" |
100 | for slot in $(php_get_slots); do |
115 | for slot in $(php_get_slots); do |
101 | php_init_slot_env ${slot} |
116 | php_init_slot_env ${slot} |
102 | php-ext-source-r2_phpize |
117 | php-ext-source-r2_phpize |
103 | done |
118 | done |
104 | } |
119 | } |
… | |
… | |
114 | ${PHPIZE} |
129 | ${PHPIZE} |
115 | # force run of libtoolize and regeneration of related autotools |
130 | # force run of libtoolize and regeneration of related autotools |
116 | # files (bug 220519) |
131 | # files (bug 220519) |
117 | rm aclocal.m4 |
132 | rm aclocal.m4 |
118 | eautoreconf |
133 | eautoreconf |
119 | fi |
134 | fi |
120 | } |
135 | } |
121 | |
136 | |
122 | # @FUNCTION: php-ext-source-r2_src_configure |
137 | # @FUNCTION: php-ext-source-r2_src_configure |
123 | # @DESCRIPTION: |
138 | # @DESCRIPTION: |
124 | # Takes care of standard configure for PHP extensions (modules). |
139 | # Takes care of standard configure for PHP extensions (modules). |
… | |
… | |
131 | for slot in $(php_get_slots); do |
146 | for slot in $(php_get_slots); do |
132 | php_init_slot_env ${slot} |
147 | php_init_slot_env ${slot} |
133 | # Set the correct config options |
148 | # Set the correct config options |
134 | # We cannot use econf here, phpize/php-config deals with setting |
149 | # We cannot use econf here, phpize/php-config deals with setting |
135 | # --prefix etc to whatever the php slot was configured to use |
150 | # --prefix etc to whatever the php slot was configured to use |
|
|
151 | echo ./configure --with-php-config=${PHPCONFIG} ${my_conf} |
136 | ./configure --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
152 | ./configure --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
137 | done |
153 | done |
138 | } |
154 | } |
139 | |
155 | |
140 | # @FUNCTION: php-ext-source-r2_src_compile |
156 | # @FUNCTION: php-ext-source-r2_src_compile |
… | |
… | |
143 | php-ext-source-r2_src_compile() { |
159 | php-ext-source-r2_src_compile() { |
144 | # net-snmp creates this file #324739 |
160 | # net-snmp creates this file #324739 |
145 | addpredict /usr/share/snmp/mibs/.index |
161 | addpredict /usr/share/snmp/mibs/.index |
146 | # shm extension createss a semaphore file #173574 |
162 | # shm extension createss a semaphore file #173574 |
147 | addpredict /session_mm_cli0.sem |
163 | addpredict /session_mm_cli0.sem |
148 | local slot |
164 | local slot |
149 | for slot in $(php_get_slots); do |
165 | for slot in $(php_get_slots); do |
150 | php_init_slot_env ${slot} |
166 | php_init_slot_env ${slot} |
151 | emake || die "Unable to make code" |
167 | emake || die "Unable to make code" |
152 | |
168 | |
153 | done |
169 | done |
… | |
… | |
195 | PHPCLI="/usr/${libdir}/${1}/bin/php" |
211 | PHPCLI="/usr/${libdir}/${1}/bin/php" |
196 | PHPCGI="/usr/${libdir}/${1}/bin/php-cgi" |
212 | PHPCGI="/usr/${libdir}/${1}/bin/php-cgi" |
197 | PHP_PKG="$(best_version =dev-lang/php-${1:3}*)" |
213 | PHP_PKG="$(best_version =dev-lang/php-${1:3}*)" |
198 | PHPPREFIX="/usr/${libdir}/${slot}" |
214 | PHPPREFIX="/usr/${libdir}/${slot}" |
199 | EXT_DIR="$(${PHPCONFIG} --extension-dir 2>/dev/null)" |
215 | EXT_DIR="$(${PHPCONFIG} --extension-dir 2>/dev/null)" |
|
|
216 | PHP_CURRENTSLOT=${1:3} |
200 | |
217 | |
201 | S="${WORKDIR}/${1}" |
218 | PHP_EXT_S="${WORKDIR}/${1}" |
202 | cd "${S}" |
219 | cd "${PHP_EXT_S}" |
203 | } |
220 | } |
204 | |
221 | |
205 | php-ext-source-r2_buildinilist() { |
222 | php-ext-source-r2_buildinilist() { |
206 | # Work out the list of <ext>.ini files to edit/add to |
223 | # Work out the list of <ext>.ini files to edit/add to |
207 | if [[ -z "${PHPSAPILIST}" ]] ; then |
224 | if [[ -z "${PHPSAPILIST}" ]] ; then |
… | |
… | |
220 | # @FUNCTION: php-ext-source-r2_createinifiles |
237 | # @FUNCTION: php-ext-source-r2_createinifiles |
221 | # @DESCRIPTION: |
238 | # @DESCRIPTION: |
222 | # Builds ini files for every enabled slot and SAPI |
239 | # Builds ini files for every enabled slot and SAPI |
223 | php-ext-source-r2_createinifiles() { |
240 | php-ext-source-r2_createinifiles() { |
224 | local slot |
241 | local slot |
225 | for slot in $(php_get_slots); do |
242 | for slot in $(php_get_slots); do |
226 | php_init_slot_env ${slot} |
243 | php_init_slot_env ${slot} |
227 | # Pull in the PHP settings |
244 | # Pull in the PHP settings |
228 | |
245 | |
229 | # Build the list of <ext>.ini files to edit/add to |
246 | # Build the list of <ext>.ini files to edit/add to |
230 | php-ext-source-r2_buildinilist ${slot} |
247 | php-ext-source-r2_buildinilist ${slot} |
… | |
… | |
249 | |
266 | |
250 | php-ext-source-r2_addextension() { |
267 | php-ext-source-r2_addextension() { |
251 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
268 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
252 | # We need the full path for ZendEngine extensions |
269 | # We need the full path for ZendEngine extensions |
253 | # and we need to check for debugging enabled! |
270 | # and we need to check for debugging enabled! |
254 | if has_zts ; then |
271 | if has_version "dev-lang/php:${PHP_CURRENTSLOT}[threads]" ; then |
255 | if has_debug ; then |
272 | if has_version "dev-lang/php:${PHP_CURRENTSLOT}[debug]" ; then |
256 | ext_type="zend_extension_debug_ts" |
273 | ext_type="zend_extension_debug_ts" |
257 | else |
274 | else |
258 | ext_type="zend_extension_ts" |
275 | ext_type="zend_extension_ts" |
259 | fi |
276 | fi |
260 | ext_file="${EXT_DIR}/${1}" |
277 | ext_file="${EXT_DIR}/${1}" |
261 | else |
278 | else |
262 | if has_debug ; then |
279 | if has_version "dev-lang/php:${PHP_CURRENTSLOT}[debug]"; then |
263 | ext_type="zend_extension_debug" |
280 | ext_type="zend_extension_debug" |
264 | else |
281 | else |
265 | ext_type="zend_extension" |
282 | ext_type="zend_extension" |
266 | fi |
283 | fi |
267 | ext_file="${EXT_DIR}/${1}" |
284 | ext_file="${EXT_DIR}/${1}" |