From cbf32e29a130d22bc734b7778e6304ac9df2a3e8 Mon Sep 17 00:00:00 2001 From: Ulf Magnusson Date: Mon, 14 May 2018 18:00:40 +0200 Subject: Expand environment variables in strings directly Make "$FOO" directly reference the environment variable $FOO in e.g. 'source' statements, instead of the symbol FOO. Use os.path.expandvars() to expand strings (which preserves "$FOO" as-is if no environment variable FOO exists). This gets rid of the 'option env' "bounce" symbols, which are mostly just spam and are buggy in the C tools (dependencies aren't always respected, due to parsing and evaluation getting mixed up). The same change will probably appear soon in the C tools as well. Keep accepting 'option env' to preserve some backwards compatibility, but ignore it when expanding strings. For compatibility with the C tools, bounce symbols will need to be named the same as the environment variables they reference (which is the case for the Linux kernel). This is a compatibility break, so the major version will be bumped to 6 at the next release. The main motivation for adding this now is to allow recording properties on each MenuNode in a clean way. 'option env' symbols interact badly with delayed dependency propagation. Side note: I have a feeling that recording environment variable values might be redundant to trigger rebuilds if sync_deps() is run at each compile. It should detect all changes to symbol values due to environment variables changing value. --- testsuite.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'testsuite.py') diff --git a/testsuite.py b/testsuite.py index fbc511b..3f29ae3 100644 --- a/testsuite.py +++ b/testsuite.py @@ -808,10 +808,17 @@ g .format(repr(node), expected_loc, node_loc)) # Expanded in the 'source' statement in Klocation + os.environ["TESTS_DIR_FROM_ENV"] = "tests" os.environ["SUB_DIR_FROM_ENV"] = "sub" os.environ["srctree"] = "Kconfiglib/" + os.environ["_SOURCED"] = "_sourced" + os.environ["_RSOURCED"] = "_rsourced" + os.environ["_GSOURCED"] = "_gsourced" + os.environ["_GRSOURCED"] = "_grsourced" + + # Has symbol with empty help text, so disable warnings c = Kconfig("tests/Klocation", warn=False) @@ -830,7 +837,7 @@ g "tests/sub/Klocation_gsourced2:1", "tests/sub/Klocation_grsourced1:1", "tests/sub/Klocation_grsourced2:1", - "tests/Klocation:78") + "tests/Klocation:54") verify_locations(c.named_choices["CHOICE"].nodes, "tests/Klocation_sourced:5") @@ -1258,7 +1265,7 @@ g "defconfig_list symbol exist") # Referenced in Kdefconfig_existent(_but_n) - os.environ["BAR"] = "defconfig_2" + os.environ["FOO"] = "defconfig_2" c = Kconfig("Kconfiglib/tests/Kdefconfig_existent_but_n") verify(c.defconfig_filename is None, @@ -1267,7 +1274,7 @@ g c = Kconfig("Kconfiglib/tests/Kdefconfig_existent") verify(c.defconfig_filename == "Kconfiglib/tests/defconfig_2", - "defconfig_filename should return the existent file " + "defconfig_filename should return the existing file " "Kconfiglib/tests/defconfig_2") # Should also look relative to $srctree if the specified defconfig is a -- cgit v1.2.3