Re: Kconfiglib -- a flexible Kconfig parser -- now on GitHub

From: Ulf Magnusson
Date: Tue Jun 02 2015 - 07:16:32 EST


On Tue, Jun 2, 2015 at 5:10 AM, Rob Landley <rob@xxxxxxxxxxx> wrote:
> On Mon, Jun 1, 2015 at 6:58 PM, Ulf Magnusson <ulfalizer.lkml@xxxxxxxxx> wrote:
>> Hello,
>>
>> A few years ago I posted patches for a Python Kconfig parser and
>> library I was working on (https://lkml.org/lkml/2011/2/6/151). As not
>> many people are probably aware of it, an updated version of that
>> library has been at https://github.com/ulfalizer/Kconfiglib for a
>> while now, and is being used for some tasks in e.g. Buildroot and Das
>> U-Boot.
>>
>> As a concrete example, I just noticed scripts/checkkconfigsymbols.py
>> and remembered that I have an example script that does the same thing
>> (minus some functionality):
>> https://github.com/ulfalizer/Kconfiglib/blob/master/examples/print_undefined.py.
>>
>> I have no intention to get Kconfiglib into the kernel (unless there
>> would be a demand), and it's definitely not meant to replace the C
>> implementation or introduce a Python dependency for standard builds.
>> It's just an auxiliary helper library which some people might find
>> useful -- especially when doing "unusual" things with Kconfig-based
>> configuration systems.
>
> Huh, I have a todo item to write the old 2.6.12 snapshot of kconfig I
> have in http://landley.net/toybox (it's the only gpl code left in the
> build), but I just got finished _removing_ python as a bulid
> dependency last year and am reluctant to reintroduce it.

One drawback of replacing the C implementation with Kconfiglib would
be that there's no graphical configuration interface like 'menuconfig'
built in.

You probably already know this, but some of the menus you see in
'menuconfig' rely on an "implicit menu" feature by the way, where a
menu is created automatically if you have a symbol S and a bunch
of symbols after it that 'depend on S'. That's just pure presentation
though. (Except that it leads to oddities within 'choice's sometimes
-- see the docstring for _determine_actual_symbols() in
kconfiglib.py.)

>
> I gave up trying to patch upstream kconfig after a half-dozen rounds
> of https://lwn.net/Articles/161086/ and such were all ignored. (I just
> documented http://landley.net/aboriginal/FAQ.html#dev_miniconfig and
> went on with my life. Yes, still using miniconfig.sh a decade
> later...)
>

I'm probably missing something in how miniconfig works, but loading up
a minimal .config file like that in one of the *conf utilites (or Kconfiglib)
and writing a new .config should already fill in all the derived stuff.

I've never seen Roman Zippel post. Maybe he's tired of working on
Kconfig.

> (I have rather elaborate kconfig parsing to extract help text, I use
> specially formatted menuconfig help entries to create command help,
> and merge the sub-options to create a unified usage: line and
> alphabetically sorted option description list. That's the stuff that
> used to be python, which I rewrote in C last year. Somebody submitted
> a kconfig parser written in awk to toybox a couple years ago, but I
> can't maintain awk...)

For what it's worth, Kconfiglib can extract help texts. See
https://github.com/ulfalizer/Kconfiglib/blob/master/examples/help_grep.py
for example.

/Ulf
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/