summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--php-pecl-yaf.spec34
-rw-r--r--yaf-php82.patch85
2 files changed, 101 insertions, 18 deletions
diff --git a/php-pecl-yaf.spec b/php-pecl-yaf.spec
index 20c0de2..54b86e1 100644
--- a/php-pecl-yaf.spec
+++ b/php-pecl-yaf.spec
@@ -11,9 +11,11 @@
%undefine _strict_symbol_defs_build
%if 0%{?scl:1}
-%scl_package php-pecl-yaf
+%scl_package php-pecl-yaf
%endif
+%bcond_without tests
+
%global gh_commit 51e458e9746d7061efc565d49baaca26feacd7ff
%global gh_short %(c=%{gh_commit}; echo ${c:0:7})
%global gh_owner laruence
@@ -30,13 +32,15 @@ Version: 3.3.5
Release: 0.13.%{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: 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}-%{version}%{?prever}.tgz
%endif
License: PHP
URL: https://pecl.php.net/package/yaf
Source1: %{pecl_name}.ini
+Patch0: %{pecl_name}-php82.patch
+
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?scl_prefix}php-devel >= 7.0
@@ -54,22 +58,6 @@ Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version}
Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version}
Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version}
-%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
-# Other third party repo stuff
-%if "%{php_version}" > "7.3"
-Obsoletes: php73-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.4"
-Obsoletes: php74-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "8.0"
-Obsoletes: php80-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "8.1"
-Obsoletes: php81-pecl-%{pecl_name} <= %{version}
-%endif
-%endif
-
%description
The Yet Another Framework (Yaf) extension is a PHP framework that is used
@@ -93,6 +81,8 @@ sed -e 's/role="test"/role="src"/' \
-i package.xml
cd NTS
+%patch0 -p1 -b .pr579
+
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_YAF_VERSION/{s/.*\t"//;s/".*$//;p}' php_yaf.h )
if test "x${extver}" != "x%{version}%{?gh_date:-dev}"; then
@@ -155,11 +145,13 @@ cd NTS
--define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
--modules | grep '^%{pecl_name}$'
+%if %{with tests}
: Upstream test suite for NTS extension
TEST_PHP_EXECUTABLE=%{__php} \
TEST_PHP_ARGS="$OPTS -d extension=$PWD/modules/%{pecl_name}.so" \
REPORT_EXIT_STATUS=1 \
%{__php} -n run-tests.php -q --show-diff
+%endif
%if %{with_zts}
cd ../ZTS
@@ -169,12 +161,14 @@ cd ../ZTS
--define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \
--modules | grep '^%{pecl_name}$'
+%if %{with tests}
: Upstream test suite for NTS extension
TEST_PHP_EXECUTABLE=%{__ztsphp} \
TEST_PHP_ARGS="$OPTS -d extension=$PWD/modules/%{pecl_name}.so" \
REPORT_EXIT_STATUS=1 \
%{__ztsphp} -n run-tests.php -q --show-diff
%endif
+%endif
%if 0%{?fedora} < 24 && 0%{?rhel} < 8
@@ -212,6 +206,10 @@ fi
%changelog
+* Mon Sep 19 2022 Remi Collet <remi@remirepo.net> - 3.3.5-2
+- add patch for PHP 8.2 from
+ https://github.com/laruence/yaf/pull/579
+
* Mon May 23 2022 Remi Collet <remi@remirepo.net> - 3.3.5-1
- update to 3.3.5
diff --git a/yaf-php82.patch b/yaf-php82.patch
new file mode 100644
index 0000000..9bbacae
--- /dev/null
+++ b/yaf-php82.patch
@@ -0,0 +1,85 @@
+From e1557c8f219651550633567054af9c3298524c7e Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Mon, 19 Sep 2022 11:44:33 +0200
+Subject: [PATCH] Fix PHP 8.2 compatibility
+
+---
+ requests/yaf_request_simple.c | 3 +++
+ tests/031.phpt | 2 +-
+ tests/issue231.phpt | 2 +-
+ views/yaf_view_simple.c | 4 +++-
+ yaf_application.c | 4 +++-
+ 5 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/requests/yaf_request_simple.c b/requests/yaf_request_simple.c
+index 6e7ff540..9c63d1c4 100644
+--- a/requests/yaf_request_simple.c
++++ b/requests/yaf_request_simple.c
+@@ -140,6 +140,9 @@ YAF_STARTUP_FUNCTION(request_simple){
+ zend_class_entry ce;
+ YAF_INIT_CLASS_ENTRY(ce, "Yaf_Request_Simple", "Yaf\\Request\\Simple", yaf_request_simple_methods);
+ yaf_request_simple_ce = zend_register_internal_class_ex(&ce, yaf_request_ce);
++#if PHP_VERSION_ID >= 80200
++ yaf_request_simple_ce->ce_flags |= ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES;
++#endif
+
+ return SUCCESS;
+ }
+diff --git a/tests/031.phpt b/tests/031.phpt
+index 19e9f79f..3474aa63 100644
+--- a/tests/031.phpt
++++ b/tests/031.phpt
+@@ -36,7 +36,7 @@ Array
+ )
+ array (
+ '_default' =>
+- Yaf_Route_Map::__set_state(array(
++ %saf_Route_Map::__set_state(array(
+ 'ctl_prefer:protected' => true,
+ 'delimiter:protected' => '##',
+ )),
+diff --git a/tests/issue231.phpt b/tests/issue231.phpt
+index da656f87..44abc592 100644
+--- a/tests/issue231.phpt
++++ b/tests/issue231.phpt
+@@ -34,7 +34,7 @@ Yaf_Request_Http Object
+ )
+
+ )
+-Yaf_Request_Http::__set_state(array(
++%saf_Request_Http::__set_state(array(
+ 'method' => 'POST',
+ 'module' => NULL,
+ 'controller' => NULL,
+diff --git a/views/yaf_view_simple.c b/views/yaf_view_simple.c
+index 229339e9..7402fed7 100755
+--- a/views/yaf_view_simple.c
++++ b/views/yaf_view_simple.c
+@@ -388,8 +388,10 @@ static int yaf_view_simple_eval(yaf_view_t *view, zend_string *tpl, zval * vars,
+ ZVAL_STR(&phtml, strpprintf(0, "?>%s", ZSTR_VAL(tpl)));
+ #if PHP_VERSION_ID < 80000
+ op_array = zend_compile_string(&phtml, eval_desc);
+-#else
++#elif PHP_VERSION_ID < 80200
+ op_array = zend_compile_string(Z_STR(phtml), eval_desc);
++#else
++ op_array = zend_compile_string(Z_STR(phtml), eval_desc, ZEND_COMPILE_POSITION_AFTER_OPEN_TAG);
+ #endif
+ zval_dtor(&phtml);
+ efree(eval_desc);
+diff --git a/yaf_application.c b/yaf_application.c
+index 44b8e9e8..335b6d44 100644
+--- a/yaf_application.c
++++ b/yaf_application.c
+@@ -1053,8 +1053,10 @@ YAF_STARTUP_FUNCTION(application) {
+ yaf_application_ce->ce_flags |= ZEND_ACC_FINAL;
+ yaf_application_ce->serialize = zend_class_serialize_deny;
+ yaf_application_ce->unserialize = zend_class_unserialize_deny;
+-#else
++#elif PHP_VERSION_ID < 80200
+ yaf_application_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NOT_SERIALIZABLE;
++#else
++ yaf_application_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NOT_SERIALIZABLE | ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES;
+ #endif
+
+ memcpy(&yaf_application_obj_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));