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

From: Masahiro Yamada
Date: Tue Jan 17 2023 - 09:34:36 EST


On Tue, Jan 17, 2023 at 10:19 PM Thomas Weißschuh <thomas@xxxxxxxx> 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 <n.schier@xxxxxx>
>
> Thanks!
>
> Thomas



--
Best Regards
Masahiro Yamada