diff options
author | Wei Li <weiwli@google.com> | 2023-05-05 10:50:47 -0700 |
---|---|---|
committer | Cherrypicker Worker <android-build-cherrypicker-worker@google.com> | 2023-05-19 00:35:29 +0000 |
commit | e51200d82f04a1e762fcb6a7437559bee22095ae (patch) | |
tree | ec7fc6abfc5947b2ce79db2749e714ac7c5af309 /rules/license/license_aspect.bzl | |
parent | 6c1b2ef1df8753463a3f99b382ffce0beaed0e8d (diff) | |
download | bazel-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.bzl | 20 |
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 = """ |