Author: waldi Date: Tue Mar 11 16:12:05 2008 New Revision: 10800 Log: Update.
Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py ============================================================================== --- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py (original) +++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py Tue Mar 11 16:12:05 2008 @@ -5,7 +5,6 @@ class All(object): def __init__(self, root, arches): self.files = {} - self.files_arch = {} self.filenames_all = [] self.filenames_arch = {} @@ -30,10 +29,13 @@ if isinstance(i, FileSource): work.append(i.filename) + self.files_all = {} + for i in self.filenames_all: + self.files_all[i] = self.files[i] + + self.files_arch = {} for arch in arches: - f = {} - for i in self.filenames_all: - f[i] = self.files[i] + f = self.files_all.copy() for i in self.filenames_arch[arch]: f[i] = self.files[i] self.files_arch[arch] = f Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py ============================================================================== --- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py (original) +++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py Tue Mar 11 16:12:05 2008 @@ -4,6 +4,24 @@ def __init__(self, filename): self.filename = filename + def __lt__(self, other): + return self.filename < other.filename + + def __le__(self, other): + return self.filename <= other.filename + + def __eq__(self, other): + return self.filename == other.filename + + def __ne__(self, other): + return self.filename != other.filename + + def __gt__(self, other): + return self.filename > other.filename + + def __ge__(self, other): + return self.filename >= other.filename + class FileConfig(object): def __init__(self, name): self.name = name Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py ============================================================================== --- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py (original) +++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Tue Mar 11 16:12:05 2008 @@ -2,8 +2,11 @@ from debian_linux.config import ConfigCoreHierarchy +from kconfigeditor.kconfig.menu.file import FileConfig + class Files(dict): def __init__(self, root): + self.kernelarch = {} self.files = {} self.filenames = {} self.root = os.path.join(root, "debian/config") @@ -17,10 +20,13 @@ if f in self.files: f = self.files[f] else: - f = self.files.setdefault(f, File(None, f)) + f = self.files.setdefault(f, File(file(os.path.join(self.root, f)), f)) r.append_file(f) def _read_arch(self, arch): + config_entry = self.config.merge('base', arch) + self.kernelarch[arch,] = config_entry.get('kernel-arch', arch) + kconfig = self.check_config("%s/config" % arch, True, arch) self.filenames[arch,] = kconfig @@ -28,6 +34,7 @@ self._read_featureset(arch, featureset) def _read_base(self): + self.kernelarch[()] = None self.filenames[()] = self.check_config('config', True) for arch in self.config['base',]['arches']: @@ -38,6 +45,9 @@ if featureset != 'none': return + config_entry = self.config.merge('base', arch, featureset) + self.kernelarch[arch, featureset] = config_entry.get('kernel-arch', arch) + kconfig = [] kconfig.extend(self.check_config("featureset-%s/config" % featureset, False, None, featureset)) kconfig.extend(self.check_config("%s/%s/config" % (arch, featureset), False, arch, featureset)) @@ -47,6 +57,9 @@ self._read_flavour(arch, featureset, flavour) def _read_flavour(self, arch, featureset, flavour): + config_entry = self.config.merge('base', arch, featureset, flavour) + self.kernelarch[arch, featureset, flavour] = config_entry.get('kernel-arch', arch) + kconfig = [] kconfig.extend(self.check_config("%s/config.%s" % (arch, flavour), False, arch, None, flavour)) kconfig.extend(self.check_config("%s/%s/config.%s" % (arch, featureset, flavour), False, arch, featureset, flavour)) @@ -91,7 +104,86 @@ def append_file(self, item): self._files.append(item) -class File(object): +class File(dict): def __init__(self, fd, filename): self.filename = filename + self.read(fd) + + def _dump_file(self, fd, f): + ret = [] + for i in f: + if isinstance(i, FileConfig): + e = self.get(i.name, None) + if e is not None: + ret.append(e) + if ret: + ret[0:0] = ["##", "## file: %s" % f.filename, "##"] + ret.append('') + return ret + + def dump(self, root, menufiles): + fd = file(os.path.join(root, self.filename), 'w') + ret = [] + for f in menufiles: + ret.extend(self._dump_file(fd, f)) + for i in ret: + fd.write(str(i) + "\n") + + def read(self, f): + for line in iter(f.readlines()): + line = line.strip() + if line.startswith("CONFIG_"): + i = line.find('=') + option = line[7:i] + value = line[i+1:] + if value in ('y', 'm'): + entry = FileEntryTristate(option, value) + else: + entry = FileEntryString(option, value) + self[option] = entry + elif line.startswith("# CONFIG_"): + option = line[9:-11] + self[option] = FileEntryTristate(option) + elif line.startswith("#") or not line: + pass + else: + raise RuntimeError, "Can't recognize %s" % line + +# TODO +class FileEntryString(object): + __slots__ = "name", "value" + + def __init__(self, name, value): + self.name = name + self.value = value + + def __str__(self): + return "CONFIG_%s=%s" % (self.name, self.value) + +# TODO +class FileEntryTristate(object): + __slots__ = "name", "value" + + VALUE_NO = 0 + VALUE_YES = 1 + VALUE_MOD = 2 + + def __init__(self, name, value = None): + self.name = name + if value == 'n' or value is None: + self.value = self.VALUE_NO + elif value == 'y': + self.value = self.VALUE_YES + elif value == 'm': + self.value = self.VALUE_MOD + + def __str__(self): + conf = "CONFIG_%s" % self.name + if self.value == self.VALUE_NO: + return "# %s is not set" % conf + elif self.value == self.VALUE_YES: + return "%s=y" % conf + elif self.value == self.VALUE_MOD: + return "%s=m" % conf + _______________________________________________ Kernel-svn-changes mailing list Kernel-svn-changes@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes