[kernel-team] 46/86: * bin/process.py: Update to new Files object. * lib/kconfigeditor/kconfig/config.py - Make a list before sorting. - Remove filename attribute. * lib/kconfigeditor/package.py: Rewrite collection of config files.

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Mon Dec 21 00:34:57 UTC 2015


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch benh/kconfigeditor2
in repository kernel-team.

commit d594878dade59f1d7267f4e1218a24ce84c7d341
Author: Bastian Blank <waldi at debian.org>
Date:   Tue Mar 17 18:36:23 2009 +0000

    * bin/process.py: Update to new Files object.
    * lib/kconfigeditor/kconfig/config.py
      - Make a list before sorting.
      - Remove filename attribute.
    * lib/kconfigeditor/package.py: Rewrite collection of config files.
    
    svn path=/people/waldi/utils/kconfigeditor2/; revision=13158
---
 utils/kconfigeditor2/bin/process.py                |  26 ++--
 .../lib/kconfigeditor/kconfig/config.py            |   5 +-
 utils/kconfigeditor2/lib/kconfigeditor/package.py  | 156 ++++++++++-----------
 3 files changed, 84 insertions(+), 103 deletions(-)

diff --git a/utils/kconfigeditor2/bin/process.py b/utils/kconfigeditor2/bin/process.py
index 274069e..938eef0 100755
--- a/utils/kconfigeditor2/bin/process.py
+++ b/utils/kconfigeditor2/bin/process.py
@@ -7,30 +7,20 @@ def main(package, source, config_output, ignore_silent):
     from kconfigeditor.package import Files
 
     package = Files(package)
-    arches = {}
-    for i in package.kernelarch.values():
-        if i is not None:
-            arches[i] = 1
-    arches = arches.keys()
+    menu = All(source, package.kernelarches())
 
-    menu = All(source, arches)
-
-    files = {}
-    for key, filelist in package.iteritems():
-        for f in filelist._files:
-            files.setdefault(f.filename, (f, package.kernelarch[key]))
-
-    for file, arch in files.itervalues():
-        if arch is None:
-            menufiles = menu.files_all.values()
+    for filename, data in package.items():
+        kernelarch = data['kernelarch']
+        if kernelarch:
+            menufiles = menu.files_arch[kernelarch].itervalues()
         else:
-            menufiles = menu.files_arch[arch].values()
+            menufiles = menu.files_all.itervalues()
 
-        filename = os.path.join(config_output, file.filename)
+        filename = os.path.join(config_output, filename)
         filename_tmp = filename + '.tmp'
         f = open(filename_tmp, 'w')
         try:
-            file.write(f, menufiles, ignore_silent)
+            data['file'].write(f, menufiles)
             f.close()
             os.rename(filename_tmp, filename)
         except:
diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py
index 7c36727..065b8db 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py
@@ -6,9 +6,7 @@ from .menu import MenuEntryChoice, MenuEntryConfig
 
 
 class File(dict):
-    def __init__(self, fd, filename):
-        self.filename = filename
-
+    def __init__(self, fd):
         self.read(fd)
 
     def _write(self, menufiles):
@@ -113,6 +111,7 @@ class File(dict):
                 filename_list[-1] = filename_list[-1].replace('Kconfig.', '')
             return filename_list
 
+        menufiles = list(menufiles)
         menufiles.sort(key=menufiles_cmp_key)
 
         for data in self._write(menufiles):
diff --git a/utils/kconfigeditor2/lib/kconfigeditor/package.py b/utils/kconfigeditor2/lib/kconfigeditor/package.py
index 1dc917a..54ca1a6 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/package.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/package.py
@@ -7,103 +7,95 @@ from debian_linux.config import ConfigCoreHierarchy
 from .kconfig.menu import MenuEntryChoice, MenuEntryConfig
 from .kconfig.config import File
 
-class Files(dict):
+
+class Files(object):
     def __init__(self, root):
