[Bug 279968] devel/tclxml: Fails to build with libxml2 2.13.1 and libxslt 1.1.41

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 30 Jun 2024 08:11:14 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=279968

--- Comment #3 from Pietro Cerutti <gahr@FreeBSD.org> ---
Two things:

1) I think the patch to should include this second chunk too:

--- include/tclxml-libxml2/tclxml-libxml2Decls.h.orig   2013-03-30 17:17:07 UTC
+++ include/tclxml-libxml2/tclxml-libxml2Decls.h
@@ -55,7 +55,7 @@ EXTERN void           TclXML_libxml2_ErrorHandler
_ANSI_ARGS_((
                                TclXML_libxml2_DocumentHandling keep));
 /* 10 */
 EXTERN void            TclXML_libxml2_ErrorHandler _ANSI_ARGS_((void * ctx, 
-                               xmlErrorPtr error));
+                               const xmlError *error));
 /* 11 */
 EXTERN void            TclXML_libxml2_ResetError _ANSI_ARGS_((
                                Tcl_Interp * interp));
@@ -93,7 +93,7 @@ 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, const
xmlError * error)); /* 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 */

2) These patches cannot be applied to the current libxml2 2.11.8, as the
signature of that function is not backwards compatible.

docObj.c:124:60: error: incompatible function pointer types passing 'void (void
*, const xmlError *)' (aka 'void (void *, const struct _xmlError *)') to
parameter of type 'xmlStructured
ErrorFunc' (aka 'void (*)(void *, struct _xmlError *)')
[-Wincompatible-function-pointer-types]
  xmlSetStructuredErrorFunc((void *) tsdPtr->errorInfoPtr,
TclXML_libxml2_ErrorHandler);
                                                          
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/libxml2/libxml/xmlerror.h:873:29: note: passing argument to
parameter 'handler' here
                                 xmlStructuredErrorFunc handler);

Are you planning to commit everything at once? An alternative would be to
conditionally change the signatures under LIBXML_VERSION_NUMBER >= 21200

-- 
You are receiving this mail because:
You are the assignee for the bug.