From: Khem Raj Date: Wed, 28 Aug 2024 04:10:00 +0000 (-0700) Subject: bluez5: Fix build with musl X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5f9870757bf7ffd009ce4ba999d37e41274982c;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git bluez5: Fix build with musl Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc index d8b9f817715..e0d3e651871 100644 --- a/meta/recipes-connectivity/bluez5/bluez5.inc +++ b/meta/recipes-connectivity/bluez5/bluez5.inc @@ -70,6 +70,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \ file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ file://0001-test-gatt-Fix-hung-issue.patch \ file://0004-src-shared-util.c-include-linux-limits.h.patch \ + file://0001-Provide-GNU-basename-compatible-implementation.patch \ " S = "${WORKDIR}/bluez-${PV}" diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Provide-GNU-basename-compatible-implementation.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Provide-GNU-basename-compatible-implementation.patch new file mode 100644 index 00000000000..3a2a97ff020 --- /dev/null +++ b/meta/recipes-connectivity/bluez5/bluez5/0001-Provide-GNU-basename-compatible-implementation.patch @@ -0,0 +1,143 @@ +From 9000923c07a68857e8ea32a49bfca660b1d1001a Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 26 Aug 2024 09:55:03 -0700 +Subject: [PATCH BlueZ] Provide GNU basename compatible implementation + +Call to basename() relies on a GNU extension +to take a const char * vs a char *. Let's define +a trivial helper function to ensure compatibility +with musl. + +Fixes Issue: https://github.com/bluez/bluez/issues/843 + +Upstream-Status: Submitted [https://lore.kernel.org/linux-bluetooth/20240826173844.2918630-1-raj.khem@gmail.com/T/#u] +Signed-off-by: Khem Raj +--- + Makefile.mesh | 2 ++ + Makefile.tools | 3 ++- + mesh/mesh-config-json.c | 6 ++++-- + mesh/rpl.c | 3 ++- + src/shared/util.h | 7 +++++++ + tools/hex2hcd.c | 3 ++- + 6 files changed, 19 insertions(+), 5 deletions(-) + +Index: bluez-5.77/mesh/mesh-config-json.c +=================================================================== +--- bluez-5.77.orig/mesh/mesh-config-json.c ++++ bluez-5.77/mesh/mesh-config-json.c +@@ -28,6 +28,7 @@ + #include + #include + ++#include "mesh/missing.h" + #include "mesh/mesh-defs.h" + #include "mesh/util.h" + #include "mesh/mesh-config.h" +@@ -2694,7 +2695,8 @@ bool mesh_config_load_nodes(const char * + + void mesh_config_destroy_nvm(struct mesh_config *cfg) + { +- char *node_dir, *node_name; ++ char *node_dir; ++ const char* node_name; + char uuid[33]; + + if (!cfg) +Index: bluez-5.77/mesh/rpl.c +=================================================================== +--- bluez-5.77.orig/mesh/rpl.c ++++ bluez-5.77/mesh/rpl.c +@@ -24,6 +24,7 @@ + + #include + ++#include "mesh/missing.h" + #include "mesh/mesh-defs.h" + + #include "mesh/node.h" +Index: bluez-5.77/tools/hex2hcd.c +=================================================================== +--- bluez-5.77.orig/tools/hex2hcd.c ++++ bluez-5.77/tools/hex2hcd.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include "tools/missing.h" + + static ssize_t process_record(int fd, const char *line, uint16_t *upper_addr) + { +Index: bluez-5.77/configure.ac +=================================================================== +--- bluez-5.77.orig/configure.ac ++++ bluez-5.77/configure.ac +@@ -70,7 +70,16 @@ AC_CHECK_LIB(pthread, pthread_create, du + AC_CHECK_LIB(dl, dlopen, dummy=yes, + AC_MSG_ERROR(dynamic linking loader is required)) + +-AC_CHECK_HEADERS(linux/types.h linux/if_alg.h linux/uinput.h linux/uhid.h sys/random.h) ++AC_CHECK_HEADERS(string.h linux/types.h linux/if_alg.h linux/uinput.h linux/uhid.h sys/random.h) ++ ++# basename may be only available in libgen.h with the POSIX behavior, ++# not desired here ++AC_CHECK_DECLS([basename], [], ++ AC_MSG_WARN([GNU basename extension not found]), ++ [#define _GNU_SOURCE 1 ++ #include ++ ]) ++ + + PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28) + +Index: bluez-5.77/tools/missing.h +=================================================================== +--- /dev/null ++++ bluez-5.77/tools/missing.h +@@ -0,0 +1,21 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++/* ++ * ++ * BlueZ - Bluetooth protocol stack for Linux ++ * ++ * Copyright (C) 2024 Khem Raj ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#if !HAVE_DECL_BASENAME ++#include ++static inline const char *basename(const char *path) ++{ ++ const char *base = strrchr(path, '/'); ++ ++ return base ? base + 1 : path; ++} ++#endif +Index: bluez-5.77/mesh/missing.h +=================================================================== +--- /dev/null ++++ bluez-5.77/mesh/missing.h +@@ -0,0 +1,21 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++/* ++ * ++ * BlueZ - Bluetooth protocol stack for Linux ++ * ++ * Copyright (C) 2024 Khem Raj ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#if !HAVE_DECL_BASENAME ++#include ++static inline const char *basename(const char *path) ++{ ++ const char *base = strrchr(path, '/'); ++ ++ return base ? base + 1 : path; ++} ++#endif