summaryrefslogtreecommitdiffstats
path: root/lib/bb/parse/__init__.py
diff options
context:
space:
mode:
authorPeter Seebach <peter.seebach@windriver.com>2013-01-18 11:45:22 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-18 12:33:50 +0000
commitb2dda721262da8abb7dc32d019e18fbc32ed8860 (patch)
tree8b4452c3ab11f6598ee041719159c2ade9738cfe /lib/bb/parse/__init__.py
parente12c1a485f96a4701144ac81179ae1af348e5bf3 (diff)
downloadbitbake-contrib-b2dda721262da8abb7dc32d019e18fbc32ed8860.tar.gz
bitbake: data_smart.py and friends: Track file inclusions for bitbake -e
This code adds inclusion history to bitbake -e output, showing which files were included, in what order. This doesn't completely resolve timing questions, because it doesn't show you which lines of a file were processed before or after a given include, but it does let you figure out what the path was by which a particular file ended up in your build at all. How it works: data_smart acquires a .history member, which is an IncludeHistory; this represents the inclusion of a file and all its inclusions, recursively. It provides methods for including files, for finishing inclusion (done as an __exit__), and for dumping the whole tree. The parser is modified to run includes inside a with() to push and pop the include filename. RP Modifications: a) Split Include and Variable tracking b) Replace deepcopy usage with dedicated copy function c) Simplify some variable and usage Signed-off-by: Peter Seebach <peter.seebach@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/parse/__init__.py')
-rw-r--r--lib/bb/parse/__init__.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py
index 4293d09c7..3f93ad2e6 100644
--- a/lib/bb/parse/__init__.py
+++ b/lib/bb/parse/__init__.py
@@ -87,7 +87,8 @@ def handle(fn, data, include = 0):
"""Call the handler that is appropriate for this file"""
for h in handlers:
if h['supports'](fn, data):
- return h['handle'](fn, data, include)
+ with data.inchistory.include(fn):
+ return h['handle'](fn, data, include)
raise ParseError("not a BitBake file", fn)
def init(fn, data):