From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Fiona Klute <fiona.klute@gmx.de>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1] package/kmod: fix build with musl
Date: Tue, 4 Jun 2024 21:14:35 +0200 [thread overview]
Message-ID: <Zl9nm8m7XX8pYgm2@landeda> (raw)
In-Reply-To: <20240426215144.1107186-1-fiona.klute@gmx.de>
Fiona, All,
On 2024-04-26 23:51 +0200, Fiona Klute via buildroot spake thusly:
> From: Fiona Klute <fiona.klute+wiwa@gmx.de>
>
> Patch from upstream PR still being discussed:
> https://github.com/kmod-project/kmod/pull/32
>
> Signed-off-by: Fiona Klute <fiona.klute+wiwa@gmx.de>
Applied to master, after adding your SoB line, and a reference to bug
#16093, thanks.
Regards,
Yann E. MORIN.
> ---
> ...able-implementation-for-basename-API.patch | 131 ++++++++++++++++++
> 1 file changed, 131 insertions(+)
> create mode 100644 package/kmod/0002-Use-portable-implementation-for-basename-API.patch
>
> diff --git a/package/kmod/0002-Use-portable-implementation-for-basename-API.patch b/package/kmod/0002-Use-portable-implementation-for-basename-API.patch
> new file mode 100644
> index 0000000000..46d23f4fa9
> --- /dev/null
> +++ b/package/kmod/0002-Use-portable-implementation-for-basename-API.patch
> @@ -0,0 +1,131 @@
> +From 721ed6040c7aa47070faf6378c433089e178bd43 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sat, 9 Dec 2023 17:35:59 -0800
> +Subject: [PATCH] Use portable implementation for basename API
> +
> +musl has removed the non-prototype declaration of basename from
> +string.h [1] which now results in build errors with clang-17+ compiler
> +
> +Implement GNU basename behavior using strchr which is portable across libcs
> +
> +Fixes
> +../git/tools/kmod.c:71:19: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> +71 | "Commands:\n", basename(argv[0]));
> +| ^
> +
> +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
> +
> +Suggested-by: Rich Felker
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> + libkmod/libkmod-config.c | 2 +-
> + shared/util.c | 4 ++--
> + shared/util.h | 7 +++++++
> + testsuite/testsuite.c | 2 +-
> + tools/depmod.c | 2 +-
> + tools/kmod.c | 4 ++--
> + 6 files changed, 14 insertions(+), 7 deletions(-)
> +
> +diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
> +index e83621b3..8aa555a4 100644
> +--- a/libkmod/libkmod-config.c
> ++++ b/libkmod/libkmod-config.c
> +@@ -794,7 +794,7 @@ static int conf_files_insert_sorted(struct kmod_ctx *ctx,
> + bool is_single = false;
> +
> + if (name == NULL) {
> +- name = basename(path);
> ++ name = gnu_basename(path);
> + is_single = true;
> + }
> +
> +diff --git a/shared/util.c b/shared/util.c
> +index e2bab83a..0e16670e 100644
> +--- a/shared/util.c
> ++++ b/shared/util.c
> +@@ -172,9 +172,9 @@ char *modname_normalize(const char *modname, char buf[static PATH_MAX], size_t *
> +
> + char *path_to_modname(const char *path, char buf[static PATH_MAX], size_t *len)
> + {
> +- char *modname;
> ++ const char *modname;
> +
> +- modname = basename(path);
> ++ modname = gnu_basename(path);
> + if (modname == NULL || modname[0] == '\0')
> + return NULL;
> +
> +diff --git a/shared/util.h b/shared/util.h
> +index c4a3916b..073dc5a7 100644
> +--- a/shared/util.h
> ++++ b/shared/util.h
> +@@ -5,6 +5,7 @@
> + #include <stdbool.h>
> + #include <stdlib.h>
> + #include <stdio.h>
> ++#include <string.h>
> + #include <sys/types.h>
> + #include <sys/stat.h>
> + #include <time.h>
> +@@ -76,6 +77,12 @@ do { \
> + __p->__v = (val); \
> + } while(0)
> +
> ++static _always_inline_ const char *gnu_basename(const char *s)
> ++{
> ++ const char *p = strrchr(s, '/');
> ++ return p ? p+1 : s;
> ++}
> ++
> + static _always_inline_ unsigned int ALIGN_POWER2(unsigned int u)
> + {
> + return 1 << ((sizeof(u) * 8) - __builtin_clz(u - 1));
> +diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c
> +index 318343ac..aafc9873 100644
> +--- a/testsuite/testsuite.c
> ++++ b/testsuite/testsuite.c
> +@@ -70,7 +70,7 @@ static void help(void)
> +
> + printf("Usage:\n"
> + "\t%s [options] <test>\n"
> +- "Options:\n", basename(progname));
> ++ "Options:\n", gnu_basename(progname));
> +
> + for (itr = options, itr_short = options_short;
> + itr->name != NULL; itr++, itr_short++)
> +diff --git a/tools/depmod.c b/tools/depmod.c
> +index 43fc354a..cfb15b11 100644
> +--- a/tools/depmod.c
> ++++ b/tools/depmod.c
> +@@ -762,7 +762,7 @@ static int cfg_files_insert_sorted(struct cfg_file ***p_files, size_t *p_n_files
> + if (name != NULL)
> + namelen = strlen(name);
> + else {
> +- name = basename(dir);
> ++ name = gnu_basename(dir);
> + namelen = strlen(name);
> + dirlen -= namelen + 1;
> + }
> +diff --git a/tools/kmod.c b/tools/kmod.c
> +index 55689c07..df91e5c6 100644
> +--- a/tools/kmod.c
> ++++ b/tools/kmod.c
> +@@ -68,7 +68,7 @@ static int kmod_help(int argc, char *argv[])
> + "Options:\n"
> + "\t-V, --version show version\n"
> + "\t-h, --help show this help\n\n"
> +- "Commands:\n", basename(argv[0]));
> ++ "Commands:\n", gnu_basename(argv[0]));
> +
> + for (i = 0; i < ARRAY_SIZE(kmod_cmds); i++) {
> + if (kmod_cmds[i]->help != NULL) {
> +@@ -156,7 +156,7 @@ static int handle_kmod_compat_commands(int argc, char *argv[])
> + const char *cmd;
> + size_t i;
> +
> +- cmd = basename(argv[0]);
> ++ cmd = gnu_basename(argv[0]);
> +
> + for (i = 0; i < ARRAY_SIZE(kmod_compat_cmds); i++) {
> + if (streq(kmod_compat_cmds[i]->name, cmd))
> --
> 2.43.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2024-06-04 19:14 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-26 21:51 [Buildroot] [PATCH 1/1] package/kmod: fix build with musl Fiona Klute via buildroot
2024-05-09 20:51 ` Thomas Petazzoni via buildroot
2024-05-09 21:52 ` Fiona Klute via buildroot
2024-06-04 17:55 ` Yann E. MORIN
2024-06-04 18:01 ` Fiona Klute via buildroot
2024-06-04 19:14 ` Yann E. MORIN [this message]
2024-06-08 18:24 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zl9nm8m7XX8pYgm2@landeda \
--to=yann.morin.1998@free.fr \
--cc=buildroot@buildroot.org \
--cc=fiona.klute@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox