[kernel-team] 06/86: Update.

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Mon Dec 21 00:34:52 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 b70a9637d40cd3a404e7d5ebf91e5fcccfa31e21
Author: Bastian Blank <waldi at debian.org>
Date:   Tue Mar 11 16:12:05 2008 +0000

    Update.
    
    svn path=/people/waldi/utils/kconfigeditor2/; revision=10800
---
 .../lib/kconfigeditor/kconfig/menu/all.py          | 10 ++-
 .../lib/kconfigeditor/kconfig/menu/file.py         | 18 ++++
 .../lib/kconfigeditor/kconfig/package/files.py     | 96 +++++++++++++++++++++-
 3 files changed, 118 insertions(+), 6 deletions(-)

diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
index 5fa8ae4..c9ddc69 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/all.py
@@ -5,7 +5,6 @@ from file import FileSource, Parser
 class All(object):
     def __init__(self, root, arches):
         self.files = {}
-        self.files_arch = {}
         self.filenames_all = []
         self.filenames_arch = {}
 
@@ -30,10 +29,13 @@ class All(object):
                     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
diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
index ed643a9..3f3e1f1 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
@@ -4,6 +4,24 @@ class File(list):
     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
diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
index ee30e1e..008115c 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
@@ -2,8 +2,11 @@ import os
 
 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 @@ class Files(dict):
                 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 @@ class Files(dict):
             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 @@ class Files(dict):
         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 @@ class Files(dict):
             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 @@ class FileList(object):
     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
+

-- 
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