2023-01-17 13:31:18

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH] kheaders: explicitly validate existence of cpio command

On Tue, Jan 17, 2023 at 09:46:02AM +0100, Nicolas Schier wrote:
> On Tue, Jan 17, 2023 at 05:30:43AM +0000, Thomas Wei?schuh wrote:
> > If the cpio command is not available the error emitted by
> > gen_kheaders.so is not clear as all output of the call to cpio is
> > discarded:
> >
> > GNU make 4.4:
> >
> > GEN kernel/kheaders_data.tar.xz
> > find: 'standard output': Broken pipe
> > find: write error
> > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> >
> > GNU make < 4.4:
> >
> > GEN kernel/kheaders_data.tar.xz
> > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > make[2]: *** Waiting for unfinished jobs....
> > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> >
> > Add an explicit check that will trigger a clear message about the issue:
> >
> > CHK kernel/kheaders_data.tar.xz
> > ./kernel/gen_kheaders.sh: line 17: type: cpio: not found
>
> Thanks for the patch! What would you think about an even more verbose
> message? Perhaps something like:
>
> echo >&2 ' *** "cpio" is required for "CONFIG_IKHEADERS". >&2

Wouldn't hurt obviously.
The other scripts used by the kernel don't seem to try to provide this
kind of explicit message either, though.
Having a line number, some sort of "not found" and the name of the
command are enough, in my opinion.

> Reviewed-by: Nicolas Schier <[email protected]>

Thanks!

Thomas


2023-01-17 14:58:58

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kheaders: explicitly validate existence of cpio command

On Tue, Jan 17, 2023 at 10:19 PM Thomas Weißschuh <[email protected]> wrote:
>
> On Tue, Jan 17, 2023 at 09:46:02AM +0100, Nicolas Schier wrote:
> > On Tue, Jan 17, 2023 at 05:30:43AM +0000, Thomas Weißschuh wrote:
> > > If the cpio command is not available the error emitted by
> > > gen_kheaders.so is not clear as all output of the call to cpio is
> > > discarded:
> > >
> > > GNU make 4.4:
> > >
> > > GEN kernel/kheaders_data.tar.xz
> > > find: 'standard output': Broken pipe
> > > find: write error
> > > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> > >
> > > GNU make < 4.4:
> > >
> > > GEN kernel/kheaders_data.tar.xz
> > > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > > make[2]: *** Waiting for unfinished jobs....
> > > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> > >
> > > Add an explicit check that will trigger a clear message about the issue:
> > >
> > > CHK kernel/kheaders_data.tar.xz
> > > ./kernel/gen_kheaders.sh: line 17: type: cpio: not found
> >
> > Thanks for the patch! What would you think about an even more verbose
> > message? Perhaps something like:
> >
> > echo >&2 ' *** "cpio" is required for "CONFIG_IKHEADERS". >&2
>
> Wouldn't hurt obviously.
> The other scripts used by the kernel don't seem to try to provide this
> kind of explicit message either, though.
> Having a line number, some sort of "not found" and the name of the
> command are enough, in my opinion.



Agree. I am fine with this patch.


Just a side note.


'type' is defined in posix [1], so this code is portable.

Kbuild often uses "command -v" to check the existence of a command
because it is also posix compliant [2].


I just wondered why we did not use 'type' before...

'type' is more efficient because it is shell-builtin
(at least for dash and bash) but 'command' is not.



[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/type.html

[2]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html







>
> > Reviewed-by: Nicolas Schier <[email protected]>
>
> Thanks!
>
> Thomas



--
Best Regards
Masahiro Yamada

2023-01-18 08:14:50

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kheaders: explicitly validate existence of cpio command

On Tue, Jan 17, 2023 at 10:19 PM Thomas Weißschuh <[email protected]> wrote:
>
> On Tue, Jan 17, 2023 at 09:46:02AM +0100, Nicolas Schier wrote:
> > On Tue, Jan 17, 2023 at 05:30:43AM +0000, Thomas Weißschuh wrote:
> > > If the cpio command is not available the error emitted by
> > > gen_kheaders.so is not clear as all output of the call to cpio is
> > > discarded:
> > >
> > > GNU make 4.4:
> > >
> > > GEN kernel/kheaders_data.tar.xz
> > > find: 'standard output': Broken pipe
> > > find: write error
> > > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> > >
> > > GNU make < 4.4:
> > >
> > > GEN kernel/kheaders_data.tar.xz
> > > make[2]: *** [kernel/Makefile:157: kernel/kheaders_data.tar.xz] Error 127
> > > make[2]: *** Waiting for unfinished jobs....
> > > make[1]: *** [scripts/Makefile.build:504: kernel] Error 2
> > >
> > > Add an explicit check that will trigger a clear message about the issue:
> > >
> > > CHK kernel/kheaders_data.tar.xz
> > > ./kernel/gen_kheaders.sh: line 17: type: cpio: not found
> >
> > Thanks for the patch! What would you think about an even more verbose
> > message? Perhaps something like:
> >
> > echo >&2 ' *** "cpio" is required for "CONFIG_IKHEADERS". >&2
>
> Wouldn't hurt obviously.
> The other scripts used by the kernel don't seem to try to provide this
> kind of explicit message either, though.
> Having a line number, some sort of "not found" and the name of the
> command are enough, in my opinion.
>
> > Reviewed-by: Nicolas Schier <[email protected]>
>
> Thanks!
>
> Thomas


Applied to linux-kbuild. Thanks.


--
Best Regards
Masahiro Yamada