diff options
-rw-r--r-- | apcu-php81.patch | 310 | ||||
-rw-r--r-- | php-pecl-apcu.spec | 16 |
2 files changed, 319 insertions, 7 deletions
diff --git a/apcu-php81.patch b/apcu-php81.patch new file mode 100644 index 0000000..8abf332 --- /dev/null +++ b/apcu-php81.patch @@ -0,0 +1,310 @@ +From 3d96f1aaf6e1eae26dd637a4795f8fee95b79c02 Mon Sep 17 00:00:00 2001 +From: Nikita Popov <nikita.ppv@gmail.com> +Date: Thu, 10 Jun 2021 10:48:12 +0200 +Subject: [PATCH] Fix tests for PHP 8.1 + +--- + tests/apc_003b.phpt | 15 ++--- + tests/apc_003b_legacy.phpt | 113 +++++++++++++++++++++++++++++++++++++ + tests/apc_006_php73.phpt | 1 + + tests/apc_006_php81.phpt | 83 +++++++++++++++++++++++++++ + tests/bug76145.phpt | 1 + + 5 files changed, 206 insertions(+), 7 deletions(-) + create mode 100644 tests/apc_003b_legacy.phpt + create mode 100644 tests/apc_006_php81.phpt + +diff --git a/tests/apc_003b.phpt b/tests/apc_003b.phpt +index 18b0d20..d7a18cc 100644 +--- a/tests/apc_003b.phpt ++++ b/tests/apc_003b.phpt +@@ -2,7 +2,8 @@ + APC: apcu_store/fetch with objects + --SKIPIF-- + <?php +- require_once(dirname(__FILE__) . '/skipif.inc'); ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID < 80100) die("skip For PHP >= 8.1"); + ?> + --INI-- + apc.enabled=1 +@@ -68,42 +69,42 @@ object(foo)#%d (1) { + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "bar" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "mod" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> + bool(true) + } + object(baz)#%d (6) { +- ["pri":"baz":private]=> +- string(3) "baz" + ["pub"]=> + string(3) "bar" + ["pro":protected]=> + string(3) "bar" + ["pri":"bar":private]=> + string(3) "mod" ++ ["pri":"baz":private]=> ++ string(3) "baz" + ["bar"]=> + bool(true) + ["baz"]=> +diff --git a/tests/apc_003b_legacy.phpt b/tests/apc_003b_legacy.phpt +new file mode 100644 +index 0000000..ca2fa08 +--- /dev/null ++++ b/tests/apc_003b_legacy.phpt +@@ -0,0 +1,113 @@ ++--TEST-- ++APC: apcu_store/fetch with objects ++--SKIPIF-- ++<?php ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID >= 80100) die("skip For PHP < 8.1"); ++?> ++--INI-- ++apc.enabled=1 ++apc.enable_cli=1 ++--FILE-- ++<?php ++ ++class foo { } ++$foo = new foo; ++var_dump($foo); ++apcu_store('foo',$foo); ++unset($foo); ++$bar = apcu_fetch('foo'); ++var_dump($bar); ++$bar->a = true; ++var_dump($bar); ++ ++class bar extends foo ++{ ++ public $pub = 'bar'; ++ protected $pro = 'bar'; ++ private $pri = 'bar'; // we don't see this, we'd need php 5.1 new serialization ++ ++ function __construct() ++ { ++ $this->bar = true; ++ } ++ ++ function change() ++ { ++ $this->pri = 'mod'; ++ } ++} ++ ++class baz extends bar ++{ ++ private $pri = 'baz'; ++ ++ function __construct() ++ { ++ parent::__construct(); ++ $this->baz = true; ++ } ++} ++ ++$baz = new baz; ++var_dump($baz); ++$baz->change(); ++var_dump($baz); ++apcu_store('baz', $baz); ++unset($baz); ++var_dump(apcu_fetch('baz')); ++ ++?> ++===DONE=== ++--EXPECTF-- ++object(foo)#%d (0) { ++} ++object(foo)#%d (0) { ++} ++object(foo)#%d (1) { ++ ["a"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "bar" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "mod" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++object(baz)#%d (6) { ++ ["pri":"baz":private]=> ++ string(3) "baz" ++ ["pub"]=> ++ string(3) "bar" ++ ["pro":protected]=> ++ string(3) "bar" ++ ["pri":"bar":private]=> ++ string(3) "mod" ++ ["bar"]=> ++ bool(true) ++ ["baz"]=> ++ bool(true) ++} ++===DONE=== +diff --git a/tests/apc_006_php73.phpt b/tests/apc_006_php73.phpt +index 42bdfde..adc09b9 100644 +--- a/tests/apc_006_php73.phpt ++++ b/tests/apc_006_php73.phpt +@@ -4,6 +4,7 @@ APC: apcu_store/fetch reference test + <?php + require_once(dirname(__FILE__) . '/skipif.inc'); + if (PHP_VERSION_ID < 70300) die('skip Only for PHP >= 7.3'); ++if (PHP_VERSION_ID >= 80100) die('skip Only for PHP < 8.1'); + ?> + --INI-- + apc.enabled=1 +diff --git a/tests/apc_006_php81.phpt b/tests/apc_006_php81.phpt +new file mode 100644 +index 0000000..94219dc +--- /dev/null ++++ b/tests/apc_006_php81.phpt +@@ -0,0 +1,83 @@ ++--TEST-- ++APC: apcu_store/fetch reference test ++--SKIPIF-- ++<?php ++require_once(dirname(__FILE__) . '/skipif.inc'); ++if (PHP_VERSION_ID < 80100) die('skip Only for PHP >= 8.1'); ++?> ++--INI-- ++apc.enabled=1 ++apc.enable_cli=1 ++apc.serializer=php ++report_memleaks=0 ++--FILE-- ++<?php ++ ++$a = 'a'; ++$b = array($a); ++$c = array('c'); ++$b[] = &$c; ++$b[] = &$c; ++$d = 'd'; ++$b[] = &$d; ++$b[] = &$d; ++$b[] = &$d; ++$e = 'e'; ++$b[] = $e; ++$b[] = $e; ++$f = array('f'); ++$f[] = &$f; ++$b[] = &$f; ++apcu_store('test', $b); ++$x = apcu_fetch('test'); ++debug_zval_dump($x); ++ ++?> ++===DONE=== ++--EXPECTF-- ++array(9) refcount(2){ ++ [0]=> ++ string(1) "a" interned ++ [1]=> ++ reference refcount(2) { ++ array(1) refcount(1){ ++ [0]=> ++ string(1) "c" interned ++ } ++ } ++ [2]=> ++ reference refcount(2) { ++ array(1) refcount(1){ ++ [0]=> ++ string(1) "c" interned ++ } ++ } ++ [3]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [4]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [5]=> ++ reference refcount(3) { ++ string(1) "d" interned ++ } ++ [6]=> ++ string(1) "e" interned ++ [7]=> ++ string(1) "e" interned ++ [8]=> ++ reference refcount(2) { ++ array(2) refcount(1){ ++ [0]=> ++ string(1) "f" interned ++ [1]=> ++ reference refcount(2) { ++ *RECURSION* ++ } ++ } ++ } ++} ++===DONE=== +diff --git a/tests/bug76145.phpt b/tests/bug76145.phpt +index 8959a44..56f7e10 100644 +--- a/tests/bug76145.phpt ++++ b/tests/bug76145.phpt +@@ -3,6 +3,7 @@ Bug #76145: Data corruption reading from APCu while unserializing + --INI-- + apc.enabled=1 + apc.enable_cli=1 ++error_reporting=E_ALL&~E_DEPRECATED + --FILE-- + <?php + diff --git a/php-pecl-apcu.spec b/php-pecl-apcu.spec index e2a494b..eea74d7 100644 --- a/php-pecl-apcu.spec +++ b/php-pecl-apcu.spec @@ -36,13 +36,16 @@ URL: https://pecl.php.net/package/APCu Release: 0.8.%{gh_date}git%{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: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} +Release: 3%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz %endif Source1: %{pecl_name}-5.1.19.ini Source2: %{pecl_name}-panel.conf Source3: %{pecl_name}.conf.php +# Upstream patch +Patch0: %{pecl_name}-php81.patch + BuildRequires: make BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel >= 7.0 @@ -157,6 +160,8 @@ mv %{pecl_name}-%{version} NTS %{?_licensedir:sed -e '/LICENSE/s/role="doc"/role="src"/' -i package.xml} cd NTS +%patch0 -p1 -b .up + # Sanity check, really often broken extver=$(sed -n '/#define PHP_APCU_VERSION/{s/.* "//;s/".*$//;p}' php_apc.h) if test "x${extver}" != "x%{version}%{?prever}%{?gh_date:-dev}"; then @@ -241,12 +246,6 @@ done %check -%if "%{php_version}" > "8.1" -rm ?TS/tests/apc_003b.phpt -rm ?TS/tests/apc_006_php73.phpt -rm ?TS/tests/bug76145.phpt -%endif - cd NTS %{_bindir}/php -n \ -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ @@ -328,6 +327,9 @@ fi %changelog +* Wed Jul 7 2021 Remi Collet <remi@remirepo.net> - 5.1.20-3 +- add upstream patch for test suite with PHP 8.1 + * Thu Jun 10 2021 Remi Collet <remi@remirepo.net> - 5.1.20-2 - temporarily ignore 3 tests with PHP 8.1 |