summaryrefslogtreecommitdiff
path: root/examples/allnoconfig.py
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2015-03-13 00:53:49 +0100
committerUlf Magnusson <ulfalizer@gmail.com>2015-03-13 01:13:14 +0100
commit668d3b80a310dfa2850f8b61bca3a15679da5ed1 (patch)
tree6a639370d7058c71bc81d424887177f4d379e9c2 /examples/allnoconfig.py
parent5cc87664ae6fe0b05b6f2d3cc98aae864f9eafb0 (diff)
Fix examples/allnoconfig.py testsuite hang with v4.0-rc3.
Settings the user value to 'y' does not guarantee that the (actual) value will become 'y', as the symbol's visibility still acts as an upper bound on the value.
Diffstat (limited to 'examples/allnoconfig.py')
-rw-r--r--examples/allnoconfig.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/examples/allnoconfig.py b/examples/allnoconfig.py
index 3d3b3c1..9423352 100644
--- a/examples/allnoconfig.py
+++ b/examples/allnoconfig.py
@@ -8,20 +8,22 @@ import sys
conf = kconfiglib.Config(sys.argv[1])
+# Do an initial pass to give allnoconfig_y symbols the user value 'y'. It might
+# be possible to handle this through "successive raising" similarly to the
+# "successive lowering" below too, but keep it simple.
+for sym in conf:
+ if sym.get_type() in (kconfiglib.BOOL, kconfiglib.TRISTATE) and \
+ sym.is_allnoconfig_y():
+ sym.set_user_value('y')
+
done = False
while not done:
done = True
for sym in conf:
- if sym.is_allnoconfig_y():
- if sym.get_value() != 'y':
- sym.set_user_value('y')
- # We just changed the value of some symbol. As this may affect
- # other symbols, keep going.
- done = False
# Choices take care of themselves for allnoconfig, so we only need to
# worry about non-choice symbols
- elif not sym.is_choice_symbol():
+ if not sym.is_choice_symbol() and not sym.is_allnoconfig_y():
# If we can assign a value to the symbol (where "n", "m" and "y"
# are ordered from lowest to highest), then assign the lowest
# value. lower_bound() returns None for symbols whose values cannot