| 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.7 2011/01/09 00:05:10 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/php-ext-source-r2.eclass,v 1.14 2011/08/19 09:15:51 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 | |
64 | |
| 65 | # @ECLASS-VARIABLE: PHP_EXT_OPTIONAL_USE |
65 | # @ECLASS-VARIABLE: PHP_EXT_OPTIONAL_USE |
| 66 | # @DESCRIPTION: |
66 | # @DESCRIPTION: |
| 67 | # If set, this is the USE flag that the PHP dependencies are behind |
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 |
68 | # Most commonly set as PHP_EXT_OPTIONAL_USE=php to get the dependencies behind |
| 69 | # USE=php. |
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}" |
| 70 | |
77 | |
| 71 | #Make sure at least one target is installed. Abuses USE dependencies. |
78 | #Make sure at least one target is installed. Abuses USE dependencies. |
| 72 | for target in ${USE_PHP}; do |
79 | for target in ${USE_PHP}; do |
| 73 | IUSE="${IUSE} php_targets_${target}" |
80 | IUSE="${IUSE} php_targets_${target}" |
| 74 | target=${target/+} |
81 | target=${target/+} |
| … | |
… | |
| 95 | # phpize will be run by default for all ebuilds that use |
102 | # phpize will be run by default for all ebuilds that use |
| 96 | # php-ext-source-r2_src_unpack |
103 | # php-ext-source-r2_src_unpack |
| 97 | # 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. |
| 98 | php-ext-source-r2_src_unpack() { |
105 | php-ext-source-r2_src_unpack() { |
| 99 | unpack ${A} |
106 | unpack ${A} |
| 100 | local slot orig_s="$S" |
107 | local slot orig_s="${PHP_EXT_S}" |
| 101 | for slot in $(php_get_slots); do |
108 | for slot in $(php_get_slots); do |
| 102 | cp -r "${orig_s}" "${WORKDIR}/${slot}" |
109 | cp -r "${orig_s}" "${WORKDIR}/${slot}" |
| 103 | done |
110 | done |
| 104 | } |
111 | } |
| 105 | |
112 | |
| 106 | php-ext-source-r2_src_prepare() { |
113 | php-ext-source-r2_src_prepare() { |
| 107 | local slot orig_s="$S" |
114 | local slot orig_s="${PHP_EXT_S}" |
| 108 | for slot in $(php_get_slots); do |
115 | for slot in $(php_get_slots); do |
| 109 | php_init_slot_env ${slot} |
116 | php_init_slot_env ${slot} |
| 110 | php-ext-source-r2_phpize |
117 | php-ext-source-r2_phpize |
| 111 | done |
118 | done |
| 112 | } |
119 | } |
| … | |
… | |
| 137 | php-ext-source-r2_src_configure() { |
144 | php-ext-source-r2_src_configure() { |
| 138 | local slot |
145 | local slot |
| 139 | for slot in $(php_get_slots); do |
146 | for slot in $(php_get_slots); do |
| 140 | php_init_slot_env ${slot} |
147 | php_init_slot_env ${slot} |
| 141 | # Set the correct config options |
148 | # Set the correct config options |
| 142 | # We cannot use econf here, phpize/php-config deals with setting |
|
|
| 143 | # --prefix etc to whatever the php slot was configured to use |
|
|
| 144 | ./configure --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
149 | econf --with-php-config=${PHPCONFIG} ${my_conf} || die "Unable to configure code to compile" |
| 145 | done |
150 | done |
| 146 | } |
151 | } |
| 147 | |
152 | |
| 148 | # @FUNCTION: php-ext-source-r2_src_compile |
153 | # @FUNCTION: php-ext-source-r2_src_compile |
| 149 | # @DESCRIPTION: |
154 | # @DESCRIPTION: |
| … | |
… | |
| 180 | local doc |
185 | local doc |
| 181 | for doc in ${DOCS} ; do |
186 | for doc in ${DOCS} ; do |
| 182 | [[ -s ${doc} ]] && dodoc ${doc} |
187 | [[ -s ${doc} ]] && dodoc ${doc} |
| 183 | done |
188 | done |
| 184 | |
189 | |
|
|
190 | INSTALL_ROOT="${D}" emake install-headers |
| 185 | done |
191 | done |
| 186 | php-ext-source-r2_createinifiles |
192 | php-ext-source-r2_createinifiles |
| 187 | } |
193 | } |
| 188 | |
194 | |
| 189 | |
195 | |
| … | |
… | |
| 205 | PHP_PKG="$(best_version =dev-lang/php-${1:3}*)" |
211 | PHP_PKG="$(best_version =dev-lang/php-${1:3}*)" |
| 206 | PHPPREFIX="/usr/${libdir}/${slot}" |
212 | PHPPREFIX="/usr/${libdir}/${slot}" |
| 207 | EXT_DIR="$(${PHPCONFIG} --extension-dir 2>/dev/null)" |
213 | EXT_DIR="$(${PHPCONFIG} --extension-dir 2>/dev/null)" |
| 208 | PHP_CURRENTSLOT=${1:3} |
214 | PHP_CURRENTSLOT=${1:3} |
| 209 | |
215 | |
| 210 | S="${WORKDIR}/${1}" |
216 | PHP_EXT_S="${WORKDIR}/${1}" |
| 211 | cd "${S}" |
217 | cd "${PHP_EXT_S}" |
| 212 | } |
218 | } |
| 213 | |
219 | |
| 214 | php-ext-source-r2_buildinilist() { |
220 | php-ext-source-r2_buildinilist() { |
| 215 | # Work out the list of <ext>.ini files to edit/add to |
221 | # Work out the list of <ext>.ini files to edit/add to |
| 216 | if [[ -z "${PHPSAPILIST}" ]] ; then |
222 | if [[ -z "${PHPSAPILIST}" ]] ; then |
| … | |
… | |
| 222 | for x in ${PHPSAPILIST} ; do |
228 | for x in ${PHPSAPILIST} ; do |
| 223 | if [[ -f "/etc/php/${x}-${1}/php.ini" ]] ; then |
229 | if [[ -f "/etc/php/${x}-${1}/php.ini" ]] ; then |
| 224 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-${1}/ext/${PHP_EXT_NAME}.ini" |
230 | PHPINIFILELIST="${PHPINIFILELIST} etc/php/${x}-${1}/ext/${PHP_EXT_NAME}.ini" |
| 225 | fi |
231 | fi |
| 226 | done |
232 | done |
|
|
233 | PHPFULLINIFILELIST="${PHPFULLINIFILELIST} ${PHPINIFILELIST}" |
| 227 | } |
234 | } |
| 228 | |
235 | |
| 229 | # @FUNCTION: php-ext-source-r2_createinifiles |
236 | # @FUNCTION: php-ext-source-r2_createinifiles |
| 230 | # @DESCRIPTION: |
237 | # @DESCRIPTION: |
| 231 | # Builds ini files for every enabled slot and SAPI |
238 | # Builds ini files for every enabled slot and SAPI |
| … | |
… | |
| 236 | # Pull in the PHP settings |
243 | # Pull in the PHP settings |
| 237 | |
244 | |
| 238 | # Build the list of <ext>.ini files to edit/add to |
245 | # Build the list of <ext>.ini files to edit/add to |
| 239 | php-ext-source-r2_buildinilist ${slot} |
246 | php-ext-source-r2_buildinilist ${slot} |
| 240 | |
247 | |
|
|
248 | |
| 241 | # Add the needed lines to the <ext>.ini files |
249 | # Add the needed lines to the <ext>.ini files |
|
|
250 | local file |
| 242 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
251 | if [[ "${PHP_EXT_INI}" = "yes" ]] ; then |
|
|
252 | for file in ${PHPINIFILELIST}; do |
| 243 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" |
253 | php-ext-source-r2_addextension "${PHP_EXT_NAME}.so" "${file}" |
|
|
254 | done |
| 244 | fi |
255 | fi |
|
|
256 | |
| 245 | |
257 | |
| 246 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
258 | # Symlink the <ext>.ini files from ext/ to ext-active/ |
|
|
259 | local inifile |
| 247 | for inifile in ${PHPINIFILELIST} ; do |
260 | for inifile in ${PHPINIFILELIST} ; do |
|
|
261 | if [[ -n "${PHP_EXT_INIFILE}" ]]; then |
|
|
262 | cat "${FILESDIR}/${PHP_EXT_INIFILE}" > "${inifile}" |
|
|
263 | einfo "Added content of ${FILESDIR}/${PHP_EXT_INIFILE} to ${inifile}" |
|
|
264 | fi |
|
|
265 | |
|
|
266 | |
|
|
267 | |
|
|
268 | |
| 248 | inidir="${inifile/${PHP_EXT_NAME}.ini/}" |
269 | inidir="${inifile/${PHP_EXT_NAME}.ini/}" |
| 249 | inidir="${inidir/ext/ext-active}" |
270 | inidir="${inidir/ext/ext-active}" |
| 250 | dodir "/${inidir}" |
271 | dodir "/${inidir}" |
| 251 | dosym "/${inifile}" "/${inifile/ext/ext-active}" |
272 | dosym "/${inifile}" "/${inifile/ext/ext-active}" |
| 252 | done |
273 | done |
| 253 | |
274 | |
| 254 | # Add support for installing PHP files into a version dependant directory |
275 | # Add support for installing PHP files into a version dependant directory |
| 255 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
276 | PHP_EXT_SHARED_DIR="/usr/share/php/${PHP_EXT_NAME}" |
| 256 | done |
277 | done |
|
|
278 | |
| 257 | } |
279 | } |
| 258 | |
280 | |
| 259 | php-ext-source-r2_addextension() { |
281 | php-ext-source-r2_addextension() { |
| 260 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
282 | if [[ "${PHP_EXT_ZENDEXT}" = "yes" ]] ; then |
| 261 | # We need the full path for ZendEngine extensions |
283 | # We need the full path for ZendEngine extensions |
| … | |
… | |
| 287 | # We don't need the full path for normal extensions! |
309 | # We don't need the full path for normal extensions! |
| 288 | ext_type="extension" |
310 | ext_type="extension" |
| 289 | ext_file="${1}" |
311 | ext_file="${1}" |
| 290 | fi |
312 | fi |
| 291 | |
313 | |
| 292 | php-ext-source-r2_addtoinifiles "${ext_type}" "${ext_file}" "Extension added" |
314 | php-ext-source-r2_addtoinifile "${ext_type}" "${ext_file}" "${2}" "Extension added" |
| 293 | } |
315 | } |
| 294 | |
316 | |
| 295 | # $1 - Setting name |
317 | # $1 - Setting name |
| 296 | # $2 - Setting value |
318 | # $2 - Setting value |
| 297 | # $3 - File to add to |
319 | # $3 - File to add to |
| 298 | # $4 - Sanitized text to output |
320 | # $4 - Sanitized text to output |
| 299 | php-ext-source-r2_addtoinifile() { |
321 | php-ext-source-r2_addtoinifile() { |
|
|
322 | local inifile="${WORKDIR}/${3}" |
| 300 | if [[ ! -d $(dirname ${3}) ]] ; then |
323 | if [[ ! -d $(dirname ${inifile}) ]] ; then |
| 301 | mkdir -p $(dirname ${3}) |
324 | mkdir -p $(dirname ${inifile}) |
| 302 | fi |
325 | fi |
| 303 | |
326 | |
| 304 | # Are we adding the name of a section? |
327 | # Are we adding the name of a section? |
| 305 | if [[ ${1:0:1} == "[" ]] ; then |
328 | if [[ ${1:0:1} == "[" ]] ; then |
| 306 | echo "${1}" >> "${3}" |
329 | echo "${1}" >> "${inifile}" |
| 307 | my_added="${1}" |
330 | my_added="${1}" |
| 308 | else |
331 | else |
| 309 | echo "${1}=${2}" >> "${3}" |
332 | echo "${1}=${2}" >> "${inifile}" |
| 310 | my_added="${1}=${2}" |
333 | my_added="${1}=${2}" |
| 311 | fi |
334 | fi |
| 312 | |
335 | |
| 313 | if [[ -z "${4}" ]] ; then |
336 | if [[ -z "${4}" ]] ; then |
| 314 | einfo "Added '${my_added}' to /${3}" |
337 | einfo "Added '${my_added}' to /${3}" |
| 315 | else |
338 | else |
| 316 | einfo "${4} to /${3}" |
339 | einfo "${4} to /${3}" |
| 317 | fi |
340 | fi |
| 318 | |
341 | |
| 319 | insinto /$(dirname ${3}) |
342 | insinto /$(dirname ${3}) |
| 320 | doins "${3}" |
343 | doins "${inifile}" |
| 321 | } |
344 | } |
| 322 | |
345 | |
| 323 | # @FUNCTION: php-ext-source-r2_addtoinifiles |
346 | # @FUNCTION: php-ext-source-r2_addtoinifiles |
| 324 | # @USAGE: <setting name> <setting value> [message to output]; or just [section name] |
347 | # @USAGE: <setting name> <setting value> [message to output]; or just [section name] |
| 325 | # @DESCRIPTION: |
348 | # @DESCRIPTION: |
| … | |
… | |
| 339 | # php-ext-source-r2_addtoinifiles "debugger.enabled" "on" |
362 | # php-ext-source-r2_addtoinifiles "debugger.enabled" "on" |
| 340 | # php-ext-source-r2_addtoinifiles "debugger.profiler_enabled" "on" |
363 | # php-ext-source-r2_addtoinifiles "debugger.profiler_enabled" "on" |
| 341 | # @CODE |
364 | # @CODE |
| 342 | php-ext-source-r2_addtoinifiles() { |
365 | php-ext-source-r2_addtoinifiles() { |
| 343 | local x |
366 | local x |
| 344 | for x in ${PHPINIFILELIST} ; do |
367 | for x in ${PHPFULLINIFILELIST} ; do |
| 345 | php-ext-source-r2_addtoinifile "${1}" "${2}" "${x}" "${3}" |
368 | php-ext-source-r2_addtoinifile "${1}" "${2}" "${x}" "${3}" |
| 346 | done |
369 | done |
| 347 | } |
370 | } |