[kernel] r13138 - in people/waldi/utils/kconfigeditor2: bin lib/kconfigeditor/kconfig

Bastian Blank waldi at alioth.debian.org
Mon Mar 16 22:04:52 UTC 2009


Author: waldi
Date: Mon Mar 16 22:04:50 2009
New Revision: 13138

Log:
Update.


Modified:
   people/waldi/utils/kconfigeditor2/bin/process.py
   people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py

Modified: people/waldi/utils/kconfigeditor2/bin/process.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/bin/process.py	(original)
+++ people/waldi/utils/kconfigeditor2/bin/process.py	Mon Mar 16 22:04:50 2009
@@ -35,6 +35,7 @@
             os.rename(filename_tmp, filename)
         except:
             os.unlink(filename_tmp)
+            raise
 
 if __name__ == '__main__':
     try:

Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py	(original)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/config.py	Mon Mar 16 22:04:50 2009
@@ -11,51 +11,83 @@
 
         self.read(fd)
 
-    def _dump_file_choice(self, processed, ignored, visible, f):
+    def _write(self, menufiles):
+        visible = self._write_check_visible(menufiles)
+
+        processed = set()
+        ignored = set()
+
+        for file in menufiles:
+            for i in self._write_file(processed, ignored, visible, file):
+                yield i
+
+        unprocessed = set(self) - processed - ignored
+        if unprocessed:
+            yield '##'
+            yield '## file: unknown'
+            yield '##'
+            unprocessed = list(unprocessed)
+            unprocessed.sort()
+            for name in unprocessed:
+                yield str(self.get(name))
+            yield ''
+
+    def _write_file(self, processed, ignored, visible, file):
+        ret = []
+
+        for entry in file:
+            if isinstance(entry, MenuEntryConfig):
+                ret.extend(self._write_entry_config(processed, ignored, visible, entry))
+            elif isinstance(entry, MenuEntryChoice):
+                ret.extend(self._write_entry_choice(processed, ignored, visible, entry))
+
+        if ret:
+            yield '##'
+            yield '## file: %s' % file.filename
+            yield '##'
+            for i in ret:
+                yield i
+            yield ''
+
+    def _write_entry_choice(self, processed, ignored, visible, entry):
         ret = []
         nr = 0
-        for i in f:
-            if isinstance(i, MenuEntryConfig):
-                r = self._dump_file_config(processed, ignored, visible, i)
+
+        for subentry in entry:
+            if isinstance(subentry, MenuEntryConfig):
+                r = list(self._write_entry_config(processed, ignored, visible, subentry))
+                ret.extend(r)
                 if r:
-                    ret.extend(r)
                     nr += 1
-        incomplete = len(f) != nr
-        if ret:
-            if incomplete:
-                ret.insert(0, "## choice: INCOMPLETE: %s" % f.prompt)
-            else:
-                ret.insert(0, "## choice: %s" % f.prompt)
-            ret.append('## end choice')
-        return ret
 
-    def _dump_file_config(self, processed, ignored, visible, i):
-        e = self.get(i.name, None)
-        if e is None:
-            return []
-
-        if i.name in processed:
-            return []
-        if not i.prompt:
-            if i.name in visible:
-                return []
-            if ignored is not None:
-                ignored.add(i.name)
-                return []
-        processed.add(i.name)
-        return e.dump(i)
+        incomplete = len(entry) != nr
 
-    def _dump_file(self, processed, ignored, visible, f):
-        ret = []
-        for i in f:
-            if isinstance(i, MenuEntryConfig):
-                ret.extend(self._dump_file_config(processed, ignored, visible, i))
-            elif isinstance(i, MenuEntryChoice):
-                ret.extend(self._dump_file_choice(processed, ignored, visible, i))
         if ret:
-            ret[0:0] = ["##", "## file: %s" % f.filename, "##"]
-            ret.append('')
-        return ret
+            if incomplete and 0:
+                yield '## choice: INCOMPLETE: %s' % entry.prompt
+            else:
+                yield '## choice: %s' % entry.prompt
+            for i in ret:
+                yield i
+            yield '## end choice'
+
+    def _write_entry_config(self, processed, ignored, visible, entry):
+        value = self.get(entry.name)
+        if value is None:
+            return
+
+        if entry.name in processed:
+            return
+
+        if not entry.prompt:
+            if entry.name in visible:
+                return
+            ignored.add(entry.name)
+            return
+
+        processed.add(entry.name)
+        for i in value.dump(entry):
+            yield i
 
     def _write_check_visible(self, menufiles):
         ret = set()
@@ -72,7 +104,9 @@
         for menuentry in flatten():
             entry = self.get(menuentry.name)
             if entry and menuentry.prompt:
-                visible.add(menuentry.name)
+                ret.add(menuentry.name)
+
+        return ret
 
     def write(self, fd, menufiles, ignore_silent=False):
         def menufiles_cmp_key(entry):
@@ -85,29 +119,8 @@
 
         menufiles.sort(key=menufiles_cmp_key)
 
-        visible = self.__write_check_visible(menufiles)
-
-        ret = []
-        processed = set()
-        ignored_sub = ignored = set()
-        if not ignore_silent:
-            ignored_sub = None
-        for f in menufiles:
-            ret.extend(self._dump_file(processed, ignored_sub, visible, f))
-
-        s = set(self.keys())
-        unprocessed = s - processed - ignored
-        if unprocessed:
-            ret.extend(["##", "## file: unknown", "##"])
-            unprocessed = list(unprocessed)
-            unprocessed.sort()
-            for i in unprocessed:
-                e = self.get(i)
-                ret.append(e)
-            ret.append('')
-
-        for i in ret:
-            fd.write(str(i) + "\n")
+        for data in self._write(menufiles):
+            fd.write(data + '\n')
 
     def read(self, f):
         comments = []



More information about the Kernel-svn-changes mailing list