aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Cerutti <gahr@FreeBSD.org>2024-07-01 06:39:47 +0000
committerPietro Cerutti <gahr@FreeBSD.org>2024-07-01 06:49:49 +0000
commitaf36765e17ba36d0e86e95d4476b67f894209468 (patch)
treea635b50a7d26cc147354267d24bf7ee4b74eefd6
parent22fa49cbda4b45cae35faaa7973992ef81a224f3 (diff)
downloadports-af36765e17ba36d0e86e95d4476b67f894209468.tar.gz
ports-af36765e17ba36d0e86e95d4476b67f894209468.zip
devel/tclxml: fix build with libxml2 >= 2.12
Version 2.12 of libxml2 introduced a backwards incompatible change in the signature of some functions, notably the second argument to xmlStructuredErrorFunc has gained a const qualifier, changing from `xmlError *error` to `const xmlError *error`. To make the signatures compatible with both pre- and post-2.12, I have introduced a check on LIBXML_VERSION. PR: 279968 Reported by: dizzy
-rw-r--r--devel/tclxml/Makefile2
-rw-r--r--devel/tclxml/files/patch-Makefile.in13
-rw-r--r--devel/tclxml/files/patch-configure19
-rw-r--r--devel/tclxml/files/patch-docObj.c19
-rw-r--r--devel/tclxml/files/patch-include_tclxml-libxml2_tclxml-libxml2Decls.h31
-rw-r--r--devel/tclxml/files/patch-tclxml.c11
6 files changed, 90 insertions, 5 deletions
diff --git a/devel/tclxml/Makefile b/devel/tclxml/Makefile
index 5a8b0cc25bf3..5e4a3caeb2a4 100644
--- a/devel/tclxml/Makefile
+++ b/devel/tclxml/Makefile
@@ -1,6 +1,6 @@
PORTNAME= tclxml
PORTVERSION= 3.3
-PORTREVISION= 8
+PORTREVISION= 9
CATEGORIES= devel tcl
MASTER_SITES= LOCAL/bf SF/tclxml/TclXML/${PORTVERSION}
diff --git a/devel/tclxml/files/patch-Makefile.in b/devel/tclxml/files/patch-Makefile.in
index 60196004f4ba..48402ef0711f 100644
--- a/devel/tclxml/files/patch-Makefile.in
+++ b/devel/tclxml/files/patch-Makefile.in
@@ -1,6 +1,17 @@
--- Makefile.in.orig 2013-03-30 17:17:07 UTC
+++ Makefile.in
-@@ -423,13 +423,15 @@
+@@ -136,10 +136,6 @@ TCLLIBPATH = $(top_builddir)
+ EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR)
+ #EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR):$(TK_BIN_DIR)
+ TCLLIBPATH = $(top_builddir)
+-TCLSH_ENV = TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` \
+- @LD_LIBRARY_PATH_VAR@="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \
+- PATH="$(EXTRA_PATH):$(PATH)" \
+- TCLLIBPATH="$(TCLLIBPATH)"
+ # TK_LIBRARY=`@CYGPATH@ $(TK_SRC_DIR)/library`
+
+ TCLSH_PROG = @TCLSH_PROG@
+@@ -423,13 +419,15 @@ install-lib-binaries:
@mkdir -p $(DESTDIR)$(pkglibdir)
@list='$(lib_BINARIES)'; for p in $$list; do \
if test -f $$p; then \
diff --git a/devel/tclxml/files/patch-configure b/devel/tclxml/files/patch-configure
index c001f6a49e71..7ec514208aa8 100644
--- a/devel/tclxml/files/patch-configure
+++ b/devel/tclxml/files/patch-configure
@@ -1,7 +1,11 @@
---- configure.orig 2022-03-16 21:59:50 UTC
+--- configure.orig 2013-03-30 17:17:07 UTC
+++ configure
-@@ -8580,14 +8580,14 @@ echo "${ECHO_T}$tcl_cv_ld_elf" >&6; }
- FreeBSD-*|DragonFly-*)
+@@ -8577,17 +8577,17 @@ echo "${ECHO_T}$tcl_cv_ld_elf" >&6; }
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+- FreeBSD-*)
++ FreeBSD-*|DragonFly-*)
# FreeBSD 3.* and greater have ELF.
SHLIB_CFLAGS="-fPIC"
- SHLIB_LD="ld -Bshareable -x"
@@ -18,3 +22,12 @@
if test "${TCL_THREADS}" = "1" ; then
# The -pthread needs to go in the CFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
+@@ -9267,7 +9267,7 @@ fi
+ ;;
+ IRIX*)
+ ;;
+- NetBSD-*|FreeBSD-*)
++ NetBSD-*|FreeBSD-*|DragonFly-*)
+ ;;
+ Darwin-*)
+ ;;
diff --git a/devel/tclxml/files/patch-docObj.c b/devel/tclxml/files/patch-docObj.c
new file mode 100644
index 000000000000..59f57bf2fedf
--- /dev/null
+++ b/devel/tclxml/files/patch-docObj.c
@@ -0,0 +1,19 @@
+--- docObj.c.orig 2013-03-30 17:17:07 UTC
++++ docObj.c
+@@ -1852,9 +1852,13 @@ void
+ }
+
+ void
+-TclXML_libxml2_ErrorHandler (ctx, error)
+- void *ctx; /* ignore - depends on context */
+- xmlErrorPtr error;
++TclXML_libxml2_ErrorHandler (void *ctx,
++#if LIBXML_VERSION >= 21200
++ const xmlError *error
++#else
++ xmlError *error
++#endif
++ )
+ {
+ ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+ Tcl_Obj *objPtr;
diff --git a/devel/tclxml/files/patch-include_tclxml-libxml2_tclxml-libxml2Decls.h b/devel/tclxml/files/patch-include_tclxml-libxml2_tclxml-libxml2Decls.h
new file mode 100644
index 000000000000..2e8371bf6421
--- /dev/null
+++ b/devel/tclxml/files/patch-include_tclxml-libxml2_tclxml-libxml2Decls.h
@@ -0,0 +1,31 @@
+--- include/tclxml-libxml2/tclxml-libxml2Decls.h.orig 2013-03-30 17:17:07 UTC
++++ include/tclxml-libxml2/tclxml-libxml2Decls.h
+@@ -55,7 +55,12 @@ EXTERN void TclXML_libxml2_ErrorHandler _ANSI_ARGS_((
+ TclXML_libxml2_DocumentHandling keep));
+ /* 10 */
+ EXTERN void TclXML_libxml2_ErrorHandler _ANSI_ARGS_((void * ctx,
+- xmlErrorPtr error));
++#if LIBXML_VERSION >= 21200
++ const xmlError *error));
++#else
++ xmlError *error));
++#endif
++
+ /* 11 */
+ EXTERN void TclXML_libxml2_ResetError _ANSI_ARGS_((
+ Tcl_Interp * interp));
+@@ -93,7 +98,13 @@ typedef struct Tclxml_libxml2Stubs {
+ int (*tclXML_libxml2_GetTclDocFromNode) _ANSI_ARGS_((Tcl_Interp * interp, xmlNodePtr nodePtr, TclXML_libxml2_Document ** tDocPtrPtr)); /* 7 */
+ void (*tclXML_libxml2_DestroyDocument) _ANSI_ARGS_((TclXML_libxml2_Document * tDocPtr)); /* 8 */
+ void (*tclXML_libxml2_DocKeep) _ANSI_ARGS_((Tcl_Obj * objPtr, TclXML_libxml2_DocumentHandling keep)); /* 9 */
+- void (*tclXML_libxml2_ErrorHandler) _ANSI_ARGS_((void * ctx, xmlErrorPtr error)); /* 10 */
++ void (*tclXML_libxml2_ErrorHandler) _ANSI_ARGS_((void * ctx,
++#if LIBXML_VERSION >= 21200
++ const xmlError * error
++#else
++ xmlError * error
++#endif
++ )); /* 10 */
+ void (*tclXML_libxml2_ResetError) _ANSI_ARGS_((Tcl_Interp * interp)); /* 11 */
+ Tcl_Obj * (*tclXML_libxml2_GetErrorObj) _ANSI_ARGS_((Tcl_Interp * interp)); /* 12 */
+ void (*tclXML_libxml2_SetErrorNodeFunc) _ANSI_ARGS_((Tcl_Interp * interp, TclXML_ErrorNodeHandlerProc * proc)); /* 13 */
diff --git a/devel/tclxml/files/patch-tclxml.c b/devel/tclxml/files/patch-tclxml.c
new file mode 100644
index 000000000000..bb461a274c7b
--- /dev/null
+++ b/devel/tclxml/files/patch-tclxml.c
@@ -0,0 +1,11 @@
+--- tclxml.c.orig 2013-03-30 17:17:07 UTC
++++ tclxml.c
+@@ -20,6 +20,8 @@
+ #include <tclxslt/tclxslt.h>
+ #include <string.h>
+
++int Tcldom_libxml2_Init ( Tcl_Interp *interp );
++
+ #define TCL_DOES_STUBS \
+ (TCL_MAJOR_VERSION > 8 || TCL_MAJOR_VERSION == 8 && (TCL_MINOR_VERSION > 1 || \
+ (TCL_MINOR_VERSION == 1 && TCL_RELEASE_LEVEL == TCL_FINAL_RELEASE)))