package/mosquitto: fix build failure with recent glibc

Fix link-time build failures because glibc>=2.34 no longer ships libanl.so
as it has been consolidated into libc.

See the inner patch message for more details.

Fixes: https://autobuild.buildroot.org/results/16223cd838876abc9b6f941f7dc20d23afa32c3b/

Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
(cherry picked from commit a49354e46f)
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
This commit is contained in:
Titouan Christophe
2025-08-29 22:18:35 +02:00
committed by Thomas Perale
parent d552f78c63
commit 6a3055eb04

View File

@@ -0,0 +1,47 @@
From 447a6aa8df882a67ca3df6f5e95be42e1463eaf0 Mon Sep 17 00:00:00 2001
From: Titouan Christophe <titouan.christophe@mind.be>
Date: Fri, 29 Aug 2025 19:47:34 +0200
Subject: [PATCH] Add configure-time check for -lanl
Since glibc 2.34, libanl features have been integrated directly into libc [1].
For backward compatibility, some toolchains still provide a shim for
libanl as a separate .so, but new toolchains (for example for new archs
like loongarch) do not provide it anymore.
In such a case, building mosquitto fails at link time with (see [2])
> cannot find -lanl: No such file or directory
To fix this problem while maintaining compatibility with older toolchains,
check if a simple program that uses libanl can be compiled without -lanl,
and only add the linker flag otherwise.
[1] https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html
[2] https://autobuild.buildroot.org/results/16223cd838876abc9b6f941f7dc20d23afa32c3b/build-end.log
Upstream: https://github.com/eclipse-mosquitto/mosquitto/pull/3358
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
---
config.mk | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/config.mk b/config.mk
index 34d5163f..cc7987c4 100644
--- a/config.mk
+++ b/config.mk
@@ -318,8 +318,11 @@ ifeq ($(WITH_EC),yes)
endif
ifeq ($(WITH_ADNS),yes)
- BROKER_LDADD:=$(BROKER_LDADD) -lanl
BROKER_CPPFLAGS:=$(BROKER_CPPFLAGS) -DWITH_ADNS
+ NEED_LIBANL := $(shell printf '#include <stdlib.h>\n#include <netdb.h>\nint main(){return getaddrinfo_a(0, NULL, 0, NULL);}'| $(CC) -D_GNU_SOURCE -o /dev/null -x c - 2>/dev/null || echo YES)
+ ifeq ($(NEED_LIBANL),YES)
+ BROKER_LDADD:=$(BROKER_LDADD) -lanl
+ endif
endif
ifeq ($(WITH_CONTROL),yes)
--
2.50.1