Messages in this thread | | | From | Kees Cook <> | Date | Tue, 27 Mar 2018 20:41:18 -0700 | Subject | Re: [PATCH v2 07/21] kconfig: add function support and implement 'shell' function |
| |
On Mon, Mar 26, 2018 at 10:29 PM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > This commit adds a new concept 'function' to do more text processing > in Kconfig. > > A function call looks like this: > > $(function arg1, arg2, arg3, ...) > > (Actually, this syntax was inspired by make.) > > Real examples will look like this: > > $(shell echo hello world) > $(cc-option -fstackprotector) > > This commit adds the basic infrastructure to add, delete, evaluate > functions, and also the first built-in function $(shell ...). This > accepts a single command to execute. It returns the standard output > from it. > > [Example code] > > config HELLO > string > default "$(shell echo hello world)" > > config Y > def_bool $(shell echo y) > > [Result] > > $ make -s alldefconfig && tail -n 2 .config > CONFIG_HELLO="hello world" > CONFIG_Y=y > > Caveat: > Like environments, functions are expanded in the lexer. You cannot > pass symbols to function arguments. This is a limitation to simplify > the implementation. I want to avoid the dynamic function evaluation, > which would introduce much more complexity. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > Reminder for myself: > Update Documentation/kbuild/kconfig-language.txt
Yeah, this needs to be included here, especially given the "cannot pass symbols" aspect which might surprise people.
> [...] > +/* built-in functions */ > +static char *do_shell(struct function *f, int argc, char *argv[]) > +{ > + static const char *pre = "("; > + static const char *post = ") 2>/dev/null";
Right now the search and help screens in menuconfig just show the line a config is defined and nothing more. I think it would be extremely handy to include shell output here in some way. Especially when trying to answer questions like "why aren't GCC plugins available?" it's got quite a bit harder to debug.
Could we capture the output (especially stderr) for these kinds of hints?
Beyond that, looks good!
-Kees
-- Kees Cook Pixel Security
| |