From 70b73c8b6ad670749425da4c3a3b42e57b46414c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 9 Oct 2025 17:07:13 -1000 Subject: [PATCH] fix prefix in expanded --- script/merge_component_configs.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/script/merge_component_configs.py b/script/merge_component_configs.py index 15045a64f2..80dc619338 100755 --- a/script/merge_component_configs.py +++ b/script/merge_component_configs.py @@ -231,12 +231,28 @@ def merge_component_configs( # This allows components that use local file references to be grouped comp_abs_dir = str(comp_dir.absolute()) - # Prefix substitutions in component data - if "substitutions" in comp_data and comp_data["substitutions"] is not None: - prefixed_subs = {} - for sub_name, sub_value in comp_data["substitutions"].items(): - prefixed_subs[f"{comp_name}_{sub_name}"] = sub_value - comp_data["substitutions"] = prefixed_subs + # Prefix substitutions in component data (including those in packages) + # Must do this recursively before expanding packages + def prefix_all_substitutions(data, prefix): + """Recursively prefix substitution definitions in data structure.""" + if isinstance(data, dict): + # Prefix substitutions at this level + if "substitutions" in data and data["substitutions"] is not None: + prefixed_subs = {} + for sub_name, sub_value in data["substitutions"].items(): + prefixed_subs[f"{prefix}_{sub_name}"] = sub_value + data["substitutions"] = prefixed_subs + + # Recursively process nested dicts (like packages) + for key, value in data.items(): + if key != "substitutions": # Already handled above + data[key] = prefix_all_substitutions(value, prefix) + elif isinstance(data, list): + return [prefix_all_substitutions(item, prefix) for item in data] + + return data + + comp_data = prefix_all_substitutions(comp_data, comp_name) # Add component_dir substitution with absolute path for this component if "substitutions" not in comp_data or comp_data["substitutions"] is None: