commit:     e4fc5bf05ab9573dec1ed05601a31cca0e19c8f5
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 19 17:21:12 2017 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Sun Mar 19 17:32:16 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e4fc5bf0

dev-php/pecl-http: new revisions to fix extension load order.

The http extension has dependencies on two other extensions, and needs
to be loaded after them. Our eclass currently can't handle that -- we
throw files into /etc/php/.../ext-active, and they get loaded in glob
order. For an ugly workaround, I've renamed the symlinks that get
installed in ext-active to "zzhttp.ini", but have left them pointing
to a file named "http.ini" in the "ext" directory.

That fixes the problem for pecl-http, but it would be nice to have a
long-term solution for the problem. I've made a note to that effect on
bug 586446, where we are tracking future improvements to the eclass.

Gentoo-Bug: 586446
Gentoo-Bug: 612054

Package-Manager: Portage-2.3.3, Repoman-2.3.1

 dev-php/pecl-http/pecl-http-2.6.0-r1.ebuild | 69 +++++++++++++++++++++++++++++
 dev-php/pecl-http/pecl-http-3.1.0-r1.ebuild | 69 +++++++++++++++++++++++++++++
 2 files changed, 138 insertions(+)

diff --git a/dev-php/pecl-http/pecl-http-2.6.0-r1.ebuild 
b/dev-php/pecl-http/pecl-http-2.6.0-r1.ebuild
new file mode 100644
index 00000000000..17aa145af9e
--- /dev/null
+++ b/dev-php/pecl-http/pecl-http-2.6.0-r1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PHP_EXT_NAME="http"
+PHP_EXT_PECL_PKG="pecl_http"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+
+USE_PHP="php5-6 php7-0 php7-1"
+
+inherit php-ext-pecl-r3
+
+USE_PHP="php5-6"
+
+KEYWORDS="~amd64 ~x86"
+
+DESCRIPTION="Extended HTTP Support for PHP"
+LICENSE="BSD-2 MIT"
+SLOT="2"
+IUSE="ssl curl_ssl_gnutls curl_ssl_libressl curl_ssl_nss +curl_ssl_openssl"
+
+DEPEND="php_targets_php5-6? (
+       dev-libs/libevent
+       dev-php/pecl-propro:0[php_targets_php5-6]
+       dev-php/pecl-raphf:0[php_targets_php5-6]
+       net-dns/libidn
+       sys-libs/zlib
+       ssl? ( 
net-misc/curl[ssl,curl_ssl_gnutls=,curl_ssl_libressl=,curl_ssl_nss=,curl_ssl_openssl=]
 )
+       !ssl? ( net-misc/curl[-ssl] )
+       dev-lang/php:5.6[hash,session,iconv] )"
+RDEPEND="${DEPEND}"
+PDEPEND="
+       php_targets_php7-0? ( dev-php/pecl-http:7[php_targets_php7-0] )
+       php_targets_php7-1? ( dev-php/pecl-http:7[php_targets_php7-1] )"
+
+PHP_EXT_ECONF_ARGS=( --with-http --without-http-shared-deps )
+
+src_prepare() {
+       if use php_targets_php5-6 ; then
+               php-ext-source-r3_src_prepare
+       else
+               default_src_prepare
+       fi
+}
+
+src_install() {
+       if use php_targets_php5-6 ; then
+               php-ext-pecl-r3_src_install
+
+               # Ensure that the http extension is loaded after its
+               # dependencies raphf and propro (bug 612054). Some day
+               # this should be possible through the eclass (bug 586446).
+               local slot, file, oldname, newname
+               for slot in $(php_get_slots); do
+                       php_init_slot_env "${slot}"
+                       for file in $(php_slot_ini_files "${slot}") ; do
+                               # Prepend "zz" to the ini symlink name. This is 
sadly
+                               # coupled to the naming convention in the 
eclass.
+                               oldname="${ED}/${file/ext/ext-active}"
+                               
newname="${oldname/${PHP_EXT_NAME}.ini/zz${PHP_EXT_NAME}.ini}"
+                               mv "${oldname}" "${newname}" \
+                                       || die "failed to rename ${oldname} to 
${newname}"
+                               einfo "renamed ${oldname} to ${newname}"
+                       done
+               done
+       fi
+}

diff --git a/dev-php/pecl-http/pecl-http-3.1.0-r1.ebuild 
b/dev-php/pecl-http/pecl-http-3.1.0-r1.ebuild
new file mode 100644
index 00000000000..39ea6b2346b
--- /dev/null
+++ b/dev-php/pecl-http/pecl-http-3.1.0-r1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PHP_EXT_NAME="http"
+PHP_EXT_PECL_PKG="pecl_http"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+
+USE_PHP="php5-6 php7-0 php7-1"
+
+inherit php-ext-pecl-r3
+
+USE_PHP="php7-0 php7-1"
+
+KEYWORDS="~amd64 ~x86"
+
+DESCRIPTION="Extended HTTP Support for PHP"
+LICENSE="BSD-2 MIT"
+SLOT="7"
+IUSE="ssl curl_ssl_gnutls curl_ssl_libressl curl_ssl_nss +curl_ssl_openssl"
+
+DEPEND="dev-libs/libevent
+       
dev-php/pecl-propro:7[php_targets_php5-6?,php_targets_php7-0?,php_targets_php7-1?]
+       
dev-php/pecl-raphf:7[php_targets_php5-6?,php_targets_php7-0?,php_targets_php7-1?]
+       net-dns/libidn
+       sys-libs/zlib
+       ssl? ( 
net-misc/curl[ssl,curl_ssl_gnutls=,curl_ssl_libressl=,curl_ssl_nss=,curl_ssl_openssl=]
 )
+       !ssl? ( net-misc/curl[-ssl] )
+       php_targets_php7-0? ( dev-lang/php:7.0[hash,session,iconv] )
+       php_targets_php7-1? ( dev-lang/php:7.1[hash,session,iconv] )"
+RDEPEND="${DEPEND}
+       php_targets_php5-6? ( dev-php/pecl-http:2[php_targets_php5-6] )"
+
+PHP_EXT_ECONF_ARGS=( --with-http --without-http-shared-deps )
+
+PATCHES=( "${FILESDIR}/pecl-http-gnutls.patch" )
+
+src_prepare() {
+       if use php_targets_php7-0 || use php_targets_php7-1 ; then
+               php-ext-source-r3_src_prepare
+       else
+               default_src_prepare
+       fi
+}
+
+src_install() {
+       if use php_targets_php7-0 || use php_targets_php7-1 ; then
+               php-ext-pecl-r3_src_install
+
+               # Ensure that the http extension is loaded after its
+               # dependencies raphf and propro (bug 612054). Some day
+               # this should be possible through the eclass (bug 586446).
+               local slot, file, oldname, newname
+               for slot in $(php_get_slots); do
+                       php_init_slot_env "${slot}"
+                       for file in $(php_slot_ini_files "${slot}") ; do
+                               # Prepend "zz" to the ini symlink name. This is 
sadly
+                               # coupled to the naming convention in the 
eclass.
+                               oldname="${ED}/${file/ext/ext-active}"
+                               
newname="${oldname/${PHP_EXT_NAME}.ini/zz${PHP_EXT_NAME}.ini}"
+                               mv "${oldname}" "${newname}" \
+                                       || die "failed to rename ${oldname} to 
${newname}"
+                               einfo "renamed ${oldname} to ${newname}"
+                       done
+               done
+       fi
+}

Reply via email to