diff options
| author | Ulf Magnusson <ulfalizer@gmail.com> | 2018-05-18 07:34:45 +0200 |
|---|---|---|
| committer | Ulf Magnusson <ulfalizer@gmail.com> | 2018-05-18 07:34:45 +0200 |
| commit | b9384a1738b2eb16594ba007fec979bb16334357 (patch) | |
| tree | 8f47823cb01c7b88ace4451234e9aaf1107370fe | |
| parent | 0a70863b4f753eac4502fad781923d6176855757 (diff) | |
Restore compatibility with $UNAME_RELEASE
UNAME_RELEASE is expanded in one of the 'default's of the DEFCONFIG_LIST
symbol in the Linux kernel. This broke after "$FOO" was changed to
directly expand to the value of the environment variable FOO, rather
than to the value of the symbol FOO.
Restore compatibility with a small wrapper.
| -rw-r--r-- | kconfiglib.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/kconfiglib.py b/kconfiglib.py index 9c2e614..b673c10 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -730,7 +730,7 @@ class Kconfig(object): """ See the class documentation. """ - return os.path.expandvars(self.top_node.prompt[0]) + return _expand(self.top_node.prompt[0]) @property def defconfig_filename(self): @@ -743,7 +743,7 @@ class Kconfig(object): for filename, cond in self.defconfig_list.defaults: if expr_value(cond): try: - with self._open(os.path.expandvars(filename.str_value)) as f: + with self._open(_expand(filename.str_value)) as f: return f.name except IOError: continue @@ -1928,20 +1928,20 @@ class Kconfig(object): prev.next = prev = node elif t0 == _T_SOURCE: - self._enter_file(os.path.expandvars(self._expect_str_and_eol())) + self._enter_file(_expand(self._expect_str_and_eol())) prev = self._parse_block(None, parent, prev) self._leave_file() elif t0 == _T_RSOURCE: self._enter_file(os.path.join( os.path.dirname(self._filename), - os.path.expandvars(self._expect_str_and_eol()) + _expand(self._expect_str_and_eol()) )) prev = self._parse_block(None, parent, prev) self._leave_file() elif t0 in (_T_GSOURCE, _T_GRSOURCE): - pattern = os.path.expandvars(self._expect_str_and_eol()) + pattern = _expand(self._expect_str_and_eol()) if t0 == _T_GRSOURCE: # Relative gsource pattern = os.path.join(os.path.dirname(self._filename), @@ -4506,6 +4506,15 @@ def _make_depend_on(sym, expr): _internal_error("Internal error while fetching symbols from an " "expression with token stream {}.".format(expr)) +def _expand(s): + # The predefined UNAME_RELEASE symbol is expanded in one of the 'default's + # of the DEFCONFIG_LIST symbol in the Linux kernel. This function maintains + # compatibility with it even though environment variables in strings are + # now expanded directly. + + # platform.uname() has an internal cache, so this is speedy enough + return os.path.expandvars(s.replace("$UNAME_RELEASE", platform.uname()[2])) + def _parenthesize(expr, type_): # expr_str() helper. Adds parentheses around expressions of type 'type_'. |
