summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apcu-php81.patch310
-rw-r--r--php-pecl-apcu.spec16
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