Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755979AbbFBLQa (ORCPT ); Tue, 2 Jun 2015 07:16:30 -0400 Received: from mail-oi0-f54.google.com ([209.85.218.54]:33562 "EHLO mail-oi0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752948AbbFBLQW (ORCPT ); Tue, 2 Jun 2015 07:16:22 -0400 MIME-Version: 1.0 In-Reply-To: References: Date: Tue, 2 Jun 2015 13:16:21 +0200 Message-ID: Subject: Re: Kconfiglib -- a flexible Kconfig parser -- now on GitHub From: Ulf Magnusson To: Rob Landley Cc: Kernel Mailing List , linux-kbuild@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3438 Lines: 73 On Tue, Jun 2, 2015 at 5:10 AM, Rob Landley wrote: > On Mon, Jun 1, 2015 at 6:58 PM, Ulf Magnusson 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/