[rtems-central commit] build: Use custom enabled set

Sebastian Huber sebh at rtems.org
Tue May 9 13:45:27 UTC 2023


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri May  5 14:41:20 2023 +0200

build: Use custom enabled set

---

 rtemsspec/build.py                 | 17 +++++++++++------
 rtemsspec/tests/spec-build/bsp.yml |  4 ++++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/rtemsspec/build.py b/rtemsspec/build.py
index 4ae93390..19af49e2 100644
--- a/rtemsspec/build.py
+++ b/rtemsspec/build.py
@@ -26,7 +26,7 @@
 
 from typing import Dict, List
 
-from rtemsspec.items import is_enabled, Item, ItemCache
+from rtemsspec.items import is_enabled, Item, ItemCache, Link
 
 BSPMap = Dict[str, Dict[str, Item]]
 ItemMap = Dict[str, Item]
@@ -69,11 +69,16 @@ _BUILD_ROLES = ["build-dependency", "build-dependency-conditional"]
 
 def _gather_source_files(item: Item, enabled: List[str],
                          source_files: List[str]) -> None:
-    for link in item.links_to_parents(_BUILD_ROLES):
-        if (link.role == "build-dependency" or is_enabled(
-                enabled,
-                link["enabled-by"])) and link.item.is_enabled(enabled):
-            _gather_source_files(link.item, enabled, source_files)
+
+    def _is_enabled(link: Link) -> bool:
+        if not link.item.is_enabled(enabled):
+            return False
+        if link.role == "build-dependency":
+            return True
+        return is_enabled(enabled, link["enabled-by"])
+
+    for parent in item.parents(_BUILD_ROLES, is_link_enabled=_is_enabled):
+        _gather_source_files(parent, enabled, source_files)
     _EXTEND_SOURCE_FILES[item["build-type"]](item, source_files)
 
 
diff --git a/rtemsspec/tests/spec-build/bsp.yml b/rtemsspec/tests/spec-build/bsp.yml
index d622b71b..075639c8 100644
--- a/rtemsspec/tests/spec-build/bsp.yml
+++ b/rtemsspec/tests/spec-build/bsp.yml
@@ -10,6 +10,10 @@ links:
     not: false
   role: build-dependency-conditional
   uid: o
+- enabled-by:
+    not: A
+  role: build-dependency-conditional
+  uid: x
 - role: build-dependency
   uid: op
 - role: build-dependency



More information about the vc mailing list