[packages/php/PHP_8_1] Up to 8.1.29

arekm arekm at pld-linux.org
Tue Aug 6 09:30:59 CEST 2024


commit 1286b1831c3a84d236b290af0bcc38af06009094
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Tue Aug 6 09:30:46 2024 +0200

    Up to 8.1.29

 libxml.patch           | 205 +++++++++++++++++++++++++++++++++++++++++++++++++
 missing-includes.patch |  22 ------
 php.spec               |  12 ++-
 3 files changed, 210 insertions(+), 29 deletions(-)
---
diff --git a/php.spec b/php.spec
index 49ab89a..40b4cbe 100644
--- a/php.spec
+++ b/php.spec
@@ -148,8 +148,8 @@ Summary(pt_BR.UTF-8):	A linguagem de script PHP
 Summary(ru.UTF-8):	PHP - язык препроцессирования HTML-файлов, выполняемый на сервере
 Summary(uk.UTF-8):	PHP - мова препроцесування HTML-файлів, виконувана на сервері
 Name:		%{orgname}%{php_suffix}
-Version:	8.1.19
-Release:	7
+Version:	8.1.29
+Release:	1
 Epoch:		4
 # All files licensed under PHP version 3.01, except
 # Zend is licensed under Zend
@@ -157,7 +157,7 @@ Epoch:		4
 License:	PHP 3.01 and Zend and BSD
 Group:		Libraries
 Source0:	https://www.php.net/distributions/%{orgname}-%{version}.tar.xz
-# Source0-md5:	7a06e016b0af0af215a0d3a18f06e29d
+# Source0-md5:	eee68a22dde7e8024e1d528131a2c922
 Source1:	opcache.ini
 Source2:	%{orgname}-mod_php.conf
 Source3:	%{orgname}-cgi-fcgi.ini
@@ -180,7 +180,7 @@ Patch5:		openssl.patch
 Patch6:		opcache-nokill-perm.patch
 Patch7:		%{orgname}-sapi-ini-file.patch
 Patch8:		curl.patch
-
+Patch9:		libxml.patch
 Patch10:	%{orgname}-ini.patch
 Patch11:	embed.patch
 Patch14:	%{orgname}-no_pear_install.patch
@@ -206,7 +206,6 @@ Patch67:	mysql-lib-ver-mismatch.patch
 # https://bugs.php.net/bug.php?id=68344
 Patch68:	php-mysql-ssl-context.patch
 Patch71:	libdb-info.patch
-Patch72:	missing-includes.patch
 URL:		https://www.php.net/
 %{?with_pdo_firebird:%{!?with_interbase_inst:BuildRequires:	Firebird-devel >= 1.0.2.908-2}}
 %{?with_pspell:BuildRequires:	aspell-devel >= 2:0.50.0}
@@ -1880,7 +1879,7 @@ cp -p php.ini-production php.ini
 %patch6 -p1
 %patch7 -p1 -b .sapi-ini-file
 %patch8 -p1
-
+%patch9 -p1
 %patch10 -p1 -b .ini
 %patch14 -p1
 %patch18 -p1
@@ -1906,7 +1905,6 @@ cp -p php.ini-production php.ini
 %patch67 -p1 -b .mysql-lib-ver-mismatch
 #%patch68 -p1 DROP or update to 7.0 APIs
 %patch71 -p1 -b .libdb-info
-%patch72 -p1
 
 sed -E -i -e '1s,#!\s*/usr/bin/env\s+(.*),#!%{__bindir}\1,' \
       ext/ext_skel.php \
