diff options
| -rw-r--r-- | php-ext-lz4-pr18.patch | 122 | ||||
| -rw-r--r-- | php-lz4.spec | 13 | 
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  | 
