scripts: fpdiff: iterate on namespaces
Iterate on 3 main namespace to avoid collision in identifiers sharing
the same name at the top level when creating the diff.
Fixes #44940
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/footprint/fpdiff.py b/scripts/footprint/fpdiff.py
index 194d438..7027250 100755
--- a/scripts/footprint/fpdiff.py
+++ b/scripts/footprint/fpdiff.py
@@ -36,36 +36,39 @@
args = parse_args()
with open(args.file1, "r") as f:
- data = json.load(f)
- root1 = importer.import_(data['symbols'])
+ data1 = json.load(f)
with open(args.file2, "r") as f:
- data = json.load(f)
- root2 = importer.import_(data['symbols'])
+ data2 = json.load(f)
- for node in PreOrderIter(root1):
- # pylint: disable=undefined-loop-variable
- n = find(root2, lambda node2: node2.identifier == node.identifier)
- if n:
- if n.size != node.size:
- diff = n.size - node.size
- if diff == 0:
- continue
- if not n.children or not n.parent:
- if diff < 0:
- print(f"{n.identifier} -> {Fore.GREEN}{diff}{Fore.RESET}")
- else:
- print(f"{n.identifier} -> {Fore.RED}+{diff}{Fore.RESET}")
+ for idx, ch in enumerate(data1['symbols']['children']):
+ root1 = importer.import_(ch)
+ root2 = importer.import_(data2['symbols']['children'][idx])
+ print(f"{root1.name}\n+++++++++++++++++++++")
- else:
- if not node.children:
- print(f"{node.identifier} ({Fore.GREEN}-{node.size}{Fore.RESET}) disappeared.")
+ for node in PreOrderIter(root1):
+ # pylint: disable=undefined-loop-variable
+ n = find(root2, lambda node2: node2.identifier == node.identifier)
+ if n:
+ if n.size != node.size:
+ diff = n.size - node.size
+ if diff == 0:
+ continue
+ if not n.children or not n.parent:
+ if diff < 0:
+ print(f"{n.identifier} -> {Fore.GREEN}{diff}{Fore.RESET}")
+ else:
+ print(f"{n.identifier} -> {Fore.RED}+{diff}{Fore.RESET}")
- for node in PreOrderIter(root2):
- n = find(root1, lambda node2: node2.identifier == node.identifier)
- if not n:
- if not node.children and node.size != 0:
- print(f"{node.identifier} ({Fore.RED}+{node.size}{Fore.RESET}) is new.")
+ else:
+ if not node.children:
+ print(f"{node.identifier} ({Fore.GREEN}-{node.size}{Fore.RESET}) disappeared.")
+
+ for node in PreOrderIter(root2):
+ n = find(root1, lambda node2: node2.identifier == node.identifier)
+ if not n:
+ if not node.children and node.size != 0:
+ print(f"{node.identifier} ({Fore.RED}+{node.size}{Fore.RESET}) is new.")
if __name__ == "__main__":