summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2023-05-05 14:41:20 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2023-05-08 21:58:56 +0200
commite9d386f7f51148d0c0796eee246dcacf691e46ea (patch)
tree0de75b5e2519bdf25eee1cdb30f8d4e054d285be
parentbuild: Gather only enabled test headers (diff)
downloadrtems-central-e9d386f7f51148d0c0796eee246dcacf691e46ea.tar.bz2
build: Use custom enabled set
-rw-r--r--rtemsspec/build.py17
-rw-r--r--rtemsspec/tests/spec-build/bsp.yml4
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