| 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.6 2010/12/27 22:19:51 darkside Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-source-r2.eclass,v 1.13 2011/08/15 12:48:27 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) |
| … | |
… | |
| 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/+} |
| … | |
… | |
| 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 |
| … | |
… | |
| 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-r2_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 | } |
| … | |
… | |
| 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 |
| … | |
… | |
| 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)" |
| 200 | PHP_CURRENTSLOT=${1:3} |
216 | PHP_CURRENTSLOT=${1:3} |
| 201 | |
217 | |
| 202 | S="${WORKDIR}/${1}" |
218 | PHP_EXT_S="${WORKDIR}/${1}" |
| 203 | cd "${S}" |
219 | cd "${PHP_EXT_S}" |
| 204 | } |
220 | } |
| 205 | |
221 | |
| 206 | php-ext-source-r2_buildinilist() { |
222 | php-ext-source-r2_buildinilist() { |
| 207 | # 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 |
| 208 | if [[ -z "${PHPSAPILIST}" ]] ; then |
224 | if [[ -z "${PHPSAPILIST}" ]] ; then |
| … | |
… | |
| 214 | for x in ${PHPSAPILIST} ; do |
230 | for x in ${PHPSAPILIST} ; do |
| 215 | if [[ -f "/etc/php/${x}-${1}/php.ini" ]] ; then |
231 | if [[ -f "/etc/php/${x}-${1}/php.ini" ]] ; then |
| 216 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-${1}/ext/${PHP_EXT_NAME}.ini" |
232 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-${1}/ext/${PHP_EXT_NAME}.ini" |
| 217 | fi |
233 | fi |
| 218 | done |
234 | done |
|
|
235 | PHPFULLINIFILELIST="${PHPFULLINIFILELIST} ${PHPINIFILELIST}" |
| 219 | } |
236 | } |
| 220 | |
237 | |
| 221 | # @FUNCTION: php-ext-source-r2_createinifiles |
238 | # @FUNCTION: php-ext-source-r2_createinifiles |
| 222 | # @DESCRIPTION: |
239 | # @DESCRIPTION: |
| 223 | # Builds ini files for every enabled slot and SAPI |
240 | # Builds ini files for every enabled slot and SAPI |
| … | |
… | |
| 228 | # Pull in the PHP settings |
245 | # Pull in the PHP settings |
| 229 | |
246 | |
| 230 | # Build the list of <ext>.ini files to edit/add to |
247 | # Build the list of <ext>.ini files to edit/add to |
| 231 | php-ext-source-r2_buildinilist ${slot} |
248 | php-ext-source-r2_buildinilist ${slot} |
| 232 | |
249 | |
|
|
250 | |
| 233 | # Add the needed lines to the <ext>.ini files |
251 | # Add the needed lines to the <ext>.ini files |
|
|
252 | local file |
| 234 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
253 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
|
|
254 | for file in ${PHPINIFILELIST}; do |
| 235 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" |
255 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" "${file}" |
|
|
256 | done |
| 236 | fi |
257 | fi |
|
|
258 | |
| 237 | |
259 | |
| 238 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
260 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
|
|
261 | local inifile |
| 239 | for inifile in ${PHPINIFILELIST} ; do |
262 | for inifile in ${PHPINIFILELIST} ; do |
|
|
263 | if [[ -n "${PHP_EXT_INIFILE}" ]]; then |
|
|
264 | cat "${FILESDIR}/${PHP_EXT_INIFILE}" > "${inifile}" |
|
|
265 | einfo "Added content of ${FILESDIR}/${PHP_EXT_INIFILE} to ${inifile}" |
|
|
266 | fi |
|
|
267 | |
|
|
268 | |
|
|
269 | |
|
|
270 | |
| 240 | inidir="${inifile/${PHP_EXT_NAME}.ini/}" |
271 | inidir="${inifile/${PHP_EXT_NAME}.ini/}" |
| 241 | inidir="${inidir/ext/ext-active}" |
272 | inidir="${inidir/ext/ext-active}" |
| 242 | dodir "/${inidir}" |
273 | dodir "/${inidir}" |
| 243 | dosym "/${inifile}" "/${inifile/ext/ext-active}" |
274 | dosym "/${inifile}" "/${inifile/ext/ext-active}" |
| 244 | done |
275 | done |
| 245 | |
276 | |
| 246 | # Add support for installing PHP files into a version dependant directory |
277 | # Add support for installing PHP files into a version dependant directory |
| 247 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
278 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
| 248 | done |
279 | done |
|
|
280 | |
| 249 | } |
281 | } |
| 250 | |
282 | |
| 251 | php-ext-source-r2_addextension() { |
283 | php-ext-source-r2_addextension() { |
| 252 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
284 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
| 253 | # We need the full path for ZendEngine extensions |
285 | # We need the full path for ZendEngine extensions |
| … | |
… | |
| 279 | # We don't need the full path for normal extensions! |
311 | # We don't need the full path for normal extensions! |
| 280 | ext_type="extension" |
312 | ext_type="extension" |
| 281 | ext_file="${1}" |
313 | ext_file="${1}" |
| 282 | fi |
314 | fi |
| 283 | |
315 | |
| 284 | php-ext-source-r2_addtoinifiles "${ext_type}" "${ext_file}" "Extension added" |
316 | php-ext-source-r2_addtoinifile "${ext_type}" "${ext_file}" "${2}" "Extension added" |
| 285 | } |
317 | } |
| 286 | |
318 | |
| 287 | # $1 - Setting name |
319 | # $1 - Setting name |
| 288 | # $2 - Setting value |
320 | # $2 - Setting value |
| 289 | # $3 - File to add to |
321 | # $3 - File to add to |
| 290 | # $4 - Sanitized text to output |
322 | # $4 - Sanitized text to output |
| 291 | php-ext-source-r2_addtoinifile() { |
323 | php-ext-source-r2_addtoinifile() { |
|
|
324 | local inifile="${WORKDIR}/${3}" |
| 292 | if [[ ! -d $(dirname ${3}) ]] ; then |
325 | if [[ ! -d $(dirname ${inifile}) ]] ; then |
| 293 | mkdir -p $(dirname ${3}) |
326 | mkdir -p $(dirname ${inifile}) |
| 294 | fi |
327 | fi |
| 295 | |
328 | |
| 296 | # Are we adding the name of a section? |
329 | # Are we adding the name of a section? |
| 297 | if [[ ${1:0:1} == "[" ]] ; then |
330 | if [[ ${1:0:1} == "[" ]] ; then |
| 298 | echo "${1}" >> "${3}" |
331 | echo "${1}" >> "${inifile}" |
| 299 | my_added="${1}" |
332 | my_added="${1}" |
| 300 | else |
333 | else |
| 301 | echo "${1}=${2}" >> "${3}" |
334 | echo "${1}=${2}" >> "${inifile}" |
| 302 | my_added="${1}=${2}" |
335 | my_added="${1}=${2}" |
| 303 | fi |
336 | fi |
| 304 | |
337 | |
| 305 | if [[ -z "${4}" ]] ; then |
338 | if [[ -z "${4}" ]] ; then |
| 306 | einfo "Added '${my_added}' to /${3}" |
339 | einfo "Added '${my_added}' to /${3}" |
| 307 | else |
340 | else |
| 308 | einfo "${4} to /${3}" |
341 | einfo "${4} to /${3}" |
| 309 | fi |
342 | fi |
| 310 | |
343 | |
| 311 | insinto /$(dirname ${3}) |
344 | insinto /$(dirname ${3}) |
| 312 | doins "${3}" |
345 | doins "${inifile}" |
| 313 | } |
346 | } |
| 314 | |
347 | |
| 315 | # @FUNCTION: php-ext-source-r2_addtoinifiles |
348 | # @FUNCTION: php-ext-source-r2_addtoinifiles |
| 316 | # @USAGE: <setting name> <setting value> [message to output]; or just [section name] |
349 | # @USAGE: <setting name> <setting value> [message to output]; or just [section name] |
| 317 | # @DESCRIPTION: |
350 | # @DESCRIPTION: |
| … | |
… | |
| 331 | # php-ext-source-r2_addtoinifiles "debugger.enabled" "on" |
364 | # php-ext-source-r2_addtoinifiles "debugger.enabled" "on" |
| 332 | # php-ext-source-r2_addtoinifiles "debugger.profiler_enabled" "on" |
365 | # php-ext-source-r2_addtoinifiles "debugger.profiler_enabled" "on" |
| 333 | # @CODE |
366 | # @CODE |
| 334 | php-ext-source-r2_addtoinifiles() { |
367 | php-ext-source-r2_addtoinifiles() { |
| 335 | local x |
368 | local x |
| 336 | for x in ${PHPINIFILELIST} ; do |
369 | for x in ${PHPFULLINIFILELIST} ; do |
| 337 | php-ext-source-r2_addtoinifile "${1}" "${2}" "${x}" "${3}" |
370 | php-ext-source-r2_addtoinifile "${1}" "${2}" "${x}" "${3}" |
| 338 | done |
371 | done |
| 339 | } |
372 | } |