Skip to content

Commit

Permalink
dev-php/pecl-http: new revisions to fix extension load order.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
orlitzky committed Mar 19, 2017
1 parent 544a563 commit e4fc5bf
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 0 deletions.
69 changes: 69 additions & 0 deletions dev-php/pecl-http/pecl-http-2.6.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
69 changes: 69 additions & 0 deletions dev-php/pecl-http/pecl-http-3.1.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit e4fc5bf

Please sign in to comment.