Sync from SUSE:ALP:Source:Standard:1.0 libxml2 revision b463f39b28e90f5f8572834be5333426
This commit is contained in:
commit
686be55fb6
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
3
_multibuild
Normal file
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<flavor>python</flavor>
|
||||||
|
</multibuild>
|
6
baselibs.conf
Normal file
6
baselibs.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
libxml2-2
|
||||||
|
obsoletes "libxml2-<targettype> < <version>"
|
||||||
|
provides "libxml2-<targettype> = <version>"
|
||||||
|
libxml2-devel
|
||||||
|
requires -libxml2-<targettype>
|
||||||
|
requires "libxml2-2-<targettype> = <version>"
|
BIN
libxml2-2.11.6.tar.xz
(Stored with Git LFS)
Normal file
BIN
libxml2-2.11.6.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
29
libxml2-CVE-2023-39615.patch
Normal file
29
libxml2-CVE-2023-39615.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From d0c3f01e110d54415611c5fa0040cdf4a56053f9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||||
|
Date: Sat, 6 May 2023 17:47:37 +0200
|
||||||
|
Subject: [PATCH] parser: Fix old SAX1 parser with custom callbacks
|
||||||
|
|
||||||
|
For some reason, xmlCtxtUseOptionsInternal set the start and end element
|
||||||
|
SAX handlers to the internal DOM builder functions when XML_PARSE_SAX1
|
||||||
|
was specified. This means that custom SAX handlers could never work with
|
||||||
|
that flag because these functions would receive the wrong user data
|
||||||
|
argument and crash immediately.
|
||||||
|
|
||||||
|
Fixes #535.
|
||||||
|
---
|
||||||
|
parser.c | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
Index: libxml2-2.10.4/parser.c
|
||||||
|
===================================================================
|
||||||
|
--- libxml2-2.10.4.orig/parser.c
|
||||||
|
+++ libxml2-2.10.4/parser.c
|
||||||
|
@@ -15064,8 +15064,6 @@ xmlCtxtUseOptionsInternal(xmlParserCtxtP
|
||||||
|
}
|
||||||
|
#ifdef LIBXML_SAX1_ENABLED
|
||||||
|
if (options & XML_PARSE_SAX1) {
|
||||||
|
- ctxt->sax->startElement = xmlSAX2StartElement;
|
||||||
|
- ctxt->sax->endElement = xmlSAX2EndElement;
|
||||||
|
ctxt->sax->startElementNs = NULL;
|
||||||
|
ctxt->sax->endElementNs = NULL;
|
||||||
|
ctxt->sax->initialized = 1;
|
74
libxml2-CVE-2023-45322.patch
Normal file
74
libxml2-CVE-2023-45322.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
From d39f78069dff496ec865c73aa44d7110e429bce9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||||
|
Date: Wed, 23 Aug 2023 20:24:24 +0200
|
||||||
|
Subject: [PATCH] tree: Fix copying of DTDs
|
||||||
|
|
||||||
|
- Don't create multiple DTD nodes.
|
||||||
|
- Fix UAF if malloc fails.
|
||||||
|
- Skip DTD nodes if tree module is disabled.
|
||||||
|
|
||||||
|
Fixes #583.
|
||||||
|
---
|
||||||
|
tree.c | 31 ++++++++++++++++---------------
|
||||||
|
1 file changed, 16 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tree.c b/tree.c
|
||||||
|
index 6c8a875b9..02c1b5791 100644
|
||||||
|
--- a/tree.c
|
||||||
|
+++ b/tree.c
|
||||||
|
@@ -4471,29 +4471,28 @@ xmlNodePtr
|
||||||
|
xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
|
||||||
|
xmlNodePtr ret = NULL;
|
||||||
|
xmlNodePtr p = NULL,q;
|
||||||
|
+ xmlDtdPtr newSubset = NULL;
|
||||||
|
|
||||||
|
while (node != NULL) {
|
||||||
|
-#ifdef LIBXML_TREE_ENABLED
|
||||||
|
if (node->type == XML_DTD_NODE ) {
|
||||||
|
- if (doc == NULL) {
|
||||||
|
+#ifdef LIBXML_TREE_ENABLED
|
||||||
|
+ if ((doc == NULL) || (doc->intSubset != NULL)) {
|
||||||
|
node = node->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- if (doc->intSubset == NULL) {
|
||||||
|
- q = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr) node );
|
||||||
|
- if (q == NULL) goto error;
|
||||||
|
- q->doc = doc;
|
||||||
|
- q->parent = parent;
|
||||||
|
- doc->intSubset = (xmlDtdPtr) q;
|
||||||
|
- xmlAddChild(parent, q);
|
||||||
|
- } else {
|
||||||
|
- q = (xmlNodePtr) doc->intSubset;
|
||||||
|
- xmlAddChild(parent, q);
|
||||||
|
- }
|
||||||
|
- } else
|
||||||
|
+ q = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr) node );
|
||||||
|
+ if (q == NULL) goto error;
|
||||||
|
+ q->doc = doc;
|
||||||
|
+ q->parent = parent;
|
||||||
|
+ newSubset = (xmlDtdPtr) q;
|
||||||
|
+#else
|
||||||
|
+ node = node->next;
|
||||||
|
+ continue;
|
||||||
|
#endif /* LIBXML_TREE_ENABLED */
|
||||||
|
+ } else {
|
||||||
|
q = xmlStaticCopyNode(node, doc, parent, 1);
|
||||||
|
- if (q == NULL) goto error;
|
||||||
|
+ if (q == NULL) goto error;
|
||||||
|
+ }
|
||||||
|
if (ret == NULL) {
|
||||||
|
q->prev = NULL;
|
||||||
|
ret = p = q;
|
||||||
|
@@ -4505,6 +4504,8 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
|
||||||
|
}
|
||||||
|
node = node->next;
|
||||||
|
}
|
||||||
|
+ if (newSubset != NULL)
|
||||||
|
+ doc->intSubset = newSubset;
|
||||||
|
return(ret);
|
||||||
|
error:
|
||||||
|
xmlFreeNodeList(ret);
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
100
libxml2-make-XPATH_MAX_NODESET_LENGTH-configurable.patch
Normal file
100
libxml2-make-XPATH_MAX_NODESET_LENGTH-configurable.patch
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
xpath.c | 40 +++++++++++++++++++++++++++++-----------
|
||||||
|
1 file changed, 29 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
Index: libxml2-2.11.1/xpath.c
|
||||||
|
===================================================================
|
||||||
|
--- libxml2-2.11.1.orig/xpath.c
|
||||||
|
+++ libxml2-2.11.1/xpath.c
|
||||||
|
@@ -115,14 +115,32 @@
|
||||||
|
#define XPATH_MAX_STACK_DEPTH 1000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * XPATH_MAX_NODESET_LENGTH:
|
||||||
|
+ * XPATH_DEFAULT_MAX_NODESET_LENGTH:
|
||||||
|
* when evaluating an XPath expression nodesets are created and we
|
||||||
|
- * arbitrary limit the maximum length of those node set. 10000000 is
|
||||||
|
- * an insanely large value which should never be reached under normal
|
||||||
|
- * circumstances, one would first need to construct an in memory tree
|
||||||
|
+ * arbitrary limit the maximum length of those node set. Default value is
|
||||||
|
+ * 10000000, an insanely large value which should never be reached under
|
||||||
|
+ * normal circumstances, one would first need to construct an in memory tree
|
||||||
|
* with more than 10 millions nodes.
|
||||||
|
+ *
|
||||||
|
+ * Adjustable via LIBXML_MAX_NODESET_LENGTH env variable.
|
||||||
|
+ * Absolute maximum is INT_MAX.
|
||||||
|
*/
|
||||||
|
-#define XPATH_MAX_NODESET_LENGTH 10000000
|
||||||
|
+#define XPATH_DEFAULT_MAX_NODESET_LENGTH 10000000
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+get_max_nodeset_len() {
|
||||||
|
+ const char *max_nodeset_len_str = getenv("LIBXML_MAX_NODESET_LENGTH");
|
||||||
|
+ int max_nodeset_len = XPATH_DEFAULT_MAX_NODESET_LENGTH;
|
||||||
|
+
|
||||||
|
+ if (max_nodeset_len_str != NULL) {
|
||||||
|
+ max_nodeset_len = strtol(max_nodeset_len_str, NULL, 10);
|
||||||
|
+
|
||||||
|
+ if (max_nodeset_len <= 0 || max_nodeset_len > INT_MAX)
|
||||||
|
+ max_nodeset_len = XPATH_DEFAULT_MAX_NODESET_LENGTH;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return max_nodeset_len;
|
||||||
|
+}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPATH_MAX_RECRUSION_DEPTH:
|
||||||
|
@@ -3655,7 +3673,7 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur,
|
||||||
|
} else if (cur->nodeNr == cur->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (cur->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
@@ -3713,7 +3731,7 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xm
|
||||||
|
} else if (cur->nodeNr == cur->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (cur->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
@@ -3769,7 +3787,7 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr c
|
||||||
|
} else if (cur->nodeNr == cur->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (cur->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
@@ -3862,7 +3880,7 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1,
|
||||||
|
} else if (val1->nodeNr == val1->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (val1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (val1->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
@@ -3954,7 +3972,7 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetP
|
||||||
|
} else if (set1->nodeNr >= set1->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (set1->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
@@ -4015,7 +4033,7 @@ xmlXPathNodeSetMergeAndClearNoDupls(xmlN
|
||||||
|
} else if (set1->nodeNr >= set1->nodeMax) {
|
||||||
|
xmlNodePtr *temp;
|
||||||
|
|
||||||
|
- if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
|
||||||
|
+ if (set1->nodeMax >= get_max_nodeset_len()) {
|
||||||
|
xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
|
||||||
|
goto error;
|
||||||
|
}
|
28
libxml2-python3-string-null-check.patch
Normal file
28
libxml2-python3-string-null-check.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From 07b1c4c8a736a31ac4b8ae13ea25d50793dfea83 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mike Gorse <mgorse@alum.wpi.edu>
|
||||||
|
Date: Fri, 25 Jan 2019 12:55:52 -0600
|
||||||
|
Subject: [PATCH] python: return None if PY_IMPORT_STRING returns NULL
|
||||||
|
|
||||||
|
PY_IMPORT_STRING might return NULL on python 3 if, ie, a string can't be
|
||||||
|
encoded. We should check for this and return None, rather than returning
|
||||||
|
NULL. Fixes a NULL pointer dereference when reporting an error with an
|
||||||
|
invalid string.
|
||||||
|
---
|
||||||
|
python/types.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
Index: libxml2-2.10.3/python/types.c
|
||||||
|
===================================================================
|
||||||
|
--- libxml2-2.10.3.orig/python/types.c
|
||||||
|
+++ libxml2-2.10.3/python/types.c
|
||||||
|
@@ -274,6 +274,10 @@ libxml_charPtrConstWrap(const char *str)
|
||||||
|
return (Py_None);
|
||||||
|
}
|
||||||
|
ret = PY_IMPORT_STRING(str);
|
||||||
|
+ if (ret == NULL) {
|
||||||
|
+ Py_INCREF(Py_None);
|
||||||
|
+ return (Py_None);
|
||||||
|
+ }
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
38
libxml2-python3-unicode-errors.patch
Normal file
38
libxml2-python3-unicode-errors.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
python/libxml.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: libxml2-2.11.1/python/libxml.c
|
||||||
|
===================================================================
|
||||||
|
--- libxml2-2.11.1.orig/python/libxml.c
|
||||||
|
+++ libxml2-2.11.1/python/libxml.c
|
||||||
|
@@ -1606,6 +1606,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
|
||||||
|
PyObject *message;
|
||||||
|
PyObject *result;
|
||||||
|
char str[1000];
|
||||||
|
+ unsigned char *ptr = (unsigned char *)str;
|
||||||
|
|
||||||
|
#ifdef DEBUG_ERROR
|
||||||
|
printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg);
|
||||||
|
@@ -1622,12 +1623,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
|
||||||
|
str[999] = 0;
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ /* Ensure the error string doesn't start at UTF8 continuation. */
|
||||||
|
+ while (*ptr && (*ptr & 0xc0) == 0x80)
|
||||||
|
+ ptr++;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
list = PyTuple_New(2);
|
||||||
|
PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt);
|
||||||
|
Py_XINCREF(libxml_xmlPythonErrorFuncCtxt);
|
||||||
|
- message = libxml_charPtrConstWrap(str);
|
||||||
|
+ message = libxml_charPtrConstWrap(ptr);
|
||||||
|
PyTuple_SetItem(list, 1, message);
|
||||||
|
result = PyObject_CallObject(libxml_xmlPythonErrorFuncHandler, list);
|
||||||
|
+ /* Forget any errors caused in the error handler. */
|
||||||
|
+ PyErr_Clear();
|
||||||
|
Py_XDECREF(list);
|
||||||
|
Py_XDECREF(result);
|
||||||
|
}
|
2734
libxml2.changes
Normal file
2734
libxml2.changes
Normal file
File diff suppressed because it is too large
Load Diff
271
libxml2.spec
Normal file
271
libxml2.spec
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
#
|
||||||
|
# spec file
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%define base_name libxml2
|
||||||
|
%define libname libxml2-2
|
||||||
|
%define flavor @BUILD_FLAVOR@%nil
|
||||||
|
%if "%{flavor}" == "python"
|
||||||
|
%define dash -
|
||||||
|
%define buildpython 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Name: libxml2%{?dash}%{flavor}
|
||||||
|
Version: 2.11.6
|
||||||
|
Release: 0
|
||||||
|
License: MIT
|
||||||
|
Summary: A Library to Manipulate XML Files
|
||||||
|
URL: https://gitlab.gnome.org/GNOME/libxml2
|
||||||
|
Source0: https://download.gnome.org/sources/%{name}/2.11/libxml2-%{version}.tar.xz
|
||||||
|
Source1: baselibs.conf
|
||||||
|
# W3C Conformance tests
|
||||||
|
Source2: https://www.w3.org/XML/Test/xmlts20080827.tar.gz
|
||||||
|
|
||||||
|
### -- Upstream patches range from 0 to 999 -- ###
|
||||||
|
# PATCH-FIX-UPSTREAM libxml2-python3-unicode-errors.patch bsc#1064286 mcepl@suse.com
|
||||||
|
# remove segfault after doc.freeDoc()
|
||||||
|
Patch0: libxml2-python3-unicode-errors.patch
|
||||||
|
# PATCH-FIX-UPSTREAM libxml2-python3-string-null-check.patch bsc#1065270 mgorse@suse.com
|
||||||
|
# https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/15
|
||||||
|
Patch1: libxml2-python3-string-null-check.patch
|
||||||
|
# PATCH-FIX-UPSTREAM CVE-2023-39615 bsc#1214768
|
||||||
|
# https://gitlab.gnome.org/GNOME/libxml2/-/commit/d0c3f01e110d54415611c5fa0040cdf4a56053f9
|
||||||
|
Patch2: libxml2-CVE-2023-39615.patch
|
||||||
|
# PATCH-FIX-UPSTREAM python312.patch
|
||||||
|
# https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/226
|
||||||
|
Patch3: python312.patch
|
||||||
|
# PATCH-FIX-UPSTREAM CVE-2023-45322 bsc#1216129
|
||||||
|
# https://gitlab.gnome.org/GNOME/libxml2/-/commit/d39f78069dff496ec865c73aa44d7110e429bce9
|
||||||
|
Patch4: libxml2-CVE-2023-45322.patch
|
||||||
|
#
|
||||||
|
### -- openSUSE patches range from 1000 to 1999 -- ###
|
||||||
|
# PATCH-FIX-OPENSUSE
|
||||||
|
#Patch1000:
|
||||||
|
#
|
||||||
|
### -- SUSE patches starts from 2000 -- ###
|
||||||
|
## TODO -- Is libxml2-make-XPATH_MAX_NODESET_LENGTH-configurable.patch really
|
||||||
|
## SUSE-specific? If so, shouldn't it be applied only for SLE distributions?
|
||||||
|
# PATCH-FIX-SUSE bsc#1135123 Added a new configurable variable XPATH_DEFAULT_MAX_NODESET_LENGTH to avoid nodeset limit
|
||||||
|
Patch2000: libxml2-make-XPATH_MAX_NODESET_LENGTH-configurable.patch
|
||||||
|
#
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: readline-devel
|
||||||
|
BuildRequires: pkgconfig(liblzma)
|
||||||
|
BuildRequires: pkgconfig(zlib)
|
||||||
|
%if 0%{?buildpython}
|
||||||
|
BuildRequires: %{python_module devel}
|
||||||
|
BuildRequires: %{python_module pip}
|
||||||
|
BuildRequires: %{python_module setuptools}
|
||||||
|
BuildRequires: %{python_module wheel}
|
||||||
|
BuildRequires: %{python_module xml}
|
||||||
|
BuildRequires: python-rpm-macros
|
||||||
|
BuildRequires: pkgconfig(libxml-2.0)
|
||||||
|
# TW: generate subpackages for every python3 flavor
|
||||||
|
%define python_subpackage_only 1
|
||||||
|
%python_subpackages
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
The XML C library was initially developed for the GNOME project. It is
|
||||||
|
now used by many programs to load and save extensible data structures
|
||||||
|
or manipulate any kind of XML files.
|
||||||
|
|
||||||
|
%package -n %{libname}
|
||||||
|
Summary: A Library to Manipulate XML Files
|
||||||
|
|
||||||
|
%description -n %{libname}
|
||||||
|
The XML C library was initially developed for the GNOME project. It is
|
||||||
|
now used by many programs to load and save extensible data structures
|
||||||
|
or manipulate any kind of XML files.
|
||||||
|
|
||||||
|
This library implements a number of existing standards related to
|
||||||
|
markup languages, including the XML standard, name spaces in XML, XML
|
||||||
|
Base, RFC 2396, XPath, XPointer, HTML4, XInclude, SGML catalogs, and
|
||||||
|
XML catalogs. In most cases, libxml tries to implement the
|
||||||
|
specification in a rather strict way. To some extent, it provides
|
||||||
|
support for the following specifications, but does not claim to
|
||||||
|
implement them: DOM, FTP client, HTTP client, and SAX.
|
||||||
|
|
||||||
|
The library also supports RelaxNG. Support for W3C XML Schemas is in
|
||||||
|
progress.
|
||||||
|
|
||||||
|
%package tools
|
||||||
|
Summary: Tools using libxml
|
||||||
|
Provides: %{base_name} = %{version}-%{release}
|
||||||
|
# Use hardcoded version to avoid unwanted behavior in the future.
|
||||||
|
Obsoletes: %{base_name} < 2.9.13
|
||||||
|
|
||||||
|
%description tools
|
||||||
|
This package contains xmllint, a very useful tool proving libxml's power.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for libxml2, an XML manipulation library
|
||||||
|
Requires: %{base_name} = %{version}
|
||||||
|
Requires: %{base_name}-tools = %{version}
|
||||||
|
Requires: %{libname} = %{version}
|
||||||
|
Requires: glibc-devel
|
||||||
|
Requires: libxml2 = %{version}
|
||||||
|
Requires: readline-devel
|
||||||
|
Requires: xz-devel
|
||||||
|
Requires: pkgconfig(liblzma)
|
||||||
|
Requires: pkgconfig(zlib)
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
The XML C library can load and save extensible data structures
|
||||||
|
or manipulate any kind of XML files.
|
||||||
|
|
||||||
|
This subpackage contains header files for developing
|
||||||
|
applications that want to make use of libxml.
|
||||||
|
|
||||||
|
%package doc
|
||||||
|
Summary: Documentation for libxml, an XML manipulation library
|
||||||
|
Requires: %{libname} = %{version}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc
|
||||||
|
The XML C library was initially developed for the GNOME project. It is
|
||||||
|
now used by many programs to load and save extensible data structures
|
||||||
|
or manipulate any kind of XML files.
|
||||||
|
|
||||||
|
%package -n python-libxml2
|
||||||
|
Summary: Python Bindings for %{name}
|
||||||
|
Requires: %{libname} = %{version}
|
||||||
|
Requires: python-extras
|
||||||
|
Provides: %{base_name}-python = %{version}-%{release}
|
||||||
|
Provides: python-libxml2-python = %{version}-%{release}
|
||||||
|
# Use hardcoded version to avoid unwanted behavior in the future.
|
||||||
|
Obsoletes: %{base_name}-python < 2.9.13
|
||||||
|
Obsoletes: python-libxml2-python < 2.9.13
|
||||||
|
|
||||||
|
%description -n python-libxml2
|
||||||
|
This package contains a module that permits
|
||||||
|
applications written in the Python programming language to use the
|
||||||
|
interface supplied by the libxml2 library to manipulate XML files.
|
||||||
|
|
||||||
|
This library allows manipulation of XML files. It includes support for
|
||||||
|
reading, modifying, and writing XML and HTML files. There is DTD
|
||||||
|
support that includes parsing and validation even with complex DTDs,
|
||||||
|
either at parse time or later once the document has been modified.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n libxml2-%{version}
|
||||||
|
sed -i '1 s|/usr/bin/env python|/usr/bin/python3|' doc/apibuild.py
|
||||||
|
|
||||||
|
%build
|
||||||
|
%if ! 0%{?buildpython}
|
||||||
|
# TODO -- Document why are we using the -fno-strict-aliasing extra flag.
|
||||||
|
export CFLAGS="%{optflags} -fno-strict-aliasing"
|
||||||
|
%configure \
|
||||||
|
--disable-silent-rules \
|
||||||
|
--disable-static \
|
||||||
|
--docdir=%{_docdir}/%{base_name} \
|
||||||
|
--with-html-dir=%{_docdir}/%{base_name}/html \
|
||||||
|
--without-python \
|
||||||
|
--with-fexceptions \
|
||||||
|
--with-history \
|
||||||
|
--enable-ipv6 \
|
||||||
|
--with-sax1 \
|
||||||
|
--with-regexps \
|
||||||
|
--with-threads \
|
||||||
|
--with-reader \
|
||||||
|
--with-ftp \
|
||||||
|
--with-http \
|
||||||
|
--with-legacy
|
||||||
|
|
||||||
|
%make_build BASE_DIR="%{_docdir}" DOC_MODULE="%{base_name}"
|
||||||
|
%else
|
||||||
|
%configure --with-python=%{__python3}
|
||||||
|
pushd python
|
||||||
|
export PYTHONPATH="."
|
||||||
|
%pyproject_wheel
|
||||||
|
popd
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%install
|
||||||
|
%if ! 0%{?buildpython}
|
||||||
|
%make_install BASE_DIR="%{_docdir}" DOC_MODULE="%{base_name}"
|
||||||
|
find %{buildroot} -type f -name "*.la" -delete -print
|
||||||
|
mkdir -p "%{buildroot}/%{_docdir}/%{base_name}"
|
||||||
|
cp -a NEWS README.md %{buildroot}%{_docdir}/%{base_name}/
|
||||||
|
ln -s libxml2/libxml %{buildroot}%{_includedir}/libxml
|
||||||
|
# Remove duplicated file Copyright as not found by fdupes
|
||||||
|
rm -fr %{buildroot}%{_docdir}/%{base_name}/Copyright
|
||||||
|
%fdupes %{buildroot}%{_datadir}
|
||||||
|
%else
|
||||||
|
pushd python
|
||||||
|
%pyproject_install
|
||||||
|
popd
|
||||||
|
chmod a-x python/tests/*.py
|
||||||
|
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if ! 0%{?buildpython}
|
||||||
|
%check
|
||||||
|
# qemu-arm can't keep up atm, disabling check for arm
|
||||||
|
%ifnarch %{arm}
|
||||||
|
tar xzvf %{SOURCE2} # add conformance tests where they are expected
|
||||||
|
%make_build check
|
||||||
|
rm -rf xmlconf/ # remove the conformance tests afterwards
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ldconfig_scriptlets -n %{libname}
|
||||||
|
|
||||||
|
%files -n %{libname}
|
||||||
|
%{_libdir}/lib*.so.*
|
||||||
|
%license Copyright
|
||||||
|
%doc %dir %{_docdir}/%{base_name}
|
||||||
|
%doc %{_docdir}/%{base_name}/[ANRCT]*
|
||||||
|
|
||||||
|
# the -n %%base_name tag is necessary so that python_subpackages does not interfere
|
||||||
|
%files -n %{base_name}-tools
|
||||||
|
%{_bindir}/xmllint
|
||||||
|
%{_bindir}/xmlcatalog
|
||||||
|
%{_mandir}/man1/xmllint.1%{?ext_man}
|
||||||
|
%{_mandir}/man1/xmlcatalog.1%{?ext_man}
|
||||||
|
|
||||||
|
%files -n %{base_name}-devel
|
||||||
|
%{_bindir}/xml2-config
|
||||||
|
%dir %{_datadir}/aclocal
|
||||||
|
%{_datadir}/aclocal/libxml.m4
|
||||||
|
%{_includedir}/libxml
|
||||||
|
%{_includedir}/libxml2
|
||||||
|
%{_libdir}/lib*.so
|
||||||
|
%{_libdir}/pkgconfig/*.pc
|
||||||
|
%{_libdir}/cmake
|
||||||
|
%{_mandir}/man1/xml2-config.1%{?ext_man}
|
||||||
|
|
||||||
|
%files -n %{base_name}-doc
|
||||||
|
%{_datadir}/gtk-doc/html/*
|
||||||
|
%doc %{_docdir}/%{base_name}/examples
|
||||||
|
%doc %{_docdir}/%{base_name}/tutorial
|
||||||
|
%doc %{_docdir}/%{base_name}/*.html
|
||||||
|
# owning these directories prevents gtk-doc <-> libxml2 build loop:
|
||||||
|
%dir %{_datadir}/gtk-doc
|
||||||
|
%dir %{_datadir}/gtk-doc/html
|
||||||
|
|
||||||
|
%else
|
||||||
|
|
||||||
|
%files %{python_files libxml2}
|
||||||
|
%doc python/libxml2class.txt
|
||||||
|
%doc doc/*.py
|
||||||
|
%doc python/README
|
||||||
|
%pycache_only %{python_sitearch}/__pycache__/*libxml2*
|
||||||
|
%{python_sitearch}/*libxml2*
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
54
python312.patch
Normal file
54
python312.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
From 548bba106dca7905b6ca915ef58481b3d71f35d8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
|
||||||
|
Date: Mon, 23 Oct 2023 10:16:34 +0200
|
||||||
|
Subject: [PATCH] python: Make it compatible with python3.12
|
||||||
|
|
||||||
|
Python 3.12 removes distutils so it's mandatory to use setuptools with
|
||||||
|
python >= 3.12.
|
||||||
|
|
||||||
|
This patch prints a message when trying to run the setup.py script with
|
||||||
|
a python >= 3.12 without setuptools and try to use the setuptools import
|
||||||
|
by default.
|
||||||
|
|
||||||
|
This patch also creates a new file, pyproject.toml [1], to prepare for
|
||||||
|
building in modern systems.
|
||||||
|
|
||||||
|
[1] https://peps.python.org/pep-0517/
|
||||||
|
---
|
||||||
|
python/pyproject.toml | 3 +++
|
||||||
|
python/setup.py.in | 12 ++++++++----
|
||||||
|
4 files changed, 13 insertions(+), 5 deletions(-)
|
||||||
|
create mode 100755 python/pyproject.toml.in
|
||||||
|
|
||||||
|
Index: libxml2-2.11.5/python/setup.py.in
|
||||||
|
===================================================================
|
||||||
|
--- libxml2-2.11.5.orig/python/setup.py.in
|
||||||
|
+++ libxml2-2.11.5/python/setup.py.in
|
||||||
|
@@ -5,11 +5,15 @@
|
||||||
|
import sys, os
|
||||||
|
|
||||||
|
try:
|
||||||
|
- import setuptools
|
||||||
|
+ from setuptools import setup, Extension
|
||||||
|
except ImportError:
|
||||||
|
- pass
|
||||||
|
-
|
||||||
|
-from distutils.core import setup, Extension
|
||||||
|
+ try:
|
||||||
|
+ # Using distutils, for python < 3.12
|
||||||
|
+ from distutils.core import setup, Extension
|
||||||
|
+ except ImportError:
|
||||||
|
+ # distutils is not present in python 3.12 and greater
|
||||||
|
+ print("setuptools is required for python >= 3.12")
|
||||||
|
+ sys.exit(1)
|
||||||
|
|
||||||
|
# Below ROOT, we expect to find include, include/libxml2, lib and bin.
|
||||||
|
# On *nix, it is not needed (but should not harm),
|
||||||
|
Index: libxml2-2.11.5/python/pyproject.toml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ libxml2-2.11.5/python/pyproject.toml
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+[build-system]
|
||||||
|
+requires = ["setuptools"]
|
||||||
|
+build-backend = "setuptools.build_meta"
|
BIN
xmlts20080827.tar.gz
(Stored with Git LFS)
Normal file
BIN
xmlts20080827.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user