commit: 2c8e98a82221e9ef9f6661949e986218176bdc02 Author: Brian Evans <grknight <AT> gentoo <DOT> org> AuthorDate: Tue Mar 13 00:19:36 2018 +0000 Commit: Brian Evans <grknight <AT> gentoo <DOT> org> CommitDate: Thu Mar 22 01:28:09 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c8e98a8
eclass: php-ext-sources-r3 - Apply user patches to all targets The original eclass copied sources as part of the exported src_unpack and then attempted to apply default_src_prepare to every PHP_TARGET. As the bug shows, this fails on eapply_user because that function will only ever apply once. Instead, eliminate the php-ext-sources-r3_src_unpack. Move the copy function to src_prepare phase after patches were applied, optionally disabled by PHP_EXT_SKIP_PATCHES=yes. This eclass will only apply patches to PHP_EXT_S. Fixes: https://bugs.gentoo.org/650324 eclass/php-ext-source-r3.eclass | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/eclass/php-ext-source-r3.eclass b/eclass/php-ext-source-r3.eclass index dfcec487685..22f07f8827b 100644 --- a/eclass/php-ext-source-r3.eclass +++ b/eclass/php-ext-source-r3.eclass @@ -11,7 +11,7 @@ inherit autotools -EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install src_test +EXPORT_FUNCTIONS src_prepare src_configure src_compile src_install src_test case ${EAPI} in 6) ;; @@ -141,23 +141,16 @@ DEPEND="${DEPEND} # @ECLASS-VARIABLE: PHP_EXT_SKIP_PHPIZE # @DEFAULT_UNSET # @DESCRIPTION: -# By default, we run "phpize" in php-ext-source-r3_src_unpack(). Set +# By default, we run "phpize" in php-ext-source-r3_src_prepare(). Set # PHP_EXT_SKIP_PHPIZE="yes" in your ebuild if you do not want to run # phpize (and the autoreconf that becomes necessary afterwards). -# @FUNCTION: php-ext-source-r3_src_unpack +# @ECLASS-VARIABLE: PHP_EXT_SKIP_PATCHES +# @DEFAULT_UNSET # @DESCRIPTION: -# Runs the default src_unpack and then makes a copy for each PHP slot. -php-ext-source-r3_src_unpack() { - default - - local slot orig_s="${PHP_EXT_S}" - for slot in $(php_get_slots); do - cp --recursive --preserve "${orig_s}" "${WORKDIR}/${slot}" || \ - die "failed to copy sources from ${orig_s} to ${WORKDIR}/${slot}" - done -} - +# By default, we run default_src_prepare to PHP_EXT_S. +# Set PHP_EXT_SKIP_PATCHES="yes" in your ebuild if you +# want to apply patches yourself. # @FUNCTION: php-ext-source-r3_src_prepare # @DESCRIPTION: @@ -165,9 +158,16 @@ php-ext-source-r3_src_unpack() { # src_prepare() for PATCHES/eapply_user support, and then call # php-ext-source-r3_phpize. php-ext-source-r3_src_prepare() { + local slot orig_s="${PHP_EXT_S}" + if [[ "${PHP_EXT_SKIP_PATCHES}" != 'yes' ]] ; then + pushd "${orig_s}" > /dev/null || die + default + popd > /dev/null || die + fi for slot in $(php_get_slots); do + cp --recursive --preserve "${orig_s}" "${WORKDIR}/${slot}" || \ + die "failed to copy sources from ${orig_s} to ${WORKDIR}/${slot}" php_init_slot_env "${slot}" - default php-ext-source-r3_phpize done }