Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bazel/rules/rules_score/private/dependable_element.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -812,7 +812,7 @@ def _dependable_element_index_impl(ctx):
# carry AssumedSystemRequirementsInfo.
assumed_system_req_refs = []
for req_target in ctx.attr.requirements:
if AssumedSystemRequirementsInfo in req_target:
if AssumedSystemRequirementsInfo in req_target and not req_target[AssumedSystemRequirementsInfo].is_transitive:
label_files, label_refs = _process_artifact_files(ctx, "assumed_system_requirements", req_target)
output_files.extend(label_files)
assumed_system_req_refs.extend(label_refs)
Expand Down
22 changes: 21 additions & 1 deletion bazel/rules/rules_score/private/requirements.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,38 @@ def _requirements_impl(ctx):
srcs = depset([lobster_file]),
name = ctx.label.name,
)
assumed_srcs_from_deps = [
dep[AssumedSystemRequirementsInfo].srcs
for dep in ctx.attr.deps
if AssumedSystemRequirementsInfo in dep
]
if assumed_srcs_from_deps:
assumed_provider = AssumedSystemRequirementsInfo(
srcs = depset(transitive = assumed_srcs_from_deps),
name = ctx.label.name,
is_transitive = True,
)
else:
assumed_provider = None
Comment on lines +99 to +111

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that merging these into the feature requirements is a good idea.
That would mix levels of requirements and make it complex for users to separate them once more.

I'm leaning towards creating an additional provider for this.
Can this fix wait some time for @hoe-jo to be back from vacation? I'd like to have his input on this as well.

elif ctx.attr.req_kind == "component":
req_provider = ComponentRequirementsInfo(
srcs = depset([lobster_file]),
name = ctx.label.name,
)
assumed_provider = None
elif ctx.attr.req_kind == "aou":
req_provider = AssumptionsOfUseInfo(
aou_lobster = depset([lobster_file]),
name = ctx.label.name,
)
assumed_provider = None
else: # assumed_system
req_provider = AssumedSystemRequirementsInfo(
srcs = depset([lobster_file]),
name = ctx.label.name,
is_transitive = False,
)
assumed_provider = None

image_outputs = subrule_trlc_image_stage(ctx.files.image_srcs)

Expand All @@ -121,7 +138,7 @@ def _requirements_impl(ctx):
if SphinxSourcesInfo in dep:
transitive_sphinx.append(dep[SphinxSourcesInfo].deps)

return [
providers = [
DefaultInfo(files = all_trlc_files),
TrlcProviderInfo(
spec = spec_depset,
Expand All @@ -135,6 +152,9 @@ def _requirements_impl(ctx):
aux_srcs = depset(),
),
]
if assumed_provider != None:
providers = providers + [assumed_provider]
return providers

# ============================================================================
# Rule Definition
Expand Down
1 change: 1 addition & 0 deletions bazel/rules/rules_score/providers.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ AssumedSystemRequirementsInfo = provider(
fields = {
"srcs": "Depset of .lobster traceability files generated from TRLC requirement sources.",
"name": "Name of the requirements target.",
"is_transitive": "Whether this provider is propagated through a feature requirements target for traceability lookup rather than owned by that target.",
},
)

Expand Down
Loading