[kernel] r10799 - in people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig: menu package
Bastian Blank
waldi at alioth.debian.org
Tue Mar 11 15:33:29 UTC 2008
Author: waldi
Date: Tue Mar 11 15:33:25 2008
New Revision: 10799
Log:
Update.
Added:
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/__init__.py
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
Modified:
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
Added: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
==============================================================================
--- (empty file)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py Tue Mar 11 15:33:25 2008
@@ -0,0 +1,40 @@
+import os
+
+from file import FileSource, Parser
+
+class All(object):
+ def __init__(self, root, arches):
+ self.files = {}
+ self.files_arch = {}
+ self.filenames_all = []
+ self.filenames_arch = {}
+
+ for arch in arches:
+ work = ["arch/%s/Kconfig" % arch]
+ self.filenames_arch[arch] = []
+
+ while work:
+ filename = work.pop(0)
+ filename_list = filename.split('/')
+ if len(filename_list) > 2 and filename_list[0] == 'arch':
+ self.filenames_arch[arch].append(filename)
+ else:
+ self.filenames_all.append(filename)
+
+ if filename in self.files:
+ f = self.files[filename]
+ else:
+ f = self.files.setdefault(filename, Parser()(file(os.path.join(root, filename)), filename))
+
+ for i in f:
+ if isinstance(i, FileSource):
+ work.append(i.filename)
+
+ for arch in arches:
+ f = {}
+ for i in self.filenames_all:
+ f[i] = self.files[i]
+ 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 15:33:25 2008
@@ -18,7 +18,7 @@
def __repr__(self):
return "<%s(%s)>" % (self.__class__.__name__, self.filename)
-class _Parser(object):
+class Parser(object):
def __call__(self, fd, filename):
lineno = 0
Added: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/__init__.py
==============================================================================
Added: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
==============================================================================
--- (empty file)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Tue Mar 11 15:33:25 2008
@@ -0,0 +1,97 @@
+import os
+
+from debian_linux.config import ConfigCoreHierarchy
+
+class Files(dict):
+ def __init__(self, root):
+ self.files = {}
+ self.filenames = {}
+ self.root = os.path.join(root, "debian/config")
+ self.config = ConfigCoreHierarchy([self.root])
+
+ self._read_base()
+
+ for key, files in self.filenames.iteritems():
+ r = self.setdefault(key, FileList())
+ for f in files:
+ if f in self.files:
+ f = self.files[f]
+ else:
+ f = self.files.setdefault(f, File(None, f))
+ r.append_file(f)
+
+ def _read_arch(self, arch):
+ kconfig = self.check_config("%s/config" % arch, True, arch)
+ self.filenames[arch,] = kconfig
+
+ for featureset in self.config['base', arch]['featuresets']:
+ self._read_featureset(arch, featureset)
+
+ def _read_base(self):
+ self.filenames[()] = self.check_config('config', True)
+
+ for arch in self.config['base',]['arches']:
+ self._read_arch(arch)
+
+ def _read_featureset(self, arch, featureset):
+ # TODO
+ if featureset != 'none':
+ return
+
+ 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))
+ self.filenames[arch, featureset] = kconfig
+
+ for flavour in self.config['base', arch, featureset]['flavours']:
+ self._read_flavour(arch, featureset, flavour)
+
+ def _read_flavour(self, arch, featureset, flavour):
+ 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))
+ self.filenames[arch, featureset, flavour] = kconfig
+
+ def _get_config(self, *entry_name):
+ entry_real = ('image',) + entry_name
+ entry = self.config.get(entry_real, None)
+ if entry is None:
+ return None
+ return entry.get('configs', None)
+
+ def check_config_default(self, fail, f):
+ f1 = self.root + '/' + f
+ if os.path.exists(f1):
+ return [f]
+ if fail:
+ raise RuntimeError("%s unavailable" % f)
+ return []
+
+ def check_config_files(self, files):
+ ret = []
+ for f in files:
+ f1 = self.root + '/' + f
+ if os.path.exists(f1):
+ ret.append(f)
+ break
+ else:
+ raise RuntimeError("%s unavailable" % f)
+ return ret
+
+ def check_config(self, default, fail, *entry_name):
+ configs = self._get_config(*entry_name)
+ if configs is None:
+ return self.check_config_default(fail, default)
+ return self.check_config_files(configs)
+
+class FileList(object):
+ def __init__(self):
+ self._files = []
+
+ def append_file(self, item):
+ self._files.append(item)
+
+class File(object):
+ def __init__(self, fd, filename):
+ self.filename = filename
+
More information about the Kernel-svn-changes
mailing list