From 5d693b2e66451aedfd694ffde4dba7d4b74afa46 Mon Sep 17 00:00:00 2001 From: Ulf Magnusson Date: Fri, 5 Jan 2018 20:37:00 +0100 Subject: Don't write out 'option env' symbols to C header Oversight. SYMBOL_AUTO (env_var) being set indirectly clears SYMBOL_WRITE (_write_to_conf) in sym_calc_value(). The .config case was already fine due to an explicit env_var check. Even non-visible env. symbols ended up in the header, due to 'option env' internally adding a default. Disallow user values altogether on 'option env' symbols, even if specified manually. This matches the C implementation. Add a warning too. --- kconfiglib.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'kconfiglib.py') diff --git a/kconfiglib.py b/kconfiglib.py index f31a71c..05cc172 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -2474,6 +2474,10 @@ class Symbol(object): val = val_expr.str_value break + # Corresponds to SYMBOL_AUTO in the C implementation + if self.env_var is not None: + self._write_to_conf = False + self._cached_str_val = val return val @@ -2572,10 +2576,6 @@ class Symbol(object): """ See the class documentation. """ - if self.env_var is not None: - # Corresponds to SYMBOL_AUTO being set in the C implementation - return None - # Note: _write_to_conf is determined when the value is calculated. This # is a hidden function call due to property magic. val = self.str_value @@ -2666,6 +2666,12 @@ class Symbol(object): return False + if self.env_var is not None: + self.kconfig._warn("ignored attempt to assign user value to " + "{}, which gets its value from the environment" + .format(self.name)) + return False + if self.choice and value == 2: # Remember this as a choice selection only. Makes switching back # and forth between choice modes work as expected, and makes the -- cgit v1.2.3