summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
authorPeter Seebach <peter.seebach@windriver.com>2013-01-18 11:47:34 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-18 12:35:19 +0000
commitfe30cbc2cb0719092f19cba3b06a37e93260994c (patch)
tree715c87a0c77aa75255395b3e70796811ddce3859 /bitbake/lib/bb/cooker.py
parent4dd6d9139cb77f2b0ff7ab9482e853108efad5aa (diff)
downloadpoky-fe30cbc2cb0719092f19cba3b06a37e93260994c.tar.gz
bitbake: bitbake: data_smart.py and friends: Track variable history
This patch adds tracking of the history of variable assignments. The changes are predominantly localized to data_smart.py and parse/ast.py. cooker.py and data.py are altered to display the recorded data, and turn tracking on for the bitbake -e case. The data.py update_data() function warns DataSmart.finalize() to report the caller one further back up the tree. In general, d.setVar() does what it used to do. Optionally, arguments describing an operation may be appended; if none are present, the operation is implicitly ignored. If it's not ignored, it will attempt to infer missing information (name of variable, value assigned, file and line) by examining the traceback. This slightly elaborate process eliminates a category of problems in which the 'var' member of the keyword arguments dict is set, and a positional argument corresponding to 'var' is also set. It also makes calling much simpler for the common cases. The resulting output gives you a pretty good picture of what values got set, and how they got set. RP Modifications: a) Split from IncludeHistory to separate VariableHistory b) Add dedicated copy function instead of deepcopy c) Use COW for variables dict d) Remove 'value' loginfo value and just use 'details' e) Desensitise code for calling order (set 'op' before/after infer_caller_details was error prone) f) Fix bug where ?= "" wasn't shown correctly g) Log more set operations as some variables mysteriously acquired values previously h) Standardise infer_caller_details to be triggered from .record() where at all possible to reduce overhead in non-enabled cases i) Rename variable parameter names to match inference code j) Add VariableHistory emit() function to match IncludeHistory k) Fix handling of appendVar, prependVar and matching flag ops l) Use ignored=True to stop logging further events where appropriate (Bitbake rev: f00524a3729000cbcb3317fee933ac448fae5e2d) Signed-off-by: Peter Seebach <peter.seebach@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py10
1 files changed, 3 insertions, 7 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index f06b71c42c..caf1123496 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -177,6 +177,8 @@ class BBCooker:
177 177
178 def initConfigurationData(self): 178 def initConfigurationData(self):
179 self.configuration.data = bb.data.init() 179 self.configuration.data = bb.data.init()
180 if self.configuration.show_environment:
181 self.configuration.data.enableTracking()
180 182
181 if not self.server_registration_cb: 183 if not self.server_registration_cb:
182 self.configuration.data.setVar("BB_WORKERCONTEXT", "1") 184 self.configuration.data.setVar("BB_WORKERCONTEXT", "1")
@@ -185,13 +187,7 @@ class BBCooker:
185 bb.data.inheritFromOS(self.configuration.data, self.savedenv, filtered_keys) 187 bb.data.inheritFromOS(self.configuration.data, self.savedenv, filtered_keys)
186 188
187 def loadConfigurationData(self): 189 def loadConfigurationData(self):
188 self.configuration.data = bb.data.init() 190 self.initConfigurationData()
189
190 if not self.server_registration_cb:
191 self.configuration.data.setVar("BB_WORKERCONTEXT", "1")
192
193 filtered_keys = bb.utils.approved_variables()
194 bb.data.inheritFromOS(self.configuration.data, self.savedenv, filtered_keys)
195 191
196 try: 192 try:
197 self.parseConfigurationFiles(self.configuration.prefile, 193 self.parseConfigurationFiles(self.configuration.prefile,