From c9605a59e0a596ed407ec3d284e3df96046cfea1 Mon Sep 17 00:00:00 2001 From: Justin Chen <42143810+StarryReverie@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:35:38 +0800 Subject: [PATCH] libstrophe: fix build with GCC 15 --- pkgs/by-name/li/libstrophe/package.nix | 7 ++ pkgs/by-name/li/libstrophe/pointer-cast.patch | 65 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 pkgs/by-name/li/libstrophe/pointer-cast.patch diff --git a/pkgs/by-name/li/libstrophe/package.nix b/pkgs/by-name/li/libstrophe/package.nix index 0f521177883e..32e9326b0f90 100644 --- a/pkgs/by-name/li/libstrophe/package.nix +++ b/pkgs/by-name/li/libstrophe/package.nix @@ -22,10 +22,17 @@ stdenv.mkDerivation rec { hash = "sha256-53O8hHyw9y0Bzs+BpGouAxuSGJxh6NSNNWZqi7RHAsY="; }; + patches = [ + # Newer GCC rejects implicitly weak-typed pointer casting. + # Upstream PR: https://github.com/strophe/libstrophe/pull/267 + ./pointer-cast.patch + ]; + nativeBuildInputs = [ autoreconfHook pkg-config ]; + buildInputs = [ openssl expat diff --git a/pkgs/by-name/li/libstrophe/pointer-cast.patch b/pkgs/by-name/li/libstrophe/pointer-cast.patch new file mode 100644 index 000000000000..b929636e021f --- /dev/null +++ b/pkgs/by-name/li/libstrophe/pointer-cast.patch @@ -0,0 +1,65 @@ +diff --git a/src/handler.c b/src/handler.c +index 1c9bf9f..168df75 100644 +--- a/src/handler.c ++++ b/src/handler.c +@@ -320,7 +320,7 @@ static void _timed_handler_delete(xmpp_ctx_t *ctx, + */ + void xmpp_timed_handler_delete(xmpp_conn_t *conn, xmpp_timed_handler handler) + { +- _timed_handler_delete(conn->ctx, &conn->timed_handlers, handler); ++ _timed_handler_delete(conn->ctx, &conn->timed_handlers, (xmpp_void_handler)handler); + } + + static void _id_handler_add(xmpp_conn_t *conn, +@@ -349,7 +349,7 @@ static void _id_handler_add(xmpp_conn_t *conn, + return; + + item->user_handler = user_handler; +- item->handler = handler; ++ item->handler = (xmpp_void_handler)handler; + item->userdata = userdata; + item->enabled = 0; + item->next = NULL; +@@ -451,7 +451,7 @@ static void _handler_add(xmpp_conn_t *conn, + + memset(item, 0, sizeof(*item)); + item->user_handler = user_handler; +- item->handler = handler; ++ item->handler = (xmpp_void_handler)handler; + item->userdata = userdata; + + if (_dup_string(conn->ctx, ns, &item->u.ns)) +@@ -530,7 +530,7 @@ void xmpp_timed_handler_add(xmpp_conn_t *conn, + unsigned long period, + void *userdata) + { +- _timed_handler_add(conn->ctx, &conn->timed_handlers, handler, period, ++ _timed_handler_add(conn->ctx, &conn->timed_handlers, (xmpp_void_handler)handler, period, + userdata, 1); + } + +@@ -548,7 +548,7 @@ void handler_add_timed(xmpp_conn_t *conn, + unsigned long period, + void *userdata) + { +- _timed_handler_add(conn->ctx, &conn->timed_handlers, handler, period, ++ _timed_handler_add(conn->ctx, &conn->timed_handlers, (xmpp_void_handler)handler, period, + userdata, 0); + } + +@@ -747,7 +747,7 @@ void xmpp_global_timed_handler_add(xmpp_ctx_t *ctx, + unsigned long period, + void *userdata) + { +- _timed_handler_add(ctx, &ctx->timed_handlers, handler, period, userdata, 1); ++ _timed_handler_add(ctx, &ctx->timed_handlers, (xmpp_void_handler)handler, period, userdata, 1); + } + + /** Delete a global timed handler. +@@ -760,5 +760,5 @@ void xmpp_global_timed_handler_add(xmpp_ctx_t *ctx, + void xmpp_global_timed_handler_delete(xmpp_ctx_t *ctx, + xmpp_global_timed_handler handler) + { +- _timed_handler_delete(ctx, &ctx->timed_handlers, handler); ++ _timed_handler_delete(ctx, &ctx->timed_handlers, (xmpp_void_handler)handler); + }