[bitbake-devel] [PATCH 1/3] data_smart: Preserve history when renaming variables

Richard Purdie richard.purdie at linuxfoundation.org
Tue Oct 16 19:27:07 UTC 2018


Currently when a variable is renamed, all the variable history is lost.
This makes it hard for users to understand/debug where values came from.

Improve the code so that history is preserved across renamed variables.

(Expanded variable key names are a special case of variable renaming)

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/data_smart.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 7b09af5cf1..4434142a02 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -267,6 +267,16 @@ class VariableHistory(object):
             return
         self.variables[var].append(loginfo.copy())
 
+    def rename_variable_hist(self, oldvar, newvar):
+        if not self.dataroot._tracking:
+            return
+        if oldvar not in self.variables:
+            return
+        if newvar not in self.variables:
+            self.variables[newvar] = []
+        for i in self.variables[oldvar]:
+            self.variables[newvar].append(i.copy())
+
     def variable(self, var):
         remote_connector = self.dataroot.getVar('_remote_data', False)
         if remote_connector:
@@ -619,6 +629,7 @@ class DataSmart(MutableMapping):
 
         val = self.getVar(key, 0, parsing=True)
         if val is not None:
+            self.varhistory.rename_variable_hist(key, newkey)
             loginfo['variable'] = newkey
             loginfo['op'] = 'rename from %s' % key
             loginfo['detail'] = val
-- 
2.17.1




More information about the bitbake-devel mailing list