diff --git a/libxml.patch b/libxml.patch
new file mode 100644
index 0000000..53607db
--- /dev/null
+++ b/libxml.patch
@@ -0,0 +1,205 @@
+commit 0a39890c967aa57225bb6bdf4821aff7a3a3c082
+Author: Niels Dossche <7771979+nielsdos at users.noreply.github.com>
+Date:   Fri Dec 1 18:03:35 2023 +0100
+
+    Fix libxml2 2.12 build due to API breaks
+    
+    See https://github.com/php/php-src/actions/runs/7062192818/job/19225478601
+
+diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
+index 22eb1901b8..1de693892b 100644
+--- a/ext/libxml/libxml.c
++++ b/ext/libxml/libxml.c
+@@ -472,7 +472,11 @@ static void _php_libxml_free_error(void *ptr)
+ 	xmlResetError((xmlErrorPtr) ptr);
+ }
+ 
+-static void _php_list_set_error_structure(xmlErrorPtr error, const char *msg)
++#if LIBXML_VERSION >= 21200
++static void _php_list_set_error_structure(const xmlError *error, const char *msg)
++#else
++static void _php_list_set_error_structure(xmlError *error, const char *msg)
++#endif
+ {
+ 	xmlError error_copy;
+ 	int ret;
+@@ -725,7 +729,11 @@ PHP_LIBXML_API void php_libxml_ctx_warning(void *ctx, const char *msg, ...)
+ 	va_end(args);
+ }
+ 
++#if LIBXML_VERSION >= 21200
++PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, const xmlError *error)
++#else
+ PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, xmlErrorPtr error)
++#endif
+ {
+ 	_php_list_set_error_structure(error, NULL);
+ 
+@@ -957,11 +965,9 @@ PHP_FUNCTION(libxml_use_internal_errors)
+ /* {{{ Retrieve last error from libxml */
+ PHP_FUNCTION(libxml_get_last_error)
+ {
+-	xmlErrorPtr error;
+-
+ 	ZEND_PARSE_PARAMETERS_NONE();
+ 
+-	error = xmlGetLastError();
++	const xmlError *error = xmlGetLastError();
+ 
+ 	if (error) {
+ 		object_init_ex(return_value, libxmlerror_class_entry);
+diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
+index 749f5a5685..b731114775 100644
+--- a/ext/soap/php_sdl.c
++++ b/ext/soap/php_sdl.c
+@@ -332,7 +332,7 @@ static void load_wsdl_ex(zval *this_ptr, char *struri, sdlCtx *ctx, int include)
+ 	sdl_restore_uri_credentials(ctx);
+ 
+ 	if (!wsdl) {
+-		xmlErrorPtr xmlErrorPtr = xmlGetLastError();
++		const xmlError *xmlErrorPtr = xmlGetLastError();
+ 
+ 		if (xmlErrorPtr) {
+ 			soap_error2(E_ERROR, "Parsing WSDL: Couldn't load from '%s' : %s", struri, xmlErrorPtr->message);
+commit 4fe821311cafb18ca8bdf20b9d796c48a13ba552
+Author: Niels Dossche <7771979+nielsdos at users.noreply.github.com>
+Date:   Thu Jul 4 06:29:50 2024 -0700
+
+    Backport libxml2 2.13.2 fixes (#14816)
+    
+    Backproted from https://github.com/php/php-src/pull/14789
+
+diff --git a/ext/dom/document.c b/ext/dom/document.c
+index 38af4ca27c..516ffffae8 100644
+--- a/ext/dom/document.c
++++ b/ext/dom/document.c
+@@ -1292,11 +1292,13 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, size_t so
+ 	if (keep_blanks == 0 && ! (options & XML_PARSE_NOBLANKS)) {
+ 		options |= XML_PARSE_NOBLANKS;
+ 	}
++	if (recover) {
++		options |= XML_PARSE_RECOVER;
++	}
+ 
+ 	php_libxml_sanitize_parse_ctxt_options(ctxt);
+ 	xmlCtxtUseOptions(ctxt, options);
+ 
+-	ctxt->recovery = recover;
+ 	if (recover) {
+ 		old_error_reporting = EG(error_reporting);
+ 		EG(error_reporting) = old_error_reporting | E_WARNING;
+@@ -1306,7 +1308,7 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, size_t so
+ 
+ 	if (ctxt->wellFormed || recover) {
+ 		ret = ctxt->myDoc;
+-		if (ctxt->recovery) {
++		if (recover) {
+ 			EG(error_reporting) = old_error_reporting;
+ 		}
+ 		/* If loading from memory, set the base reference uri for the document */
+diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
+index 1de693892b..5f9749ffed 100644
+--- a/ext/libxml/libxml.c
++++ b/ext/libxml/libxml.c
+@@ -419,8 +419,10 @@ php_libxml_input_buffer_create_filename(const char *URI, xmlCharEncoding enc)
+ static xmlOutputBufferPtr
+ php_libxml_output_buffer_create_filename(const char *URI,
+                               xmlCharEncodingHandlerPtr encoder,
+-                              int compression ATTRIBUTE_UNUSED)
++                              int compression)
+ {
++	ZEND_IGNORE_VALUE(compression);
++
+ 	xmlOutputBufferPtr ret;
+ 	xmlURIPtr puri;
+ 	void *context = NULL;
+diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
+index c52677b6c6..82b21d1588 100644
+--- a/ext/soap/php_encoding.c
++++ b/ext/soap/php_encoding.c
+@@ -3374,7 +3374,6 @@ xmlNsPtr encode_add_ns(xmlNodePtr node, const char* ns)
+ 		} else {
+ 			smart_str prefix = {0};
+ 			int num = ++SOAP_GLOBAL(cur_uniq_ns);
+-			xmlChar *enc_ns;
+ 
+ 			while (1) {
+ 				smart_str_appendl(&prefix, "ns", 2);
+@@ -3388,9 +3387,15 @@ xmlNsPtr encode_add_ns(xmlNodePtr node, const char* ns)
+ 				num = ++SOAP_GLOBAL(cur_uniq_ns);
+ 			}
+ 
+-			enc_ns = xmlEncodeSpecialChars(node->doc, BAD_CAST(ns));
++			/* Starting with libxml 2.13, we don't have to do this workaround anymore, otherwise we get double-encoded
++			 * entities. See libxml2 commit f506ec66547ef9bac97a2bf306d368ecea8c0c9e. */
++#if LIBXML_VERSION < 21300
++			xmlChar *enc_ns = xmlEncodeSpecialChars(node->doc, BAD_CAST(ns));
+ 			xmlns = xmlNewNs(node->doc->children, enc_ns, BAD_CAST(prefix.s ? ZSTR_VAL(prefix.s) : ""));
+ 			xmlFree(enc_ns);
++#else
++			xmlns = xmlNewNs(node->doc->children, BAD_CAST(ns), BAD_CAST(prefix.s ? ZSTR_VAL(prefix.s) : ""));
++#endif
+ 			smart_str_free(&prefix);
+ 		}
+ 	}
+diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c
+index 3ff7aa055f..20fd91ac4b 100644
+--- a/ext/soap/php_xml.c
++++ b/ext/soap/php_xml.c
+@@ -92,13 +92,16 @@ xmlDocPtr soap_xmlParseFile(const char *filename)
+ 		bool old;
+ 
+ 		php_libxml_sanitize_parse_ctxt_options(ctxt);
++		/* TODO: In libxml2 2.14.0 change this to the new options API so we don't rely on deprecated APIs. */
++		
+ 		ctxt->keepBlanks = 0;
++		ctxt->options |= XML_PARSE_HUGE;
++		
+ 		ctxt->sax->ignorableWhitespace = soap_ignorableWhitespace;
+ 		ctxt->sax->comment = soap_Comment;
+ 		ctxt->sax->warning = NULL;
+ 		ctxt->sax->error = NULL;
+ 		/*ctxt->sax->fatalError = NULL;*/
+-		ctxt->options |= XML_PARSE_HUGE;
+ 		old = php_libxml_disable_entity_loader(1);
+ 		xmlParseDocument(ctxt);
+ 		php_libxml_disable_entity_loader(old);
+@@ -146,7 +149,10 @@ xmlDocPtr soap_xmlParseMemory(const void *buf, size_t buf_size)
+ 		ctxt->sax->warning = NULL;
+ 		ctxt->sax->error = NULL;
+ 		/*ctxt->sax->fatalError = NULL;*/
++		/* TODO: In libxml2 2.14.0 change this to the new options API so we don't rely on deprecated APIs. */
++		
+ 		ctxt->options |= XML_PARSE_HUGE;
++		
+ 		old = php_libxml_disable_entity_loader(1);
+ 		xmlParseDocument(ctxt);
+ 		php_libxml_disable_entity_loader(old);
+diff --git a/ext/xml/compat.c b/ext/xml/compat.c
+index 5c41e7d2f5..7b463ebb51 100644
+--- a/ext/xml/compat.c
++++ b/ext/xml/compat.c
+@@ -714,8 +714,7 @@ XML_GetCurrentByteCount(XML_Parser parser)
+ {
+ 	/* WARNING: this is identical to ByteIndex; it should probably
+ 	 * be different */
+-	return parser->parser->input->consumed +
+-			(parser->parser->input->cur - parser->parser->input->base);
++	return XML_GetCurrentByteIndex(parser);
+ }
+ 
+ PHP_XML_API const XML_Char *XML_ExpatVersion(void)
+diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c
+index df5bbe3555..d7ac7387b8 100644
+--- a/ext/xmlwriter/php_xmlwriter.c
++++ b/ext/xmlwriter/php_xmlwriter.c
+@@ -1004,7 +1004,8 @@ static void php_xmlwriter_flush(INTERNAL_FUNCTION_PARAMETERS, int force_string)
+ 		}
+ 		output_bytes = xmlTextWriterFlush(ptr);
+ 		if (buffer) {
+-			RETVAL_STRING((char *) buffer->content);
++			const xmlChar *content = xmlBufferContent(buffer);
++			RETVAL_STRING((const char *) content);
+ 			if (empty) {
+ 				xmlBufferEmpty(buffer);
+ 			}
diff --git a/missing-includes.patch b/missing-includes.patch
deleted file mode 100644
index 609b336..0000000
--- a/missing-includes.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -ur php-8.2.12.orig/ext/dom/document.c php-8.2.12/ext/dom/document.c
---- php-8.2.12.orig/ext/dom/document.c	2023-10-24 21:22:16.000000000 +0200
-+++ php-8.2.12/ext/dom/document.c	2023-11-23 21:35:57.407063192 +0100
-@@ -23,6 +23,7 @@
- #if defined(HAVE_LIBXML) && defined(HAVE_DOM)
- #include "php_dom.h"
- #include <libxml/SAX.h>
-+#include <libxml/xmlsave.h>
- #ifdef LIBXML_SCHEMAS_ENABLED
- #include <libxml/relaxng.h>
- #include <libxml/xmlschemas.h>
-diff -ur php-8.2.12.orig/ext/libxml/php_libxml.h php-8.2.12/ext/libxml/php_libxml.h
---- php-8.2.12.orig/ext/libxml/php_libxml.h	2023-10-24 21:22:16.000000000 +0200
-+++ php-8.2.12/ext/libxml/php_libxml.h	2023-11-23 21:35:57.407063192 +0100
-@@ -34,6 +34,7 @@
- #endif
- 
- #include "zend_smart_str.h"
-+#include <libxml/parser.h>
- #include <libxml/tree.h>
- 
- #define LIBXML_SAVE_NOEMPTYTAG 1<<2
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/php.git/commitdiff/1286b1831c3a84d236b290af0bcc38af06009094



More information about the pld-cvs-commit mailing list