[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