From 4f2dc4a5f1f3209350453daa5acf6d08f9b95e19 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 5 Jan 2017 13:08:48 +0100 Subject: php-lz4: test build for pr18 --- php-ext-lz4-pr18.patch | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ php-lz4.spec | 13 ++++-- 2 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 php-ext-lz4-pr18.patch 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 +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 - 0.3.1-2 +- test build for https://github.com/kjdev/php-ext-lz4/pull/18 + * Thu Jan 5 2017 Remi Collet - 0.3.1-1 - update to 0.3.1 -- cgit