-        self.kernelarch = {}
-        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(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
+        self.config_root = os.path.join(root, "debian/config")
+        self.config = ConfigCoreHierarchy([self.config_root])
 
-        for featureset in self.config['base', arch]['featuresets']:
-            self._read_featureset(arch, featureset)
+        self.files = files = {}
 
-    def _read_base(self):
-        self.kernelarch[()] = None
-        self.filenames[()] = self.check_config('config', True)
+        for filename, key, kernelarch in self._collect():
+            if filename in files:
+                data = files[filename]
+                data['keys'].append(key)
+                if data['kernelarch'] != kernelarch:
+                    data['kernelarch'] = None
+            else:
+                file = File(open(os.path.join(self.config_root, filename)))
+                files[filename] = {'file': file, 'keys': [key], 'kernelarch': kernelarch}
+
+    def _collect(self):
+        for filename in self._check_config('config'):
+            yield filename, (), None
 
         for arch in self.config['base',]['arches']:
-            self._read_arch(arch)
+            for data in self._collect_arch(arch):
+                yield data
+
+    def _collect_arch(self, arch):
+        key = arch,
+        kernelarch = self.config.merge('base', arch).get('kernel-arch')
 
-    def _read_featureset(self, arch, featureset):
+        for filename in self._check_config("%s/config" % arch, arch):
+            yield filename, key, kernelarch
+
+        for featureset in self.config['base', arch]['featuresets']:
+            for data in self._collect_featureset(arch, featureset):
+                yield data
+
+    def _collect_featureset(self, arch, featureset):
         # TODO
         if featureset != 'none':
             return
 
-        config_entry = self.config.merge('base', arch, featureset)
-        self.kernelarch[arch, featureset] = config_entry.get('kernel-arch', arch)
+        key = arch, featureset
+        kernelarch = self.config.merge('base', arch, featureset).get('kernel-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))
-        self.filenames[arch, featureset] = kconfig
+        for filename in self._check_config("featureset-%s/config" % featureset, None, featureset):
+            yield filename, key, kernelarch
+        for filename in self._check_config("%s/%s/config" % (arch, featureset), arch, featureset):
+            yield filename, key, kernelarch
 
         for flavour in self.config['base', arch, featureset]['flavours']:
-            self._read_flavour(arch, featureset, flavour)
+            for data in self._collect_flavour(arch, featureset, flavour):
+                yield data
 
-    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)
+    def _collect_flavour(self, arch, featureset, flavour):
+        key = arch, featureset, flavour
+        kernelarch = self.config.merge('base', arch, featureset, flavour).get('kernel-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))
-        self.filenames[arch, featureset, flavour] = kconfig
+        for filename in self._check_config("%s/config.%s" % (arch, flavour), arch, None, flavour):
+            yield filename, key, kernelarch
+        for filename in self._check_config("%s/%s/config.%s" % (arch, featureset, flavour), arch, featureset, flavour):
+            yield filename, key, kernelarch
 
-    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)
+    def _check_config_default(self, f):
+        if os.path.exists(os.path.join(self.config_root, f)):
+            yield f
 
-class FileList(object):
-    def __init__(self):
-        self._files = []
-
-    def append_file(self, item):
-        self._files.append(item)
+    def _check_config_files(self, files):
+        for f in files:
+            if os.path.exists(os.path.join(self.config_root, f)):
+                yield f
 
+    def _check_config(self, default, *entry_name):
+        entry_real = ('image',) + entry_name
+        entry = self.config.get(entry_real)
+        if entry:
+            configs = entry.get('configs')
+            if configs:
+                return self._check_config_files(configs)
+        return self._check_config_default(default)
+
+    def items(self):
+        for i in self.files.iteritems():
+            yield i
+
+    def kernelarches(self):
+        ret = set()
+        for data in self.files.itervalues():
+            kernelarch = data['kernelarch']
+            if kernelarch:
+                ret.add(kernelarch)
+        return ret

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/kernel-team.git



More information about the Kernel-svn-changes mailing list