postgresql: Fix build with libxml2 2.12
libxml 2.12.0 made the error argument of xmlStructuredErrorFunc const resulting in -Wincompatible-function-pointer-types error with CLang 16 and GCC 14. https://gitlab.gnome.org/GNOME/libxml2/-/commit/61034116d0a3c8b295c6137956adc3ae55720711
This commit is contained in:
@@ -109,6 +109,17 @@ let
|
||||
./patches/specify_pkglibdir_at_runtime.patch
|
||||
./patches/findstring.patch
|
||||
|
||||
# Fix build with libxml2 2.12.0 and -Wincompatible-function-pointer-types
|
||||
(if atLeast "16" then
|
||||
# https://www.postgresql.org/message-id/CACpMh%2BDMZVHM%2BiDSyqdcpK8sr7jd_HxxLJRNvGTzcLBE0W07QA%40mail.gmail.com
|
||||
fetchurl {
|
||||
url = "https://www.postgresql.org/message-id/attachment/152769/v1-0001-Make-PostgreSQL-work-with-newer-version-of-libxml.patch";
|
||||
hash = "sha256-1j5mtG++hFmYwfS98PdN1SmNI4T86q4FXvKLz2VeJyg=";
|
||||
}
|
||||
else
|
||||
./patches/libxml2.12-15.patch
|
||||
)
|
||||
|
||||
(substituteAll {
|
||||
src = ./locale-binary-path.patch;
|
||||
locale = "${if stdenv.isDarwin then darwin.adv_cmds else lib.getBin stdenv.cc.libc}/bin/locale";
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
|
||||
index 6411f56b998..0eb39fcfc26 100644
|
||||
--- a/src/backend/utils/adt/xml.c
|
||||
+++ b/src/backend/utils/adt/xml.c
|
||||
@@ -119,7 +119,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, const xmlError *error);
|
||||
static void xml_ereport_by_code(int level, int sqlcode,
|
||||
const char *msg, int errcode);
|
||||
static void chopStringInfoNewlines(StringInfo str);
|
||||
@@ -1749,7 +1749,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, const xmlError *error)
|
||||
{
|
||||
PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data;
|
||||
xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt;
|
||||
Reference in New Issue
Block a user