* debian/bin/kconfig.py: Add option overrides.

* debian/lib/python/debian_linux/kconfig.py:
  Add set method for externaly parsed options.

svn path=/dists/trunk/linux-2.6/; revision=15565
This commit is contained in:
Bastian Blank 2010-04-27 08:43:41 +00:00
parent d2fac94fbf
commit 8adf3a084f
2 changed files with 37 additions and 10 deletions

32
debian/bin/kconfig.py vendored
View File

@ -1,13 +1,37 @@
#!/usr/bin/env python
import optparse, os.path, sys
import optparse
import os.path
import re
import sys
from debian_linux.kconfig import *
def merge(output, *config):
def merge(output, configs, overrides):
kconfig = KconfigFile()
for c in config:
for c in configs:
kconfig.read(file(c))
for key, value in overrides.iteritems():
kconfig.set(key, value)
file(output, "w").write(str(kconfig))
def opt_callback_dict(option, opt, value, parser):
match = re.match('^\s*(\S+)=(\S+)\s*$', value)
if not match:
raise optparse.OptionValueError('not key=value')
dest = option.dest
data = getattr(parser.values, dest)
data[match.group(1)] = match.group(2)
if __name__ == '__main__':
sys.exit(merge(*sys.argv[1:]))
parser = optparse.OptionParser(usage = "%prog [OPTION]... FILE...")
parser.add_option('-o', '--override',
action='callback',
callback=opt_callback_dict,
default={},
dest='overrides',
help="Override option",
type='string')
options, args = parser.parse_args()
merge(args[0], args[1:], options.overrides)

View File

@ -55,19 +55,22 @@ class KconfigFile(SortedDict):
i = line.find('=')
option = line[7:i]
value = line[i+1:]
if value in ('y', 'm'):
entry = EntryTristate(option, value)
else:
entry = EntryString(option, value)
self[option] = entry
self.set(option, value)
elif line.startswith("# CONFIG_"):
option = line[9:-11]
self[option] = EntryTristate(option)
self.set(option, 'n')
elif line.startswith("#") or not line:
pass
else:
raise RuntimeError, "Can't recognize %s" % line
def set(self, key, value):
if value in ('y', 'm', 'n'):
entry = EntryTristate(key, value)
else:
entry = EntryString(key, value)
self[key] = entry
def str_iter(self):
for key, value in self.iteritems():
yield str(value)