summaryrefslogtreecommitdiff
path: root/kconfiglib.py
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2018-08-18 01:07:23 +0200
committerUlf Magnusson <ulfalizer@gmail.com>2018-08-18 01:10:41 +0200
commitdf97bcaea2d6c24ddd62c4e9685d0db54aade092 (patch)
treec7c0e57c16dc05da7fcae8388241dfdb2c0c1893 /kconfiglib.py
parent3c5ae3f36cf626e79f281b80706b617b76f57060 (diff)
Revert "Fix $srctree logic for the top-level Kconfig file"
This reverts commit 8a3999bc708e8468ff79665e3cbdfccd603160e1. I realized that this should go in a major release at least, because it has the potential to break scripts that rely on the old behavior of ignoring $srctree for the filename passed to Kconfig.__init__(). A dummy release will bump the version to 9.4.2. Any future release with the change will be 10.0.0.
Diffstat (limited to 'kconfiglib.py')
-rw-r--r--kconfiglib.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/kconfiglib.py b/kconfiglib.py
index 0714d48..68f157b 100644
--- a/kconfiglib.py
+++ b/kconfiglib.py
@@ -610,14 +610,20 @@ class Kconfig(object):
the right Kconfig is included from there (arch/$SRCARCH/Kconfig as of
writing).
- If $srctree is set, 'filename' will be looked up relative to it.
- $srctree is also used to look up source'd files within Kconfig files.
- See the class documentation.
-
If you are using Kconfiglib via 'make scriptconfig', the filename of
the base base Kconfig file will be in sys.argv[1]. It's currently
always "Kconfig" in practice.
+ The $srctree environment variable is used to look up Kconfig files
+ referenced in Kconfig files if set. See the class documentation.
+
+ Note: '(o)source' statements in Kconfig files always work relative to
+ $srctree (or the current directory if $srctree is unset), even if
+ 'filename' is a path with directories. This allows a subset of
+ Kconfig files to be loaded without breaking references to other
+ Kconfig files, e.g. by doing Kconfig("./sub/Kconfig"). sub/Kconfig
+ might expect to be sourced by ./Kconfig.
+
warn (default: True):
True if warnings related to this configuration should be generated.
This can be changed later with Kconfig.enable/disable_warnings(). It
@@ -731,7 +737,7 @@ class Kconfig(object):
self.top_node.prompt = ("Main menu", self.y)
self.top_node.parent = None
self.top_node.dep = self.y
- self.top_node.filename = filename
+ self.top_node.filename = os.path.relpath(filename, self.srctree)
self.top_node.linenr = 1
# Parse the Kconfig files
@@ -745,11 +751,11 @@ class Kconfig(object):
self._filestack = []
# The current parsing location
- self._filename = filename
+ self._filename = os.path.relpath(filename, self.srctree)
self._linenr = 0
# Open the top-level Kconfig file
- self._file = self._open(os.path.join(self.srctree, filename), "r")
+ self._file = self._open(filename, "r")
try:
# Parse everything