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