[kernel] r10846 - people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package
Bastian Blank
waldi at alioth.debian.org
Fri Mar 14 13:07:57 UTC 2008
Author: waldi
Date: Fri Mar 14 13:07:55 2008
New Revision: 10846
Log:
lib/kconfigeditor/kconfig/package/files.py:
Only accept option with prompt if defined more than once.
Modified:
people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py (original)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py Fri Mar 14 13:07:55 2008
@@ -110,41 +110,59 @@
self.read(fd)
- def _dump_file_choice(self, processed, ignored, f):
+ def _dump_file_choice(self, processed, ignored, have_prompt, f):
ret = []
for i in f:
if isinstance(i, FileConfig):
- ret.extend(self._dump_file_config(processed, ignored, i))
+ ret.extend(self._dump_file_config(processed, ignored, have_prompt, i))
if ret:
ret.insert(0, "## choice: %s" % f.prompt)
ret.append('## end choice')
return ret
- def _dump_file_config(self, processed, ignored, i):
- ret = []
+ def _dump_file_config(self, processed, ignored, have_prompt, i):
e = self.get(i.name, None)
- if e is not None:
- if i.name in processed:
- pass
- elif not i.prompt and ignored is not None:
+ if e is None:
+ return []
+
+ if i.name in processed:
+ return []
+ if not i.prompt:
+ if i.name in have_prompt:
+ return []
+ if ignored is not None:
ignored.add(i.name)
- else:
- processed.add(i.name)
- ret.append(e)
- return ret
+ return []
+ processed.add(i.name)
+ return [e]
- def _dump_file(self, processed, ignored, f):
+ def _dump_file(self, processed, ignored, have_prompt, f):
ret = []
for i in f:
if isinstance(i, FileConfig):
- ret.extend(self._dump_file_config(processed, ignored, i))
+ ret.extend(self._dump_file_config(processed, ignored, have_prompt, i))
elif isinstance(i, FileChoice):
- ret.extend(self._dump_file_choice(processed, ignored, i))
+ ret.extend(self._dump_file_choice(processed, ignored, have_prompt, i))
if ret:
ret[0:0] = ["##", "## file: %s" % f.filename, "##"]
ret.append('')
return ret
+ def _dump_prompt_file_config(self, have_prompt, i):
+ e = self.get(i.name, None)
+ if e is not None:
+ if i.prompt:
+ have_prompt.add(i.name)
+
+ def _dump_prompt_file(self, have_prompt, f):
+ for i in f:
+ if isinstance(i, FileConfig):
+ self._dump_prompt_file_config(have_prompt, i)
+ elif isinstance(i, FileChoice):
+ for i1 in i:
+ if isinstance(i1, FileConfig):
+ self._dump_prompt_file_config(have_prompt, i1)
+
def dump(self, root, menufiles, ignore_silent = False):
filename = os.path.join(root, self.filename)
if not os.path.exists(os.path.dirname(filename)):
@@ -161,13 +179,17 @@
menufiles.sort(key = menufiles_cmp_key)
+ have_prompt = set()
+ for f in menufiles:
+ self._dump_prompt_file(have_prompt, f)
+
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, f))
+ ret.extend(self._dump_file(processed, ignored_sub, have_prompt, f))
s = set(self.keys())
unprocessed = s - processed - ignored
More information about the Kernel-svn-changes
mailing list