2022-02-11 17:04:42

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kconfig: fix failing to generate auto.conf

On Thu, Feb 10, 2022 at 3:40 PM <[email protected]> wrote:
>
> From: Jing Leng <[email protected]>
>
> When the KCONFIG_AUTOCONFIG is specified (e.g. export \
> KCONFIG_AUTOCONFIG=output/config/auto.conf), the directory of
> include/config/ will not be created, so kconfig can't create deps
> files in it and auto.conf can't be generated.
>
> Signed-off-by: Jing Leng <[email protected]>
> ---
> scripts/kconfig/confdata.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index 59717be31210..800ecf9934bc 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -994,14 +994,15 @@ static int conf_write_autoconf_cmd(const char *autoconf_name)
>
> static int conf_touch_deps(void)
> {
> - const char *name;
> + const char *name, *tmp;
> struct symbol *sym;
> int res, i;
>
> - strcpy(depfile_path, "include/config/");
> - depfile_prefix_len = strlen(depfile_path);
> -
> name = conf_get_autoconfig_name();
> + depfile_prefix_len = ((tmp = strrchr(name, '/'))) ? (tmp - name) + 1 : 0;
> + strncpy(depfile_path, name, depfile_prefix_len);
> + depfile_path[depfile_prefix_len] = 0;
> +
> conf_read_simple(name, S_DEF_AUTO);
> sym_calc_value(modules_sym);
>
> --
> 2.17.1
>


Thanks.

I wanted to pick up this patch, but
could not find it in the patchwork
(https://patchwork.kernel.org/project/linux-kbuild/list/)
despite you apparently CC'ed the kbuild ML.

Do you know why?
(I do not know if the kbuild/kernel ML requires subscription...)



If you have a chance for re-submission,
can you change the code like follows?

depfile_prefix_len = ((tmp = strrchr(name, '/'))) ? (tmp - name) + 1 : 0;


tmp = tmp = strrchr(name, '/');
depfile_prefix_len = tmp ? tmp - name + 1 : 0;


Too many parentheses make the code unreadable.





--
Best Regards
Masahiro Yamada


2022-02-14 19:58:00

by Jing Leng

[permalink] [raw]
Subject: [PATCH v2] kconfig: fix failing to generate auto.conf

From: Jing Leng <[email protected]>

When the KCONFIG_AUTOCONFIG is specified (e.g. export \
KCONFIG_AUTOCONFIG=output/config/auto.conf), the directory of
include/config/ will not be created, so kconfig can't create deps
files in it and auto.conf can't be generated.

Signed-off-by: Jing Leng <[email protected]>
---
scripts/kconfig/confdata.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 59717be31210..974a079e8901 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -994,14 +994,19 @@ static int conf_write_autoconf_cmd(const char *autoconf_name)

static int conf_touch_deps(void)
{
- const char *name;
+ const char *name, *tmp;
struct symbol *sym;
int res, i;

- strcpy(depfile_path, "include/config/");
- depfile_prefix_len = strlen(depfile_path);
-
name = conf_get_autoconfig_name();
+ tmp = strrchr(name, '/');
+ depfile_prefix_len = tmp ? (tmp - name) + 1 : 0;
+ if (depfile_prefix_len + 1 > sizeof(depfile_path))
+ return -1;
+
+ strncpy(depfile_path, name, depfile_prefix_len);
+ depfile_path[depfile_prefix_len] = 0;
+
conf_read_simple(name, S_DEF_AUTO);
sym_calc_value(modules_sym);

--
2.17.1