[kernel] r7291 - dists/trunk/linux-2.6/debian/lib/python/debian_linux

Bastian Blank waldi at costa.debian.org
Sun Sep 3 08:10:04 UTC 2006


Author: waldi
Date: Sun Sep  3 08:10:03 2006
New Revision: 7291

Added:
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py

Log:
debian/lib/python/debian_linux/kconfig.py: Add.


Added: dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py	Sun Sep  3 08:10:03 2006
@@ -0,0 +1,77 @@
+__all__ = (
+    "kconfigfile",
+)
+
+class _entry(object):
+    __slots__ = "name"
+
+    def __init__(self, name):
+        self.name = name
+
+class _entry_string(_entry):
+    __slots__ = "value"
+
+    def __init__(self, name, value):
+        super(_entry_string, self).__init__(name)
+        self.value = value
+
+    def __str__(self):
+        return "CONFIG_%s=%s" % (self.name, self.value)
+
+class _entry_tristate(_entry):
+    __slots__ = "value"
+
+    VALUE_NO = 0
+    VALUE_YES = 1
+    VALUE_MOD = 2
+
+    def __init__(self, name, value = None):
+        super(_entry_tristate, self).__init__(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
+
+class kconfigfile(dict):
+    def __str__(self):
+        ret = []
+        for i in self.str_iter():
+            ret.append(i)
+        return '\n'.join(ret) + '\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 = _entry_tristate(option, value)
+                else:
+                    entry = _entry_string(option, value)
+                self[option] = entry
+            elif line.startswith("# CONFIG_"):
+                option = line[9:-11]
+                self[option] = _entry_tristate(option)
+            elif line.startswith("#") or not line:
+                pass
+            else:
+                raise RuntimeError, "Can't recognize %s" % line
+
+    def str_iter(self):
+        for key, value in self.iteritems():
+            yield str(value)
+



More information about the Kernel-svn-changes mailing list