[lkml]   [2008]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: diet-kconfig: a script to trim unneeded kconfigs
    On Fri, Sep 19, 2008 at 4:55 PM, Chris Li <> wrote:
    > Incidentally, I wrote such a script as well. In 64 lines of python code.
    > I attach the script in question in the mail. I use a approach very
    > similar to yours. But I work around some of the nasty part.

    Oops, I forget to attach the script. Here it is.

    import re
    import os

    class Kbuild:
    def __init__(self, root):
    self.root = root
    self.confs = {} # dict of lists
    self.modules = {}


    def all_kbuild(self):
    cmd = 'find . '\
    ' -regex "%s/[a-z].*/\\(Makefile\\|Kbuild\\)"' \
    ' -not -regex ".*/\(' \
    'arch\|Documents\|firmware\|scripts\|raid6test\)/.*"' \
    % self.root
    return os.popen(cmd).read().split()

    def read_kbuild(self):
    allfile = [open(f).read() for f in self.all_kbuild()]
    data = "\n".join(allfile)
    data = re.sub(r"(?m)^ifeq\s+\(\$\((CONFIG_\S+)\s*\),\s*m\).*",
    r"obj-$(\1) \\", data)
    data = re.sub(r"(?m)\\\n\s*|obj-m ", '', data)
    all = re.findall( r"(?m)obj-\$\((CONFIG_\S+)\)\s*[:+]=(.*)", data) = data
    for (conf, modules) in all:
    mods = re.findall(r"(\S+)\.o", modules)
    for m in mods:
    m = re.sub("-","_",m)
    #print conf, "->", m
    self.confs.setdefault(conf, []).append(m)
    self.modules.setdefault(m, []).append(conf)
    def read_modules(self):
    data = open("/proc/modules").read()
    return re.findall(r"(?m)^\S+", data)

    def test_module(self, m):
    all, conf =,1)
    if conf in self.confs:
    return "# %s is not set"%conf
    return all

    def filter(self, config):
    for m in self.read_modules():
    if not self.modules.has_key(m):
    print m,": Uknown module, may be firemware?"
    for c in self.modules[m]:
    if c in self.confs:
    del self.confs[c]
    data = open(config).read()
    data = re.sub(r"(?m)^(CONFIG_\S+)=m", self.test_module, data)
    out = config + ".min"
    print "Writing new config to:", out
    open(out, "w").write(data)

    def main():
    kbuild = Kbuild(".")
     \ /
      Last update: 2008-09-20 01:59    [W:0.025 / U:5.276 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site