Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Fiona Klute via buildroot <buildroot@buildroot.org>
To: "Yann E. MORIN" <yann.morin.1998@free.fr>, Khem Raj <raj.khem@gmail.com>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1] package/kmod: fix build with musl
Date: Tue, 4 Jun 2024 20:01:46 +0200	[thread overview]
Message-ID: <a71cb6c0-3159-4b0e-a10d-038461480ffc@gmx.de> (raw)
In-Reply-To: <Zl9VCm-vH0yAi0Jc@landeda>

Am 04.06.24 um 19:55 schrieb Yann E. MORIN:
> 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
>
> Thanks for this pointer. It should have been added in the bundled patch
> itself (see below).
>
> I was holding off on that patch of yours, because there has been no
> resolution on that upstream PR (adding Khem in Cc so he can maybe have
> a look back at it ;-) ).
>
> But following your comment on bug #16093, I decided to look again. I
> just looked at the discussion in more details, and all the discussion
> is basically just about how to name the symbol. So let's cary this patch
> for now...
>
>> Signed-off-by: Fiona Klute <fiona.klute+wiwa@gmx.de>
>> ---
>>   ...able-implementation-for-basename-API.patch | 131 ++++++++++++++++++
>
>      # ./utils/docker-run make check-package
>      package/kmod/0002-Use-portable-implementation-for-basename-API.patch:0: missing Upstream in the header (https://nightly.buildroot.org/#_additional_patch_documentation)
>
> This is where you should add the upstream PR URL:
>
>      Upstream: https://github.com/kmod-project/kmod/pull/32
>
> You must also sign-off the bundled patch. No need to respin, I can just
> add it if you just reply with your SoB line.

Signed-off-by: Fiona Klute <fiona.klute+wiwa@gmx.de>

Thanks for taking care of this! If possible, please remove the
subaddressing from the "From", somehow my mail provider seems to not
deliver with it. I'll keep the "Upstream" tag in mind for the future. :-)

Best regards,
Fiona

> Thanks!
>
> Regards,
> Yann E. MORIN.
>
>>   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
>

--
Dipl.-Ing. Fiona Klute
Mollwitzer Str. 2
44141 Dortmund
Germany

USt.-ID/VAT number: DE363488944

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2024-06-04 18:07 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 [this message]
2024-06-04 19:14 ` Yann E. MORIN
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=a71cb6c0-3159-4b0e-a10d-038461480ffc@gmx.de \
    --to=buildroot@buildroot.org \
    --cc=fiona.klute@gmx.de \
    --cc=raj.khem@gmail.com \
    --cc=yann.morin.1998@free.fr \
    /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