From f09669fd0bbc0e83cfc194cbc726a1fe7967622e Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 30 Mar 2015 19:05:13 +0200 Subject: php-horde-horde-lz4: add fix for PHP 7 --- horde_lz4-php7.patch | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ php-horde-horde-lz4.spec | 38 +++++++++++++++++++++++++------- 2 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 horde_lz4-php7.patch diff --git a/horde_lz4-php7.patch b/horde_lz4-php7.patch new file mode 100644 index 0000000..2fc4d5f --- /dev/null +++ b/horde_lz4-php7.patch @@ -0,0 +1,57 @@ +From d2f0184e58d6d05569624bc52d2be76c65a9d297 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Mon, 30 Mar 2015 19:00:17 +0200 +Subject: [PATCH] Fix PHP 7 compatibility + +--- + framework/lz4/horde_lz4.c | 6 +++--- + framework/lz4/horde_lz4.h | 7 +++++++ + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/framework/lz4/horde_lz4.c b/framework/lz4/horde_lz4.c +index 28ec47f..23625be 100644 +--- a/framework/lz4/horde_lz4.c ++++ b/framework/lz4/horde_lz4.c +@@ -87,7 +87,7 @@ PHP_FUNCTION(horde_lz4_compress) + RETURN_FALSE; + } + +- data_len = Z_STRLEN_P(data); ++ data_len = (int)Z_STRLEN_P(data); + + output = (char *)emalloc(LZ4_compressBound(data_len) + header_offset); + if (!output) { +@@ -107,7 +107,7 @@ PHP_FUNCTION(horde_lz4_compress) + if (output_len <= 0) { + RETVAL_FALSE; + } else { +- RETVAL_STRINGL(output, output_len + header_offset, 1); ++ HORDE_LZ4_RETSTRL(output, output_len + header_offset); + } + + efree(output); +@@ -155,7 +155,7 @@ PHP_FUNCTION(horde_lz4_uncompress) + if (output_len <= 0) { + RETVAL_FALSE; + } else { +- RETVAL_STRINGL(output, data_len, 1); ++ HORDE_LZ4_RETSTRL(output, data_len); + } + + efree(output); +diff --git a/framework/lz4/horde_lz4.h b/framework/lz4/horde_lz4.h +index eb4e7a5..8ff3f7c 100644 +--- a/framework/lz4/horde_lz4.h ++++ b/framework/lz4/horde_lz4.h +@@ -23,4 +23,11 @@ PHP_MINFO_FUNCTION(horde_lz4); + PHP_FUNCTION(horde_lz4_compress); + PHP_FUNCTION(horde_lz4_uncompress); + ++#if PHP_MAJOR_VERSION < 7 ++#define HORDE_LZ4_RETSTRL(a,l) RETURN_STRINGL(a,l,1) ++#else ++typedef size_t strsize; ++#define HORDE_LZ4_RETSTRL(a,l) RETURN_STRINGL(a,l) ++#endif ++ + #endif /* PHP_HORDE_LZ4_H */ diff --git a/php-horde-horde-lz4.spec b/php-horde-horde-lz4.spec index 7f060d6..c1f7a94 100644 --- a/php-horde-horde-lz4.spec +++ b/php-horde-horde-lz4.spec @@ -29,26 +29,28 @@ Summary: Horde LZ4 Compression Extension Name: %{?scl_prefix}php-horde-horde-lz4 Version: 1.0.7 -Release: 1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}.1 +Release: 2%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} License: MIT Group: Development/Languages URL: http://www.horde.org Source0: http://%{pecl_channel}/get/%{pecl_name}-%{version}.tgz +# https://github.com/horde/horde/pull/132 +Patch0: %{pecl_name}-php7.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: %{?scl_prefix}php-devel BuildRequires: %{?scl_prefix}php-pear -BuildRequires: %{?scl_prefix}php-channel(%{pecl_channel}) BuildRequires: lz4-devel %if %{with_tests} BuildRequires: %{_bindir}/phpunit %endif -Requires(post): %{__pecl} -Requires(postun): %{__pecl} Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} Requires: %{?scl_prefix}php(api) = %{php_core_api} +%if ! 0%{?scl:1} Requires: %{?scl_prefix}php-channel(%{pecl_channel}) +%endif %{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}} Provides: %{?scl_prefix}php-%{pecl_name} = %{version} @@ -88,12 +90,20 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO %prep %setup -q -c + +# Don't install/register tests +# Don't install bundled libz4 +sed -e 's/role="test"/role="src"/' \ + -e '/name="lib/d' \ + -i package.xml + mv %{pecl_name}-%{version} NTS cd NTS # Use system library rm -r lib -sed -e '/name="lib/d' -i ../package.xml + +%patch0 -p3 -b .php7 # Sanity check, really often broken extver=$(sed -n '/#define HORDE_LZ4_EXT_VERSION/{s/.* "//;s/".*$//;p}' horde_lz4.h) @@ -156,12 +166,20 @@ do install -Dpm 644 NTS/$i %{buildroot}%{pear_docdir}/%{pecl_name}/$i done -%post -%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : +# when pear installed alone, after us +%triggerin -- %{?scl_prefix}php-pear +if [ -x %{__pecl} ] ; then + %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : +fi +# posttrans as pear can be installed after us +%posttrans +if [ -x %{__pecl} ] ; then + %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : +fi %postun -if [ $1 -eq 0 ] ; then +if [ $1 -eq 0 -a -x %{__pecl} ] ; then %{pecl_uninstall} %{pecl_channel}/%{pecl_name} >/dev/null || : fi @@ -211,6 +229,10 @@ rm -rf %{buildroot} %changelog +* Mon Mar 30 2015 Remi Collet 1.0.7-2 +- add fix for PHP 7 +- drop runtime dependency on pear, new scriptlets + * Wed Dec 24 2014 Remi Collet 1.0.7-1.1 - Fedora 21 SCL mass rebuild -- cgit