summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--php-ext-lz4-pr18.patch122
-rw-r--r--php-lz4.spec13
2 files changed, 130 insertions, 5 deletions
diff --git a/php-ext-lz4-pr18.patch b/php-ext-lz4-pr18.patch
new file mode 100644
index 0000000..c2f6058
--- /dev/null
+++ b/php-ext-lz4-pr18.patch
@@ -0,0 +1,122 @@
+From 408423281fa767b98bb66269fe098ad166c6fa16 Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Thu, 5 Jan 2017 10:46:14 +0100
+Subject: [PATCH] improve use of system liblz4
+
+---
+ lz4.c | 50 ++++++++++++++++++++++++++++++++++++++++++--------
+ tests/011.phpt | 4 ++--
+ 2 files changed, 44 insertions(+), 10 deletions(-)
+
+diff --git a/lz4.c b/lz4.c
+index 27e3f66..175516e 100644
+--- a/lz4.c
++++ b/lz4.c
+@@ -35,6 +35,19 @@
+ #include "lz4.h"
+ #include "lz4hc.h"
+
++#if defined(LZ4HC_CLEVEL_MAX)
++/* version >= 1.7.5 */
++#define PHP_LZ4_CLEVEL_MAX LZ4HC_CLEVEL_MAX
++
++#elif defined (LZ4HC_MAX_CLEVEL)
++/* version >= 1.7.3 */
++#define PHP_LZ4_CLEVEL_MAX LZ4HC_MAX_CLEVEL
++
++#else
++/* older versions */
++#define PHP_LZ4_CLEVEL_MAX 16
++#endif
++
+ static ZEND_FUNCTION(lz4_compress);
+ static ZEND_FUNCTION(lz4_uncompress);
+
+@@ -56,19 +69,40 @@ static zend_function_entry lz4_functions[] = {
+ ZEND_FE_END
+ };
+
++
++static PHP_MINIT_FUNCTION(lz4)
++{
++ REGISTER_LONG_CONSTANT("LZ4_CLEVEL_MAX", PHP_LZ4_CLEVEL_MAX, CONST_CS | CONST_PERSISTENT);
++
++ return SUCCESS;
++}
++
+ ZEND_MINFO_FUNCTION(lz4)
+ {
+- char buffer[128];
+ php_info_print_table_start();
+ php_info_print_table_row(2, "LZ4 support", "enabled");
+ php_info_print_table_row(2, "Extension Version", LZ4_EXT_VERSION);
+-#ifdef HAVE_LIBLZ4
+- snprintf(buffer, sizeof(buffer), "%s", "system library");
+-#else
++#if !defined(HAVE_LIBLZ4)
++ /* Bundled library */
++ php_info_print_table_row(2, "LZ4 Version", LZ4_versionString());
++#elif defined(LZ4_VERSION_MAJOR)
++ /* Recent system library */
++ {
++ char buffer[128];
++
+ snprintf(buffer, sizeof(buffer), "%d.%d.%d",
+ LZ4_VERSION_MAJOR, LZ4_VERSION_MINOR, LZ4_VERSION_RELEASE);
++ php_info_print_table_row(2, "LZ4 headers Version", buffer);
++
++ /* LZ4_versionString is not usable, see https://github.com/lz4/lz4/issues/301 */
++ snprintf(buffer, sizeof(buffer), "%d.%d.%d",
++ LZ4_versionNumber()/10000, (LZ4_versionNumber()/100)%100, LZ4_versionNumber()%100);
++ php_info_print_table_row(2, "LZ4 library Version", buffer);
++ }
++#else
++ /* Old system library */
++ php_info_print_table_row(2, "LZ4 Version", "system library");
+ #endif
+- php_info_print_table_row(2, "LZ4 Version", buffer);
+ php_info_print_table_end();
+ }
+
+@@ -78,7 +112,7 @@ zend_module_entry lz4_module_entry = {
+ #endif
+ "lz4",
+ lz4_functions,
+- NULL,
++ PHP_MINIT(lz4),
+ NULL,
+ NULL,
+ NULL,
+@@ -99,7 +133,7 @@ static ZEND_FUNCTION(lz4_compress)
+ char *output;
+ int output_len, data_len, dst_len;
+ long level = 0;
+- long maxLevel = (long)LZ4HC_CLEVEL_MAX;
++ long maxLevel = (long)PHP_LZ4_CLEVEL_MAX;
+ char *extra = NULL;
+ #if ZEND_MODULE_API_NO >= 20141001
+ size_t extra_len = -1;
+@@ -147,7 +181,7 @@ static ZEND_FUNCTION(lz4_compress)
+ } else {
+ if (level > maxLevel || level < 0) {
+ zend_error(E_WARNING, "lz4_compress: compression level (%ld)"
+- " must be within 1..%d", level, maxLevel);
++ " must be within 1..%ld", level, maxLevel);
+ efree(output);
+ RETURN_FALSE;
+ }
+diff --git a/tests/011.phpt b/tests/011.phpt
+index 8e5fe3c..6b521ae 100644
+--- a/tests/011.phpt
++++ b/tests/011.phpt
+@@ -45,8 +45,8 @@ check_compress($data, -1);
+ 8 -- 2686 -- true
+ 9 -- 2686 -- true
+ 10 -- 2686 -- true
+-11 -- 2683 -- true
+-12 -- 2683 -- true
++11 -- 26%d -- true
++12 -- 26%d -- true
+ *** Invalid Compression Level ***
+ 100 -- 0 -- false
+ -1 -- 0 -- false
diff --git a/php-lz4.spec b/php-lz4.spec
index c4d6502..f8a5a0c 100644
--- a/php-lz4.spec
+++ b/php-lz4.spec
@@ -26,13 +26,16 @@ Version: 0.3.1
%if 0%{?gh_date:1}
Release: 0.2.%{gh_date}git%{gh_short}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
%else
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
%endif
License: MIT
Group: Development/Languages
URL: https://github.com/%{gh_owner}/%{gh_project}
Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{version}-%{gh_short}.tar.gz
+# https://github.com/kjdev/php-ext-lz4/pull/18
+Patch0: %{gh_project}-pr18.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: %{?scl_prefix}php-devel
BuildRequires: lz4-devel
@@ -83,10 +86,9 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO
mv %{gh_project}-%{gh_commit} NTS
cd NTS
+%patch0 -p1 -b .pr18
# Use the system library
rm -r lz4
-# Only in LZ4 1.7.3
-sed -e 's/LZ4HC_CLEVEL_MAX/12/' -i lz4.c
# Sanity check, really often broken
extver=$(sed -n '/#define LZ4_EXT_VERSION/{s/.* "//;s/".*$//;p}' php_lz4.h)
@@ -148,8 +150,6 @@ install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
: Ignore test relying on some specific LZ4 version
%if 0%{?fedora} < 24 && 0%{?rhel} < 7
rm ?TS/tests/{001,003,008,011}.phpt
-%else
-rm ?TS/tests/011.phpt
%endif
cd NTS
@@ -202,6 +202,9 @@ rm -rf %{buildroot}
%changelog
+* Thu Jan 5 2017 Remi Collet <remi@fedoraproject.org> - 0.3.1-2
+- test build for https://github.com/kjdev/php-ext-lz4/pull/18
+
* Thu Jan 5 2017 Remi Collet <remi@fedoraproject.org> - 0.3.1-1
- update to 0.3.1