summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--php-pecl-zip.spec29
-rw-r--r--zip-php83.patch154
2 files changed, 170 insertions, 13 deletions
diff --git a/php-pecl-zip.spec b/php-pecl-zip.spec
index b73231b..9fa3e6f 100644
--- a/php-pecl-zip.spec
+++ b/php-pecl-zip.spec
@@ -3,8 +3,8 @@
#
# fedora spec file for php-pecl-zip
#
-# Copyright (c) 2013-2022 Remi Collet
-# License: CC-BY-SA
+# Copyright (c) 2013-2023 Remi Collet
+# License: CC-BY-SA-4.0
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please, preserve the changelog entries
@@ -16,11 +16,13 @@
%{?scl: %scl_package php-pecl-zip}
%if ( 0%{?scl:1} && 0%{?rhel} == 8 ) || 0%{?rhel} >= 9
-%bcond_without move_to_opt
+%bcond_without move_to_opt
%else
-%bcond_with move_to_opt
+%bcond_with move_to_opt
%endif
+%bcond_without tests
+
%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
%global pecl_name zip
@@ -40,13 +42,15 @@
Summary: A ZIP archive management extension
Name: %{?scl_prefix}php-pecl-zip
Version: %{upstream_version}%{?upstream_prever:~%{upstream_lower}}
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
-License: PHP
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+License: PHP-3.01
Group: Development/Languages
URL: https://pecl.php.net/package/zip
Source0: https://pecl.php.net/get/%{pecl_name}-%{upstream_version}%{?upstream_prever}.tgz
+Patch0: %{pecl_name}-php83.patch
+
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?scl_prefix}php-devel
@@ -77,7 +81,7 @@ Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version}
Provides: %{?scl_prefix}php-%{pecl_name} = 1:%{version}-%{release}
Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = 1:%{version}-%{release}
-%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
+%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel} == 7
# Other third party repo stuff
Obsoletes: php53-pecl-%{pecl_name} <= %{version}
Obsoletes: php53u-pecl-%{pecl_name} <= %{version}
@@ -111,12 +115,6 @@ Obsoletes: php73w-pecl-%{pecl_name} <= %{version}
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
-%if "%{php_version}" > "8.1"
-Obsoletes: php81-pecl-%{pecl_name} <= %{version}
-%endif
%endif
%if "%{php_version}" > "7.0"
@@ -142,6 +140,8 @@ sed -e 's/role="test"/role="src"/' \
-i package.xml
cd NTS
+%patch -P0 -p1
+
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_ZIP_VERSION/{s/.* "//;s/".*$//;p}' php7/php_zip.h)
if test "x${extver}" != "x%{upstream_version}%{?upstream_prever}" -a "x${extver}" != "x%{upstream_version}-%{?upstream_prever}"; then
@@ -283,6 +283,9 @@ fi
%changelog
+* Mon Jun 5 2023 Remi Collet <remi@remirepo.net> - 1.21.1-2
+- add upstream patches for 8.3
+
* Fri Sep 16 2022 Remi Collet <remi@remirepo.net> - 1.21.1-1
- update to 1.21.1
diff --git a/zip-php83.patch b/zip-php83.patch
new file mode 100644
index 0000000..238d6a1
--- /dev/null
+++ b/zip-php83.patch
@@ -0,0 +1,154 @@
+From 85624b566aa4f3c9d0e676fbc6127795e1f77f24 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Tue, 30 May 2023 17:00:32 +0200
+Subject: [PATCH] sync changes from 8.3
+
+---
+ php81/php_zip.c | 25 +++++++++++++++++--------
+ php81/php_zip.stub.php | 23 ++++++++++++++++++++++-
+ php81/php_zip_arginfo.h | 16 ++++++++++------
+ 3 files changed, 49 insertions(+), 15 deletions(-)
+
+diff --git a/php81/php_zip.c b/php81/php_zip.c
+index 1d7c7e9..4ba1319 100644
+--- a/php81/php_zip.c
++++ b/php81/php_zip.c
+@@ -39,6 +39,10 @@
+ #endif
+ #endif
+
++#if PHP_VERSION_ID < 80300
++#define zend_zval_value_name(opt) zend_zval_type_name(opt)
++#endif
++
+ /* {{{ Resource le */
+ static int le_zip_dir;
+ #define le_zip_dir_name "Zip Directory"
+@@ -354,7 +358,7 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "remove_all_path", sizeof("remove_all_path") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_FALSE && Z_TYPE_P(option) != IS_TRUE) {
+ php_error_docref(NULL, E_WARNING, "Option \"remove_all_path\" must be of type bool, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ }
+ opts->remove_all_path = zval_get_long(option);
+ }
+@@ -362,14 +366,14 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "comp_method", sizeof("comp_method") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_LONG) {
+ php_error_docref(NULL, E_WARNING, "Option \"comp_method\" must be of type int, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ }
+ opts->comp_method = zval_get_long(option);
+
+ if ((option = zend_hash_str_find(options, "comp_flags", sizeof("comp_flags") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_LONG) {
+ php_error_docref(NULL, E_WARNING, "Option \"comp_flags\" must be of type int, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ }
+ opts->comp_flags = zval_get_long(option);
+ }
+@@ -379,14 +383,14 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "enc_method", sizeof("enc_method") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_LONG) {
+ php_error_docref(NULL, E_WARNING, "Option \"enc_method\" must be of type int, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ }
+ opts->enc_method = zval_get_long(option);
+
+ if ((option = zend_hash_str_find(options, "enc_password", sizeof("enc_password") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_STRING) {
+ zend_type_error("Option \"enc_password\" must be of type string, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ return -1;
+ }
+ opts->enc_password = Z_STRVAL_P(option);
+@@ -397,7 +401,7 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "remove_path", sizeof("remove_path") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_STRING) {
+ zend_type_error("Option \"remove_path\" must be of type string, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ return -1;
+ }
+
+@@ -417,7 +421,7 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "add_path", sizeof("add_path") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_STRING) {
+ zend_type_error("Option \"add_path\" must be of type string, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ return -1;
+ }
+
+@@ -437,7 +441,7 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts)
+ if ((option = zend_hash_str_find(options, "flags", sizeof("flags") - 1)) != NULL) {
+ if (Z_TYPE_P(option) != IS_LONG) {
+ zend_type_error("Option \"flags\" must be of type int, %s given",
+- zend_zval_type_name(option));
++ zend_zval_value_name(option));
+ return -1;
+ }
+ opts->flags = Z_LVAL_P(option);
+@@ -1079,7 +1083,9 @@ static zend_object *php_zip_object_new(zend_class_entry *class_type) /* {{{ */
+ intern->prop_handler = &zip_prop_handlers;
+ zend_object_std_init(&intern->zo, class_type);
+ object_properties_init(&intern->zo, class_type);
++#if PHP_VERSION_ID < 80300
+ intern->zo.handlers = &zip_object_handlers;
++#endif
+ intern->last_id = -1;
+
+ return &intern->zo;
+@@ -3105,6 +3111,9 @@ static PHP_MINIT_FUNCTION(zip)
+
+ zip_class_entry = register_class_ZipArchive(zend_ce_countable);
+ zip_class_entry->create_object = php_zip_object_new;
++#if PHP_VERSION_ID >= 80300
++ zip_class_entry->default_object_handlers = &zip_object_handlers;
++#endif
+
+ zend_hash_init(&zip_prop_handlers, 0, NULL, php_zip_free_prop_handler, 1);
+ php_zip_register_prop_handler(&zip_prop_handlers, "lastId", php_zip_last_id, NULL, IS_LONG);
+From c26e4215686294971a13896e3da06312f4a18037 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Mon, 5 Jun 2023 16:31:35 +0200
+Subject: [PATCH] allow 8.3
+
+---
+ config.m4 | 4 ++--
+ config.w32 | 2 ++
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/config.m4 b/config.m4
+index 390108b..5d77eeb 100644
+--- a/config.m4
++++ b/config.m4
+@@ -27,8 +27,8 @@ if test "$PHP_ZIP" != "no"; then
+ elif test $PHP_VERSION -lt 80100; then
+ AC_MSG_RESULT(8.0)
+ subdir=php8
+- elif test $PHP_VERSION -lt 80300; then
+- AC_MSG_RESULT(8.1/8.2)
++ elif test $PHP_VERSION -lt 80400; then
++ AC_MSG_RESULT(8.1/8.2/8.3)
+ subdir=php81
+ else
+ AC_MSG_ERROR(PHP version $PHP_VERSION is not supported yet)
+diff --git a/config.w32 b/config.w32
+index 1d1c3e0..da42ba3 100644
+--- a/config.w32
++++ b/config.w32
+@@ -32,6 +32,8 @@ if (PHP_ZIP != "no") {
+ configure_module_dirname = configure_module_dirname + "\\php81";
+ } else if (PHP_VERSION == 8 && PHP_MINOR_VERSION == 2) {
+ configure_module_dirname = configure_module_dirname + "\\php81";
++ } else if (PHP_VERSION == 8 && PHP_MINOR_VERSION == 3) {
++ configure_module_dirname = configure_module_dirname + "\\php81";
+ } else {
+ ERROR("PHP " + PHP_VERSION + "." + PHP_MINOR_VERSION + " not supported");
+ }