diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | msgpack-php8.patch | 628 | ||||
| -rw-r--r-- | php-pecl-msgpack.spec | 36 | 
3 files changed, 642 insertions, 24 deletions
@@ -1,5 +1,7 @@ +clog  package-*.xml  *.tgz +*.tar.bz2  *.tar.gz  *.tar.xz  *.tar.xz.asc diff --git a/msgpack-php8.patch b/msgpack-php8.patch new file mode 100644 index 0000000..864692a --- /dev/null +++ b/msgpack-php8.patch @@ -0,0 +1,628 @@ +From e3ef2010a9ffb8bcc46a3d5a5a93ad1b048e3f96 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Wed, 15 Apr 2020 16:58:27 +0200 +Subject: [PATCH] fix build with php 8 + +--- + msgpack_convert.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/msgpack_convert.c b/msgpack_convert.c +index c89aff5..93e55b2 100644 +--- a/msgpack_convert.c ++++ b/msgpack_convert.c +@@ -64,7 +64,15 @@ static inline int msgpack_convert_long_to_properties(HashTable *ht, zval *object +         *properties = NULL; +     } +     ZVAL_LONG(&key_zv, key_index); ++#if PHP_VERSION_ID < 80000 +     zend_std_write_property(object, &key_zv, val, NULL); ++#else ++    { ++        zend_string *key = zval_get_string(&key_zv); ++        zend_std_write_property(Z_OBJ_P(object), key, val, NULL); ++        zend_string_release(key); ++    } ++#endif +     return SUCCESS; + } + /* }}} */ +@@ -87,7 +95,11 @@ static inline int msgpack_convert_string_to_properties(zval *object, zend_string +         zend_update_property_ex(ce, object, key, val); +         return_code = SUCCESS; +     } else { ++#if PHP_VERSION_ID < 80000 +         zend_std_write_property(object, &pub_name, val, NULL); ++#else ++        zend_std_write_property(Z_OBJ_P(object), key, val, NULL); ++#endif +         return_code = FAILURE; +     } +     zend_hash_add(var, Z_STR(pub_name), val); +@@ -358,7 +370,11 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */ +                 } ZEND_HASH_FOREACH_END(); +  +                 /* index */ ++#if PHP_VERSION_ID < 80000 +                 properties = Z_OBJ_HT_P(return_value)->get_properties(return_value); ++#else ++                properties = Z_OBJ_HT_P(return_value)->get_properties(Z_OBJ_P(return_value)); ++#endif +                 if (HASH_OF(tpl)) { +                     properties = HASH_OF(tpl); +                 } +@@ -433,7 +449,11 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */ +             HashTable *properties = NULL; +             HashPosition prop_pos; +  ++#if PHP_VERSION_ID < 80000 +             properties = Z_OBJ_HT_P(return_value)->get_properties(return_value); ++#else ++            properties = Z_OBJ_HT_P(return_value)->get_properties(Z_OBJ_P(return_value)); ++#endif +             zend_hash_internal_pointer_reset_ex(properties, &prop_pos); +  +             if (msgpack_convert_long_to_properties(HASH_OF(return_value), return_value, &properties, &prop_pos, 0, value, NULL) != SUCCESS) { +From f933cf5df92dbb2da8665905f1f44317f62a4765 Mon Sep 17 00:00:00 2001 +From: Michael Wallner <mike@php.net> +Date: Fri, 31 Jul 2020 06:51:51 +0200 +Subject: [PATCH] remove interned strings optimization causing exhaustive + memory usage + +fixes #153 and possibly fixes #147 +--- + msgpack_unpack.c | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +diff --git a/msgpack_unpack.c b/msgpack_unpack.c +index c743078..8dc9480 100644 +--- a/msgpack_unpack.c ++++ b/msgpack_unpack.c +@@ -12,9 +12,6 @@ + #if PHP_VERSION_ID < 70400 + # define zval_try_get_string zval_get_string + #endif +-#if PHP_VERSION_ID < 70200 +-# define zend_string_init_interned zend_string_init +-#endif +  + typedef struct { +     zend_long used_slots; +@@ -523,12 +520,7 @@ int msgpack_unserialize_str(msgpack_unserialize_data *unpack, const char* base, +         ZVAL_EMPTY_STRING(*obj); +     } else { +         /* TODO: check malformed input? */ +-        if (len < 1<<8) { +-            zend_string *zs = zend_string_init_interned(data, len, 0); +-            ZVAL_STR(*obj, zs); +-        } else { +-            ZVAL_STRINGL(*obj, data, len); +-        } ++        ZVAL_STRINGL(*obj, data, len); +     } +  +     return 0; +From 780b0b457693180f5f8a82ef1aef02f23f322e03 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Thu, 3 Sep 2020 09:37:26 +0200 +Subject: [PATCH] more fix for PHP 8 + +--- + msgpack_class.c   |  2 +- + msgpack_convert.c | 17 +++++++++-------- + msgpack_pack.c    |  4 ++-- + msgpack_unpack.c  |  8 ++++++-- + php_msgpack.h     |  6 ++++++ + 5 files changed, 24 insertions(+), 13 deletions(-) + +diff --git a/msgpack_class.c b/msgpack_class.c +index 69f3803..1b0ffe7 100644 +--- a/msgpack_class.c ++++ b/msgpack_class.c +@@ -274,7 +274,7 @@ static ZEND_METHOD(msgpack, unpacker) /* {{{ */ { +     ZVAL_STRING(&func_name, "__construct"); +  +     object_init_ex(return_value, msgpack_unpacker_ce); +-    call_user_function_ex(CG(function_table), return_value, &func_name, &construct_return, 1, args, 0, NULL); ++    call_user_function(CG(function_table), return_value, &func_name, &construct_return, 1, args); +  +     zval_ptr_dtor(&func_name); + } +diff --git a/msgpack_convert.c b/msgpack_convert.c +index 93e55b2..8f9e1d0 100644 +--- a/msgpack_convert.c ++++ b/msgpack_convert.c +@@ -36,7 +36,7 @@ static inline int msgpack_convert_long_to_properties(HashTable *ht, zval *object +  +                                 if (msgpack_convert_array(&tplval, data, dataval) == SUCCESS) { +                                     zend_hash_move_forward_ex(props, prop_pos); +-                                    zend_update_property(Z_OBJCE_P(object), object, prop_name, prop_len, &tplval); ++                                    zend_update_property(Z_OBJCE_P(object), OBJ_FOR_PROP(object), prop_name, prop_len, &tplval); +                                     return SUCCESS; +                                 } +                                 return FAILURE; +@@ -45,14 +45,14 @@ static inline int msgpack_convert_long_to_properties(HashTable *ht, zval *object +                             { +                                 if (msgpack_convert_object(&tplval, data, val) == SUCCESS) { +                                     zend_hash_move_forward_ex(props, prop_pos); +-                                    zend_update_property(Z_OBJCE_P(object), object, prop_name, prop_len, &tplval); ++                                    zend_update_property(Z_OBJCE_P(object), OBJ_FOR_PROP(object), prop_name, prop_len, &tplval); +                                     return SUCCESS; +                                 } +                                 return FAILURE; +                             } +                             default: +                                 zend_hash_move_forward_ex(props, prop_pos); +-                                zend_update_property(Z_OBJCE_P(object), object, prop_name, prop_len, val); ++                                zend_update_property(Z_OBJCE_P(object), OBJ_FOR_PROP(object), prop_name, prop_len, val); +                             return SUCCESS; +                         } +                     } +@@ -89,10 +89,10 @@ static inline int msgpack_convert_string_to_properties(zval *object, zend_string +     prot_name = zend_mangle_property_name("*", 1, ZSTR_VAL(key), ZSTR_LEN(key), 1); +  +     if (zend_hash_find(propers, priv_name) != NULL) { +-        zend_update_property_ex(ce, object, key, val); ++        zend_update_property_ex(ce, OBJ_FOR_PROP(object), key, val); +         return_code = SUCCESS; +     } else if (zend_hash_find(propers, prot_name) != NULL) { +-        zend_update_property_ex(ce, object, key, val); ++        zend_update_property_ex(ce, OBJ_FOR_PROP(object), key, val); +         return_code = SUCCESS; +     } else { + #if PHP_VERSION_ID < 80000 +@@ -310,8 +310,9 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */ +         fci.retval = &retval; +         fci.param_count = 0; +         fci.params = ¶ms; ++#if PHP_VERSION_ID < 80000 +         fci.no_separation = 1; +- ++#endif + #if PHP_VERSION_ID < 70300 +         fcc.initialized = 1; + #endif +@@ -434,10 +435,10 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */ +                             return FAILURE; +                         } +  +-                        zend_update_property_ex(ce, return_value, str_key, &nv); ++                        zend_update_property_ex(ce, OBJ_FOR_PROP(return_value), str_key, &nv); +                         zval_ptr_dtor(&nv); +                     } else  { +-                        zend_update_property(ce, return_value, prop_name, prop_len, aryval); ++                        zend_update_property(ce, OBJ_FOR_PROP(return_value), prop_name, prop_len, aryval); +                     } +                     num_key++; +                 } ZEND_HASH_FOREACH_END(); +diff --git a/msgpack_pack.c b/msgpack_pack.c +index c5da6d9..f9d1ad0 100644 +--- a/msgpack_pack.c ++++ b/msgpack_pack.c +@@ -223,7 +223,7 @@ static inline void msgpack_serialize_array(smart_str *buf, zval *val, HashTable +     if (object) { + #if PHP_VERSION_ID >= 70400 +         if (Z_OBJ_HANDLER_P(val, get_properties_for)) { +-            ht = Z_OBJ_HANDLER_P(val, get_properties_for)(val, ZEND_PROP_PURPOSE_ARRAY_CAST); ++            ht = Z_OBJ_HANDLER_P(val, get_properties_for)(OBJ_FOR_PROP(val), ZEND_PROP_PURPOSE_ARRAY_CAST); +             free_ht = 1; +         } else { +             ht = Z_OBJPROP_P(val); +@@ -409,7 +409,7 @@ static inline void msgpack_serialize_object(smart_str *buf, zval *val, HashTable +  +     if (ce && ce != PHP_IC_ENTRY && +             zend_hash_exists(&ce->function_table, sleep_zstring)) { +-        if ((res = call_user_function_ex(CG(function_table), val_noref, &fname, &retval, 0, 0, 1, NULL)) == SUCCESS) { ++        if ((res = call_user_function(CG(function_table), val_noref, &fname, &retval, 0, 0)) == SUCCESS) { +  +             if (EG(exception)) { +                 zval_ptr_dtor(&retval); +diff --git a/msgpack_unpack.c b/msgpack_unpack.c +index 9ce1961..a602c52 100644 +--- a/msgpack_unpack.c ++++ b/msgpack_unpack.c +@@ -282,7 +282,7 @@ static zend_class_entry* msgpack_unserialize_class(zval **container, zend_string +         ZVAL_STRING(&user_func, PG(unserialize_callback_func)); +         ZVAL_STR(&args[0], class_name); +  +-        func_call_status = call_user_function_ex(CG(function_table), NULL, &user_func, &retval, 1, args, 0, NULL); ++        func_call_status = call_user_function(CG(function_table), NULL, &user_func, &retval, 1, args); +         zval_ptr_dtor(&user_func); +         if (func_call_status != SUCCESS) { +             MSGPACK_WARNING("[msgpack] (%s) defined (%s) but not found", +@@ -329,7 +329,11 @@ static zend_class_entry* msgpack_unserialize_class(zval **container, zend_string +  +     /* store incomplete class name */ +     if (incomplete_class) { ++#if PHP_VERSION_ID < 80000 +         php_store_class_name(container_val, ZSTR_VAL(class_name), ZSTR_LEN(class_name)); ++#else ++        php_store_class_name(container_val, class_name); ++#endif +     } +  +     return ce; +@@ -836,7 +840,7 @@ int msgpack_unserialize_map_item(msgpack_unserialize_data *unpack, zval **contai +                 zend_hash_str_exists(&Z_OBJCE_P(container_val)->function_table, "__wakeup", sizeof("__wakeup") - 1)) { +             zval wakeup, r; +             ZVAL_STRING(&wakeup, "__wakeup"); +-            call_user_function_ex(CG(function_table), container_val, &wakeup, &r, 0, NULL, 1, NULL); ++            call_user_function(CG(function_table), container_val, &wakeup, &r, 0, NULL); +             zval_ptr_dtor(&r); +             zval_ptr_dtor(&wakeup); +         } +diff --git a/php_msgpack.h b/php_msgpack.h +index d5f9164..6ecd5f4 100644 +--- a/php_msgpack.h ++++ b/php_msgpack.h +@@ -52,4 +52,10 @@ PHP_MSGPACK_API int php_msgpack_unserialize( + # define MSGPACK_ENDIAN_BIG_BYTE 0 + #endif +  ++#if PHP_VERSION_ID < 80000 ++# define OBJ_FOR_PROP(zv) (zv) ++#else ++# define OBJ_FOR_PROP(zv) Z_OBJ_P(zv) ++#endif ++ + #endif  /* PHP_MSGPACK_H */ +From 77368369d8c9b7a9f135d3b6aef2c26656dd4b55 Mon Sep 17 00:00:00 2001 +From: Michael Wallner <mike@php.net> +Date: Wed, 23 Sep 2020 09:13:30 +0200 +Subject: [PATCH] msgpack_convert: fix crash on callback with PHP 8 + +--- + msgpack_convert.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/msgpack_convert.c b/msgpack_convert.c +index 8f9e1d0..1f90ef4 100644 +--- a/msgpack_convert.c ++++ b/msgpack_convert.c +@@ -296,28 +296,27 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval *value) /* {{{ */ +  +     /* Run the constructor if there is one */ +     if (ce->constructor && (ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC)) { +-        zval retval, params, function_name; ++        zval retval; +         zend_fcall_info fci; +         zend_fcall_info_cache fcc; +  ++        memset(&fci, 0, sizeof(fci)); ++        memset(&fcc, 0, sizeof(fcc)); ++ +         fci.size = sizeof(fci); + #if PHP_VERSION_ID < 70100 +         fci.function_table = EG(function_table); +-        fci.symbol_table = NULL; + #endif +-        fci.function_name = function_name; +         fci.object = Z_OBJ_P(return_value); +         fci.retval = &retval; +-        fci.param_count = 0; +-        fci.params = ¶ms; + #if PHP_VERSION_ID < 80000 +         fci.no_separation = 1; + #endif ++ + #if PHP_VERSION_ID < 70300 +         fcc.initialized = 1; + #endif +         fcc.function_handler = ce->constructor; +- + #if PHP_VERSION_ID < 70100 +         fcc.calling_scope = EG(scope); + #else +From 87e0424e81e9187e39b3d1e7e4d1bb47a94d95e0 Mon Sep 17 00:00:00 2001 +From: Michael Wallner <mike@php.net> +Date: Wed, 23 Sep 2020 09:36:34 +0200 +Subject: [PATCH] tests: do not depend on ext/curl for a simple resource + +--- + tests/023.phpt | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) + +diff --git a/tests/023.phpt b/tests/023.phpt +index 442fe3d..c1c72c3 100644 +--- a/tests/023.phpt ++++ b/tests/023.phpt +@@ -19,24 +19,10 @@ function test($type, $variable, $test) { +     echo $test || $unserialized === null ? 'OK' : 'FAIL', PHP_EOL; + } +  +-if (function_exists('curl_init')) { +-    $test = 'curl'; +-    $res = curl_init('http://php.net/'); +-} else { +-    $test = 'dir'; +-    $res = opendir('/tmp'); +-} +- ++$res = opendir('/tmp'); + test('resource', $res, false); ++closedir($res); +  +-switch ($test) { +-    case 'curl': +-        curl_close($res); +-        break; +-    default: +-        closedir($res); +-        break; +-} + ?> + --EXPECT-- + resource +From 80d82ac7b21b660501886c5b29ea1186e025de91 Mon Sep 17 00:00:00 2001 +From: Michael Wallner <mike@php.net> +Date: Wed, 23 Sep 2020 09:53:29 +0200 +Subject: [PATCH] tests: PHP 8 somehow detects recursion earlier + +--- + package.xml     | 242 ++++++++++++++++++++++++------------------------ + tests/009.phpt  |   7 +- + tests/009a.phpt |  99 ++++++++++++++++++++ + tests/026.phpt  |   7 +- + tests/026a.phpt | 109 ++++++++++++++++++++++ + 5 files changed, 336 insertions(+), 128 deletions(-) + create mode 100644 tests/009a.phpt + create mode 100644 tests/026a.phpt + +diff --git a/tests/009.phpt b/tests/009.phpt +index feed76f..b917e98 100644 +--- a/tests/009.phpt ++++ b/tests/009.phpt +@@ -2,11 +2,10 @@ + Check for reference serialization + --SKIPIF-- + <?php +-if ((version_compare(PHP_VERSION, '5.2.13') <= 0) || +-    (version_compare(PHP_VERSION, '5.3.0') >= 0 && +-     version_compare(PHP_VERSION, '5.3.2') <= 0)) { +-    echo "skip tests in PHP 5.2.14/5.3.3 or newer"; ++if (version_compare(PHP_VERSION, "8.0.0dev", ">=")) { ++    die("skip PHP >= 8.0\n"); + } ++?> + --FILE-- + <?php + if(!extension_loaded('msgpack')) { +diff --git a/tests/009a.phpt b/tests/009a.phpt +new file mode 100644 +index 0000000..a155604 +--- /dev/null ++++ b/tests/009a.phpt +@@ -0,0 +1,99 @@ ++--TEST-- ++Check for reference serialization ++--SKIPIF-- ++<?php ++if (version_compare(PHP_VERSION, "8.0.0dev", "<")) { ++    die("skip PHP < 8.0\n"); ++} ++?> ++--FILE-- ++<?php ++if(!extension_loaded('msgpack')) { ++    dl('msgpack.' . PHP_SHLIB_SUFFIX); ++} ++ ++function test($type, $variable, $test) { ++    $serialized = msgpack_serialize($variable); ++    $unserialized = msgpack_unserialize($serialized); ++ ++    echo $type, PHP_EOL; ++    echo bin2hex($serialized), PHP_EOL; ++    var_dump($unserialized); ++    echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL; ++} ++ ++$a = array('foo'); ++ ++test('array($a, $a)', array($a, $a), false); ++test('array(&$a, &$a)', array(&$a, &$a), false); ++ ++$a = array(null); ++$b = array(&$a); ++$a[0] = &$b; ++ ++test('cyclic', $a, true); ++ ++var_dump($a); ++var_dump(msgpack_unserialize(msgpack_serialize($a))); ++ ++--EXPECT-- ++array($a, $a) ++9291a3666f6f91a3666f6f ++array(2) { ++  [0]=> ++  array(1) { ++    [0]=> ++    string(3) "foo" ++  } ++  [1]=> ++  array(1) { ++    [0]=> ++    string(3) "foo" ++  } ++} ++OK ++array(&$a, &$a) ++9282c00100a3666f6f82c0020002 ++array(2) { ++  [0]=> ++  &array(1) { ++    [0]=> ++    string(3) "foo" ++  } ++  [1]=> ++  &array(1) { ++    [0]=> ++    string(3) "foo" ++  } ++} ++OK ++cyclic ++9182c0010082c0010082c0020002 ++array(1) { ++  [0]=> ++  &array(1) { ++    [0]=> ++    array(1) { ++      [0]=> ++      *RECURSION* ++    } ++  } ++} ++OK ++array(1) { ++  [0]=> ++  &array(1) { ++    [0]=> ++    *RECURSION* ++  } ++} ++array(1) { ++  [0]=> ++  &array(1) { ++    [0]=> ++    array(1) { ++      [0]=> ++      *RECURSION* ++    } ++  } ++} +diff --git a/tests/026.phpt b/tests/026.phpt +index d89654d..ba59a71 100644 +--- a/tests/026.phpt ++++ b/tests/026.phpt +@@ -3,11 +3,10 @@ Cyclic array test + --INI-- + --SKIPIF-- + <?php +-if ((version_compare(PHP_VERSION, '5.2.13') <= 0) || +-    (version_compare(PHP_VERSION, '5.3.0') >= 0 && +-     version_compare(PHP_VERSION, '5.3.2') <= 0)) { +-    echo "skip tests in PHP 5.2.14/5.3.3 or newer"; ++if (version_compare(PHP_VERSION, "8.0.0dev", ">=")) { ++    die("skip PHP >= 8.0"); + } ++?> + --FILE-- + <?php + if(!extension_loaded('msgpack')) { +diff --git a/tests/026a.phpt b/tests/026a.phpt +new file mode 100644 +index 0000000..8abc61a +--- /dev/null ++++ b/tests/026a.phpt +@@ -0,0 +1,109 @@ ++--TEST-- ++Cyclic array test ++--INI-- ++--SKIPIF-- ++<?php ++ ++if (version_compare(PHP_VERSION, "8.0.0dev", "<")) { ++    die("skip PHP < 8.0"); ++} ++?> ++--FILE-- ++<?php ++if(!extension_loaded('msgpack')) { ++    dl('msgpack.' . PHP_SHLIB_SUFFIX); ++} ++ ++function test($type, $variable, $test) { ++    $serialized = msgpack_serialize($variable); ++    $unserialized = msgpack_unserialize($serialized); ++ ++    echo $type, PHP_EOL; ++    echo bin2hex($serialized), PHP_EOL; ++    var_dump($unserialized); ++    echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL; ++} ++ ++$a = array( ++    'a' => array( ++        'b' => 'c', ++        'd' => 'e' ++    ), ++); ++ ++$a['f'] = &$a; ++ ++test('array', $a, true); ++ ++$a = array("foo" => &$b); ++$b = array(1, 2, $a); ++var_dump($a); ++var_dump($k = msgpack_unserialize(msgpack_serialize($a))); ++ ++$k["foo"][1] = "b"; ++var_dump($k); ++?> ++--EXPECT-- ++array ++82a16182a162a163a164a165a16683c001a16182a162a163a164a165a16682c0020003 ++array(2) { ++  ["a"]=> ++  array(2) { ++    ["b"]=> ++    string(1) "c" ++    ["d"]=> ++    string(1) "e" ++  } ++  ["f"]=> ++  &array(2) { ++    ["a"]=> ++    array(2) { ++      ["b"]=> ++      string(1) "c" ++      ["d"]=> ++      string(1) "e" ++    } ++    ["f"]=> ++    *RECURSION* ++  } ++} ++OK ++array(1) { ++  ["foo"]=> ++  &array(3) { ++    [0]=> ++    int(1) ++    [1]=> ++    int(2) ++    [2]=> ++    *RECURSION* ++  } ++} ++array(1) { ++  ["foo"]=> ++  &array(3) { ++    [0]=> ++    int(1) ++    [1]=> ++    int(2) ++    [2]=> ++    array(1) { ++      ["foo"]=> ++      *RECURSION* ++    } ++  } ++} ++array(1) { ++  ["foo"]=> ++  &array(3) { ++    [0]=> ++    int(1) ++    [1]=> ++    string(1) "b" ++    [2]=> ++    array(1) { ++      ["foo"]=> ++      *RECURSION* ++    } ++  } ++} diff --git a/php-pecl-msgpack.spec b/php-pecl-msgpack.spec index 3c80edb..190d317 100644 --- a/php-pecl-msgpack.spec +++ b/php-pecl-msgpack.spec @@ -35,17 +35,18 @@  Summary:       API for communicating with MessagePack serialization  Name:          %{?sub_prefix}php-pecl-msgpack +License:       BSD  Version:       %{upstream_version}%{?upstream_lower:~%{upstream_lower}} +URL:           https://pecl.php.net/package/msgpack  %if 0%{?gh_date:1}  Release:       0.5.%{gh_date}.%{gh_short}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}  Source0:       https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{pecl_name}-%{version}-%{gh_short}.tar.gz  %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;')}}  Source:        https://pecl.php.net/get/%{pecl_name}-%{upstream_version}%{?upstream_prever}.tgz  %endif -License:       BSD -Group:         Development/Languages -URL:           https://pecl.php.net/package/msgpack + +Patch0:        %{pecl_name}-php8.patch  BuildRequires: %{?dtsprefix}gcc  BuildRequires: %{?scl_prefix}php-devel >= 7 @@ -70,31 +71,14 @@ Provides:      %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa}  = %{version}-%{relea  %endif  %if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}  # Other third party repo stuff -Obsoletes:     php53-pecl-%{pecl_name}  <= %{version} -Obsoletes:     php53u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php54-pecl-%{pecl_name}  <= %{version} -Obsoletes:     php54w-pecl-%{pecl_name} <= %{version} -Obsoletes:     php55u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php55w-pecl-%{pecl_name} <= %{version} -Obsoletes:     php56u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php56w-pecl-%{pecl_name} <= %{version} -Obsoletes:     php70u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php70w-pecl-%{pecl_name} <= %{version} -%if "%{php_version}" > "7.1" -Obsoletes:     php71u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php71w-pecl-%{pecl_name} <= %{version} -%endif -%if "%{php_version}" > "7.2" -Obsoletes:     php72u-pecl-%{pecl_name} <= %{version} -Obsoletes:     php72w-pecl-%{pecl_name} <= %{version} -%endif  %if "%{php_version}" > "7.3"  Obsoletes:      php73-pecl-%{pecl_name} <= %{version} -Obsoletes:     php73w-pecl-%{pecl_name} <= %{version}  %endif  %if "%{php_version}" > "7.4"  Obsoletes:      php74-pecl-%{pecl_name} <= %{version} -Obsoletes:     php74w-pecl-%{pecl_name} <= %{version} +%endif +%if "%{php_version}" > "8.0" +Obsoletes:      php80-pecl-%{pecl_name} <= %{version}  %endif  %endif @@ -151,6 +135,7 @@ mv %{pecl_name}-%{upstream_version}%{?upstream_prever} NTS  %{?_licensedir:sed -e '/LICENSE/s/role="doc"/role="src"/' -i package.xml}  cd NTS +%patch0 -p1 -b .up  %if %{with_msgpack}  # use system library @@ -303,6 +288,9 @@ fi  %changelog +* Wed Sep 23 2020 Remi Collet <remi@remirepo.net> - 2.1.1-2 +- add upstream patches for PHP 8 +  * Tue Jul 28 2020 Remi Collet <remi@remirepo.net> - 2.1.1-1  - update to 2.1.1  | 
