summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron W. Swenson <titanofold@gentoo.org>2024-02-03 23:57:50 -0500
committerAaron W. Swenson <titanofold@gentoo.org>2024-02-04 00:02:08 -0500
commit9a3b10c4e499a87fafd6e2df9c9f87469451014b (patch)
tree08e0107024a120ed9484e55bfae7beda75a19506 /dev-db/postgresql/files/postgresql-13-xml-2.12.patch
parentdev-util/kernelshark: fix trace-cmd dep (diff)
downloadgentoo-9a3b10c4e499a87fafd6e2df9c9f87469451014b.tar.gz
gentoo-9a3b10c4e499a87fafd6e2df9c9f87469451014b.tar.bz2
gentoo-9a3b10c4e499a87fafd6e2df9c9f87469451014b.zip
dev-db/postgresql: Fix builind with libxml-2.12
Closes: https://bugs.gentoo.org/923055 Signed-off-by: Aaron W. Swenson <titanofold@gentoo.org>
Diffstat (limited to 'dev-db/postgresql/files/postgresql-13-xml-2.12.patch')
-rw-r--r--dev-db/postgresql/files/postgresql-13-xml-2.12.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/dev-db/postgresql/files/postgresql-13-xml-2.12.patch b/dev-db/postgresql/files/postgresql-13-xml-2.12.patch
new file mode 100644
index 000000000000..a8daa6e7ce2f
--- /dev/null
+++ b/dev-db/postgresql/files/postgresql-13-xml-2.12.patch
@@ -0,0 +1,83 @@
+From 7c53b1977ba6bed81deca3164c17e61f10725226 Mon Sep 17 00:00:00 2001
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Mon, 29 Jan 2024 12:06:08 -0500
+Subject: [PATCH] Fix incompatibilities with libxml2 >= 2.12.0.
+
+libxml2 changed the required signature of error handler callbacks
+to make the passed xmlError struct "const". This is causing build
+failures on buildfarm member caiman, and no doubt will start showing
+up in the field quite soon. Add a version check to adjust the
+declaration of xml_errorHandler() according to LIBXML_VERSION.
+
+2.12.x also produces deprecation warnings for contrib/xml2/xpath.c's
+assignment to xmlLoadExtDtdDefaultValue. I see no good reason for
+that to still be there, seeing that we disabled external DTDs (at a
+lower level) years ago for security reasons. Let's just remove it.
+
+Back-patch to all supported branches, since they might all get built
+with newer libxml2 once it gets a bit more popular. (The back
+branches produce another deprecation warning about xpath.c's use of
+xmlSubstituteEntitiesDefault(). We ought to consider whether to
+back-patch all or part of commit 65c5864d7 to silence that. It's
+less urgent though, since it won't break the buildfarm.)
+
+Discussion: https://postgr.es/m/1389505.1706382262@sss.pgh.pa.us
+---
+ contrib/xml2/xpath.c | 1 -
+ src/backend/utils/adt/xml.c | 14 ++++++++++++--
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c
+index 1e5b71d9a0..f44caf0020 100644
+--- a/contrib/xml2/xpath.c
++++ b/contrib/xml2/xpath.c
+@@ -75,7 +75,6 @@ pgxml_parser_init(PgXmlStrictness strictness)
+ xmlInitParser();
+
+ xmlSubstituteEntitiesDefault(1);
+- xmlLoadExtDtdDefaultValue = 1;
+
+ return xmlerrcxt;
+ }
+diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
+index 7fc9669fb0..febe0a6220 100644
+--- a/src/backend/utils/adt/xml.c
++++ b/src/backend/utils/adt/xml.c
+@@ -65,6 +65,16 @@
+ #if LIBXML_VERSION >= 20704
+ #define HAVE_XMLSTRUCTUREDERRORCONTEXT 1
+ #endif
++
++/*
++ * libxml2 2.12 decided to insert "const" into the error handler API.
++ */
++#if LIBXML_VERSION >= 21200
++#define PgXmlErrorPtr const xmlError *
++#else
++#define PgXmlErrorPtr xmlErrorPtr
++#endif
++
+ #endif /* USE_LIBXML */
+
+ #include "access/htup_details.h"
+@@ -119,7 +129,7 @@ struct PgXmlErrorContext
+
+ static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID,
+ xmlParserCtxtPtr ctxt);
+-static void xml_errorHandler(void *data, xmlErrorPtr error);
++static void xml_errorHandler(void *data, PgXmlErrorPtr error);
+ static void xml_ereport_by_code(int level, int sqlcode,
+ const char *msg, int errcode);
+ static void chopStringInfoNewlines(StringInfo str);
+@@ -1750,7 +1760,7 @@ xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg)
+ * Error handler for libxml errors and warnings
+ */
+ static void
+-xml_errorHandler(void *data, xmlErrorPtr error)
++xml_errorHandler(void *data, PgXmlErrorPtr error)
+ {
+ PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data;
+ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt;
+--
+2.30.2
+