Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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