summaryrefslogtreecommitdiff
path: root/kconfiglib.py
diff options
context:
space:
mode:
authorSebastian Bøe <sebastian.boe@nordicsemi.no>2018-01-15 12:46:30 +0100
committerSebastian Bøe <sebastian.boe@nordicsemi.no>2018-01-15 13:39:15 +0100
commit94c63de77c7a3422347e59e168b05174d0b9e84d (patch)
tree5580ef57db28ef4ad508d19e836d17755f21b95b /kconfiglib.py
parent0ae6a04dc3e1c799ae7bd2aa6df63e30309fef36 (diff)
Support disabling warnings for redundant assignments
The Linux Kernel's merge_config.sh defaults to disabling warnings for redundant assignments and has support for enabling them specifically. This patch reproduces this behaviour in kconfiglib except that we retaing kconfiglib's default behaviour of enabling the warnings. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
Diffstat (limited to 'kconfiglib.py')
-rw-r--r--kconfiglib.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/kconfiglib.py b/kconfiglib.py
index 261dc93..d91c27c 100644
--- a/kconfiglib.py
+++ b/kconfiglib.py
@@ -486,6 +486,7 @@ class Kconfig(object):
__slots__ = (
"_choices",
"_print_undef_assign",
+ "_print_redun_assign",
"_print_warnings",
"_set_re_match",
"_unset_re_match",
@@ -561,6 +562,7 @@ class Kconfig(object):
self._print_warnings = warn
self._print_undef_assign = False
+ self._print_redun_assign = True
self.syms = {}
self.const_syms = {}
@@ -808,10 +810,14 @@ class Kconfig(object):
display_val = val
display_user_val = sym.user_value
- self._warn('{} set more than once. Old value: "{}", new '
- 'value: "{}".'
- .format(name, display_user_val, display_val),
- filename, linenr)
+ warn_msg = '{} set more than once. Old value: "{}", new value: "{}".'.format(
+ name, display_user_val, display_val
+ )
+
+ if display_user_val == display_val:
+ self._warn_redun_assign(warn_msg, filename, linenr)
+ else:
+ self._warn( warn_msg, filename, linenr)
sym.set_value(val)
@@ -1032,6 +1038,19 @@ class Kconfig(object):
"""
self._print_undef_assign = False
+ def enable_redun_warnings(self):
+ """
+ Enables warnings for redundant assignments to symbols. Printed to
+ stderr. Enabled by default.
+ """
+ self._print_redun_assign = True
+
+ def disable_redun_warnings(self):
+ """
+ See enable_redun_warnings().
+ """
+ self._print_redun_assign = False
+
def __repr__(self):
"""
Returns a string with information about the Kconfig object when it is
@@ -1046,6 +1065,8 @@ class Kconfig(object):
"warnings " + ("enabled" if self._print_warnings else "disabled"),
"undef. symbol assignment warnings " +
("enabled" if self._print_undef_assign else "disabled"),
+ "redundant symbol assignment warnings " +
+ ("enabled" if self._print_redun_assign else "disabled")
)))
#
@@ -2122,6 +2143,12 @@ class Kconfig(object):
'attempt to assign the value "{}" to the undefined symbol {}' \
.format(val, name), filename, linenr)
+ def _warn_redun_assign(self, msg, filename=None, linenr=None):
+ """
+ See the class documentation.
+ """
+ if self._print_redun_assign:
+ _stderr_msg("warning: " + msg, filename, linenr)
class Symbol(object):
"""