aboutsummaryrefslogtreecommitdiff
path: root/rules/license/license_aspect.bzl
diff options
context:
space:
mode:
authorWei Li <weiwli@google.com>2023-05-05 10:50:47 -0700
committerCherrypicker Worker <android-build-cherrypicker-worker@google.com>2023-05-19 00:35:29 +0000
commite51200d82f04a1e762fcb6a7437559bee22095ae (patch)
treeec7fc6abfc5947b2ce79db2749e714ac7c5af309 /rules/license/license_aspect.bzl
parent6c1b2ef1df8753463a3f99b382ffce0beaed0e8d (diff)
downloadbazel-e51200d82f04a1e762fcb6a7437559bee22095ae.tar.gz
Changes in Bazel rules to support SBOM generation of b build unbundled APEXs.
1) Add MetadataFileInfo provider to modules if METADATA file is declared in attribute applicable_licenses, which might be from default_metadata_file of packages 2) cc_aspect collect MetadataFileInfo for some rules that are transitive deps and included in APEXs 3) Generate SBOM for .apex or .capex in apex rule Bug: 275472038 Test: CIs Test: b build //packages/modules/adb/apex:com.android.adbd --config=android --output_groups=+apex_sbom (cherry picked from https://android-review.googlesource.com/q/commit:8efceb357b097cf977cb06ad9dc4f5b3089f9d6a) Merged-In: I727610608487a12873671dd27d56465fc2c19436 Change-Id: I727610608487a12873671dd27d56465fc2c19436
Diffstat (limited to 'rules/license/license_aspect.bzl')
-rw-r--r--rules/license/license_aspect.bzl20
1 files changed, 17 insertions, 3 deletions
diff --git a/rules/license/license_aspect.bzl b/rules/license/license_aspect.bzl
index 2302137b..00a91f5b 100644
--- a/rules/license/license_aspect.bzl
+++ b/rules/license/license_aspect.bzl
@@ -1,4 +1,5 @@
load("@rules_license//rules:providers.bzl", "LicenseInfo")
+load("//build/bazel/rules:metadata.bzl", "MetadataFileInfo")
RuleLicensedDependenciesInfo = provider(
doc = """Rule's licensed dependencies.""",
@@ -14,9 +15,18 @@ def _maybe_expand(rule, transitive_licenses):
if hasattr(dep_info, "license_closure"):
transitive_licenses.append(dep_info.license_closure)
+def create_metadata_file_info(ctx):
+ if hasattr(ctx.rule.attr, "applicable_licenses"):
+ for lic in ctx.rule.attr.applicable_licenses:
+ files = lic.files.to_list()
+ if len(files) == 1 and files[0].basename == "METADATA":
+ return MetadataFileInfo(metadata_file = files[0])
+
+ return MetadataFileInfo(metadata_file = None)
+
def _rule_licenses_aspect_impl(_rule, ctx):
if ctx.rule.kind == "_license":
- return RuleLicensedDependenciesInfo()
+ return [RuleLicensedDependenciesInfo(), MetadataFileInfo()]
licenses = []
transitive_licenses = []
@@ -32,14 +42,18 @@ def _rule_licenses_aspect_impl(_rule, ctx):
for item in vlist:
if type(item) == "Target" and RuleLicensedDependenciesInfo in item:
_maybe_expand(item, transitive_licenses)
- return RuleLicensedDependenciesInfo(license_closure = depset(licenses, transitive = transitive_licenses))
+
+ return [
+ RuleLicensedDependenciesInfo(license_closure = depset(licenses, transitive = transitive_licenses)),
+ create_metadata_file_info(ctx),
+ ]
license_aspect = aspect(
doc = """Collect transitive license closure.""",
implementation = _rule_licenses_aspect_impl,
attr_aspects = ["*"],
apply_to_generating_rules = True,
- provides = [RuleLicensedDependenciesInfo],
+ provides = [RuleLicensedDependenciesInfo, MetadataFileInfo],
)
_license_kind_template = """