mirror of https://github.com/thesofproject/sof.git
xtensa-build-zephyr.py: avoid showing wrong layout of installed files
If each platform has its own output subdirectory, each platform output subdirectory will include a key subdirectory with same name. Function show_installed_files() can fail to find the correct parent for a node as it only compares the subdir name that can no longer be unique. This patch uses Anynode to replace Node class to define a new attribute 'long_name' for a node to store its unique relative path from the output staging directory (e.g. 'sof/apl/community') and search for its parent. The attribute 'name' is still used to store the subdir or file name for a node (e.g. 'community'), and to display the layout of the installed firmware files. Signed-off-by: mengdonglin <mengdong.lin@intel.com>
This commit is contained in:
parent
be007d14ab
commit
0d5bac87d3
|
@ -16,7 +16,7 @@ import multiprocessing
|
|||
import os
|
||||
import warnings
|
||||
# anytree module is defined in Zephyr build requirements
|
||||
from anytree import Node, RenderTree
|
||||
from anytree import AnyNode, RenderTree
|
||||
|
||||
# Constant value resolves SOF_TOP directory as: "this script directory/.."
|
||||
SOF_TOP = pathlib.Path(__file__).parents[1].resolve()
|
||||
|
@ -243,18 +243,18 @@ def execute_command(*run_args, **run_kwargs):
|
|||
def show_installed_files():
|
||||
"""[summary] Scans output directory building binary tree from files and folders
|
||||
then presents them in similar way to linux tree command."""
|
||||
graph_root = Node(STAGING_DIR.name, parent=None)
|
||||
graph_root = AnyNode(name=STAGING_DIR.name, long_name=STAGING_DIR.name, parent=None)
|
||||
relative_entries = [entry.relative_to(STAGING_DIR) for entry in STAGING_DIR.glob("**/*")]
|
||||
nodes = [ graph_root ]
|
||||
for entry in relative_entries:
|
||||
if str(entry.parent) == ".":
|
||||
nodes.append(Node(entry.name, parent=graph_root))
|
||||
nodes.append(AnyNode(name=entry.name, long_name=str(entry), parent=graph_root))
|
||||
else:
|
||||
node_parent = [node for node in nodes if node.name == str(entry.parent.name)][0]
|
||||
node_parent = [node for node in nodes if node.long_name == str(entry.parent)][0]
|
||||
if not node_parent:
|
||||
warnings.warn("Failed to construct installed files tree")
|
||||
return
|
||||
nodes.append(Node(entry.name, parent=node_parent))
|
||||
nodes.append(AnyNode(name=entry.name, long_name=str(entry), parent=node_parent))
|
||||
for pre, fill, node in RenderTree(graph_root):
|
||||
print(f"{pre}{node.name}")
|
||||
|
||||
|
|
Loading…
Reference in New Issue