[rtems-central commit] rtems: Order related items

Sebastian Huber sebh at rtems.org
Tue Nov 21 13:35:41 UTC 2023


Module:    rtems-central
Branch:    master
Commit:    9e37fd1ade97d2bda951b0e15dd865452e01d6a1
Changeset: http://git.rtems.org/rtems-central/commit/?id=9e37fd1ade97d2bda951b0e15dd865452e01d6a1

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Nov 21 11:13:16 2023 +0100

rtems: Order related items

---

 rtemsspec/rtems.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/rtemsspec/rtems.py b/rtemsspec/rtems.py
index 9bf36b72..735880c5 100644
--- a/rtemsspec/rtems.py
+++ b/rtemsspec/rtems.py
@@ -161,16 +161,23 @@ _VALIDATOR = {
 }
 
 
-def _validate_tree(item: Item, related_items: Set[Item]) -> bool:
+def _validate_tree(item: Item, order: Tuple[int, ...],
+                   related_items: Set[Item]) -> bool:
+    item["_order"] = order
     related_items.add(item)
     pre_qualified = is_pre_qualified(item)
     item["_pre_qualified"] = pre_qualified
     validated = True
     validation_dependencies: List[Tuple[str, str]] = []
-    for link in itertools.chain(item.links_to_children(_CHILD_ROLES),
-                                item.links_to_parents(_PARENT_ROLES)):
+    for index, link in enumerate(
+            sorted(
+                itertools.chain(item.links_to_children(_CHILD_ROLES),
+                                item.links_to_parents(_PARENT_ROLES)))):
         item_2 = link.item
-        validated = _validate_tree(item_2, related_items) and validated
+        related_items.add(item)
+        validated = _validate_tree(item_2, order[:-1] +
+                                   (order[-1] + index + 1, 0),
+                                   related_items) and validated
         if link.role == "validation":
             role = _VALIDATION_METHOD[item_2.type]
         elif link.role == "requirement-refinement":
@@ -237,7 +244,7 @@ def validate(root: Item) -> Set[Item]:
     Returns the set of items related to the root item.
     """
     related_items: Set[Item] = set()
-    _validate_tree(root, related_items)
+    _validate_tree(root, (0, ), related_items)
     _validate_containers(root)
     _fixup_pre_qualified(root,
                          ["interface/appl-config-group", "interface/group"],



More information about the vc mailing list