From 7dcda0d5d4d46112fc400dd6930250ab47482f3a Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 1 Oct 2020 08:06:27 +0200 Subject: add upstream patches for PHP 8 --- php-pecl-yaz.spec | 49 +++++----- yaz-php8.patch | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 306 insertions(+), 27 deletions(-) create mode 100644 yaz-php8.patch diff --git a/php-pecl-yaz.spec b/php-pecl-yaz.spec index 18bfaab..97f75f3 100644 --- a/php-pecl-yaz.spec +++ b/php-pecl-yaz.spec @@ -1,11 +1,15 @@ # remirepo spec file for php-pecl-yaz # -# Copyright (c) 2014-2019 Remi Collet +# Copyright (c) 2014-2020 Remi Collet # License: CC-BY-SA # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # + +# Test suite requires internet access +%bcond_with tests + %if 0%{?scl:1} %global sub_prefix %{scl_prefix} %scl_package php-pecl-yaz @@ -18,16 +22,17 @@ %else %global ini_name 40-%{pecl_name}.ini %endif -# Test suite requires internet access -%global with_tests 0%{?_with_tests:1} Summary: Z39.50/SRU client Name: %{?sub_prefix}php-pecl-%{pecl_name} Version: 1.2.3 -Release: 3%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} +Release: 4%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} License: BSD -URL: http://pecl.php.net/package/%{pecl_name} -Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz +URL: https://pecl.php.net/package/%{pecl_name} +Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz + +# Upstream patches +Patch0: %{pecl_name}-php8.patch BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel @@ -51,31 +56,16 @@ Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{rele Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release} %endif -%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel} +%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel} # Other third party repo stuff -%if "%{php_version}" > "5.6" -Obsoletes: php56u-pecl-%{pecl_name} <= %{version} -Obsoletes: php56w-pecl-%{pecl_name} <= %{version} -%endif -%if "%{php_version}" > "7.0" -Obsoletes: php70u-pecl-%{pecl_name} <= %{version} -Obsoletes: php70w-pecl-%{pecl_name} <= %{version} -%endif -%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 @@ -109,6 +99,8 @@ sed -e 's/role="test"/role="src"/' \ -i package.xml cd NTS +%patch0 -p1 -b .up + # Sanity check, really often broken extver=$(sed -n '/#define PHP_YAZ_VERSION/{s/.* "//;s/".*$//;p}' php_yaz.h) if test "x${extver}" != "x%{version}"; then @@ -203,7 +195,7 @@ cd NTS --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ --modules | grep %{pecl_name} -%if %{with_tests} +%if %{with tests} : Upstream test suite for NTS extension TEST_PHP_EXECUTABLE=%{__php} \ TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ @@ -219,7 +211,7 @@ cd ../ZTS --define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \ --modules | grep %{pecl_name} -%if %{with_tests} +%if %{with tests} : Upstream test suite for ZTS extension TEST_PHP_EXECUTABLE=%{_bindir}/zts-php \ TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ @@ -245,6 +237,9 @@ REPORT_EXIT_STATUS=1 \ %changelog +* Thu Oct 1 2020 Remi Collet - 1.2.3-4 +- add upstream patches for PHP 8 + * Tue Sep 03 2019 Remi Collet - 1.2.3-3 - rebuild for 7.4.0RC1 diff --git a/yaz-php8.patch b/yaz-php8.patch new file mode 100644 index 0000000..87daab8 --- /dev/null +++ b/yaz-php8.patch @@ -0,0 +1,284 @@ +From e629fb640e11f2358c04fe72d50afbd0a004596c Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Wed, 23 Sep 2020 16:44:57 +0200 +Subject: [PATCH] add arginfo for all functions - drop support for PHP 4.x - + add compatibility with PHP 8 + +--- + .gitignore | 2 + + package.xml | 2 +- + php_yaz.c | 209 +++++++++++++++++++++++++++++++++++++++------------- + 3 files changed, 162 insertions(+), 51 deletions(-) + +diff --git a/php_yaz.c b/php_yaz.c +index e157815..64b5079 100644 +--- a/php_yaz.c ++++ b/php_yaz.c +@@ -18,6 +18,12 @@ + + #include "php_yaz.h" + ++/* for PHP 8+ */ ++#ifndef TSRMLS_CC ++#define TSRMLS_CC ++#define TSRMLS_DC ++#endif ++ + #ifndef YAZ_VERSIONL + #error YAZ version 3.0.2 or later must be used. + #elif YAZ_VERSIONL < 0x030020 +@@ -138,62 +144,165 @@ static int le_link; + ZEND_GET_MODULE(yaz) + #endif + +-#ifdef ZEND_BEGIN_ARG_INFO +- ZEND_BEGIN_ARG_INFO(first_argument_force_ref, 0) +- ZEND_ARG_PASS_INFO(1) +- ZEND_END_ARG_INFO(); ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_connect, 0, 0, 1) ++ ZEND_ARG_INFO(0, url) ++ ZEND_ARG_INFO(0, options) ++ZEND_END_ARG_INFO(); + +- ZEND_BEGIN_ARG_INFO(second_argument_force_ref, 0) +- ZEND_ARG_PASS_INFO(0) +- ZEND_ARG_PASS_INFO(1) +- ZEND_END_ARG_INFO(); +- +- ZEND_BEGIN_ARG_INFO(third_argument_force_ref, 0) +- ZEND_ARG_PASS_INFO(0) +- ZEND_ARG_PASS_INFO(0) +- ZEND_ARG_PASS_INFO(1) +- ZEND_END_ARG_INFO(); +-#else +-static unsigned char first_argument_force_ref[] = { +- 1, BYREF_FORCE }; +-static unsigned char second_argument_force_ref[] = { +- 2, BYREF_NONE, BYREF_FORCE }; +-static unsigned char third_argument_force_ref[] = { +- 3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; +-#endif ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_close, 0, 0, 1) ++ ZEND_ARG_INFO(0, id) ++ZEND_END_ARG_INFO(); ++ ++#define arginfo_yaz_present arginfo_yaz_close ++ ++#define arginfo_yaz_errno arginfo_yaz_close ++ ++#define arginfo_yaz_error arginfo_yaz_close ++ ++#define arginfo_yaz_addinfo arginfo_yaz_close ++ ++#define arginfo_yaz_es_result arginfo_yaz_close ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_search, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, type) ++ ZEND_ARG_INFO(0, query) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_wait, 0, 0, 0) ++ ZEND_ARG_INFO(1, options) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_hits, 0, 0, 1) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(1, searchresult) ++ ZEND_ARG_INFO(0, query) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_record, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, pos) ++ ZEND_ARG_INFO(0, type) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_syntax, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, syntax) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_element, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, elementsetname) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_schema, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, schema) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_set_option, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, options_or_name) ++ ZEND_ARG_INFO(0, value) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_get_option, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, name) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_range, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, start) ++ ZEND_ARG_INFO(0, number) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_sort, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, sortspec) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_itemorder, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, package) ++ZEND_END_ARG_INFO(); ++ ++#define arginfo_yaz_ccl_conf arginfo_yaz_itemorder ++ ++#define arginfo_yaz_cql_conf arginfo_yaz_itemorder ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_es, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, type) ++ ZEND_ARG_INFO(0, package) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_scan, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, type) ++ ZEND_ARG_INFO(0, query) ++ ZEND_ARG_INFO(0, flags) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_scan_result, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(1, options) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_ccl_parse, 0, 0, 3) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, query) ++ ZEND_ARG_INFO(1, result) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_cql_parse, 0, 0, 4) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, cql) ++ ZEND_ARG_INFO(1, result) ++ ZEND_ARG_INFO(0, rev) ++ZEND_END_ARG_INFO(); ++ ++ZEND_BEGIN_ARG_INFO_EX(arginfo_databases, 0, 0, 2) ++ ZEND_ARG_INFO(0, id) ++ ZEND_ARG_INFO(0, package) ++ZEND_END_ARG_INFO(); + + + zend_function_entry yaz_functions [] = { +- PHP_FE(yaz_connect, NULL) +- PHP_FE(yaz_close, NULL) +- PHP_FE(yaz_search, NULL) +- PHP_FE(yaz_wait, first_argument_force_ref) +- PHP_FE(yaz_errno, NULL) +- PHP_FE(yaz_error, NULL) +- PHP_FE(yaz_addinfo, NULL) +- PHP_FE(yaz_hits, second_argument_force_ref) +- PHP_FE(yaz_record, NULL) +- PHP_FE(yaz_syntax, NULL) +- PHP_FE(yaz_element, NULL) +- PHP_FE(yaz_range, NULL) +- PHP_FE(yaz_itemorder, NULL) +- PHP_FE(yaz_es_result, NULL) +- PHP_FE(yaz_scan, NULL) +- PHP_FE(yaz_scan_result, second_argument_force_ref) +- PHP_FE(yaz_present, NULL) +- PHP_FE(yaz_ccl_conf, NULL) +- PHP_FE(yaz_ccl_parse, third_argument_force_ref) ++ PHP_FE(yaz_connect, arginfo_yaz_connect) ++ PHP_FE(yaz_close, arginfo_yaz_close) ++ PHP_FE(yaz_search, arginfo_yaz_search) ++ PHP_FE(yaz_wait, arginfo_yaz_wait) ++ PHP_FE(yaz_errno, arginfo_yaz_errno) ++ PHP_FE(yaz_error, arginfo_yaz_error) ++ PHP_FE(yaz_addinfo, arginfo_yaz_addinfo) ++ PHP_FE(yaz_hits, arginfo_yaz_hits) ++ PHP_FE(yaz_record, arginfo_yaz_record) ++ PHP_FE(yaz_syntax, arginfo_yaz_syntax) ++ PHP_FE(yaz_element, arginfo_yaz_element) ++ PHP_FE(yaz_range, arginfo_yaz_range) ++ PHP_FE(yaz_itemorder, arginfo_yaz_itemorder) ++ PHP_FE(yaz_es_result, arginfo_yaz_es_result) ++ PHP_FE(yaz_scan, arginfo_yaz_scan) ++ PHP_FE(yaz_scan_result, arginfo_yaz_scan_result) ++ PHP_FE(yaz_present, arginfo_yaz_present) ++ PHP_FE(yaz_ccl_conf, arginfo_yaz_ccl_conf) ++ PHP_FE(yaz_ccl_parse, arginfo_yaz_ccl_parse) + #if YAZ_VERSIONL >= 0x050100 +- PHP_FE(yaz_cql_parse, third_argument_force_ref) +- PHP_FE(yaz_cql_conf, NULL) +-#endif +- PHP_FE(yaz_database, NULL) +- PHP_FE(yaz_sort, NULL) +- PHP_FE(yaz_schema, NULL) +- PHP_FE(yaz_set_option, NULL) +- PHP_FE(yaz_get_option, NULL) +- PHP_FE(yaz_es, NULL) ++ PHP_FE(yaz_cql_parse, arginfo_yaz_cql_parse) ++ PHP_FE(yaz_cql_conf, arginfo_yaz_cql_conf) ++#endif ++ PHP_FE(yaz_database, arginfo_databases) ++ PHP_FE(yaz_sort, arginfo_yaz_sort) ++ PHP_FE(yaz_schema, arginfo_yaz_schema) ++ PHP_FE(yaz_set_option, arginfo_yaz_set_option) ++ PHP_FE(yaz_get_option, arginfo_yaz_get_option) ++ PHP_FE(yaz_es, arginfo_yaz_es) ++#ifdef PHP_FE_END ++ PHP_FE_END ++#else + {NULL, NULL, NULL} ++#endif + }; + + static void get_assoc(INTERNAL_FUNCTION_PARAMETERS, zval *id, Yaz_Association *assocp) +From 323962299bae3b2085dde44790785a39878f5f9a Mon Sep 17 00:00:00 2001 +From: Adam Dickmeiss +Date: Thu, 24 Sep 2020 19:45:58 +0200 +Subject: [PATCH] Fixes for arg info + +--- + php_yaz.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/php_yaz.c b/php_yaz.c +index 64b5079..de9693d 100644 +--- a/php_yaz.c ++++ b/php_yaz.c +@@ -176,7 +176,6 @@ ZEND_END_ARG_INFO(); + ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_hits, 0, 0, 1) + ZEND_ARG_INFO(0, id) + ZEND_ARG_INFO(1, searchresult) +- ZEND_ARG_INFO(0, query) + ZEND_END_ARG_INFO(); + + ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_record, 0, 0, 3) +@@ -244,7 +243,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_scan, 0, 0, 3) + ZEND_ARG_INFO(0, flags) + ZEND_END_ARG_INFO(); + +-ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_scan_result, 0, 0, 2) ++ZEND_BEGIN_ARG_INFO_EX(arginfo_yaz_scan_result, 0, 0, 1) + ZEND_ARG_INFO(0, id) + ZEND_ARG_INFO(1, options) + ZEND_END_ARG_INFO(); +@@ -264,7 +263,7 @@ ZEND_END_ARG_INFO(); + + ZEND_BEGIN_ARG_INFO_EX(arginfo_databases, 0, 0, 2) + ZEND_ARG_INFO(0, id) +- ZEND_ARG_INFO(0, package) ++ ZEND_ARG_INFO(0, databases) + ZEND_END_ARG_INFO(); + + -- cgit