All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Fiona Klute <fiona.klute@gmx.de>, 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 19:55:22 +0200	[thread overview]
Message-ID: <Zl9VCm-vH0yAi0Jc@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

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.

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

-- 
.-----------------.--------------------.------------------.--------------------.
|  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 17:55 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 [this message]
2024-06-04 18:01   ` Fiona Klute via buildroot
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=Zl9VCm-vH0yAi0Jc@landeda \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@buildroot.org \
    --cc=fiona.klute@gmx.de \
    --cc=raj.khem@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.