Convert Soong licenses attribute to Bazel's applicable_licenses attribute

Add it to the `CommonAttributes` struct and handle it in fillCommonBp2BuildModuleAttrs

Bug: 190817312
Test: treehugger
Change-Id: I7b21056e680384d4046372ee844512029721026e
This commit is contained in:
Sasha Smundak
2022-09-26 18:15:45 -07:00
parent afc97f0209
commit 05b0ba6d1c
2 changed files with 31 additions and 0 deletions

View File

@@ -919,6 +919,8 @@ type CommonAttributes struct {
Data bazel.LabelListAttribute
Tags bazel.StringListAttribute
Applicable_licenses bazel.LabelListAttribute
}
// constraintAttributes represents Bazel attributes pertaining to build constraints,
@@ -1231,6 +1233,8 @@ func (attrs *CommonAttributes) fillCommonBp2BuildModuleAttrs(ctx *topDownMutator
}
}
attrs.Applicable_licenses = bazel.MakeLabelListAttribute(BazelLabelForModuleDeps(ctx, mod.commonProperties.Licenses))
// The required property can contain the module itself. This causes a cycle
// when generated as the 'data' label list attribute in Bazel. Remove it if
// it exists. See b/247985196.

View File

@@ -1821,3 +1821,30 @@ filegroup {
})
}
}
func TestLicensesAttrConversion(t *testing.T) {
RunBp2BuildTestCase(t,
func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("license", android.LicenseFactory)
},
Bp2buildTestCase{
Description: "Test that licenses: attribute is converted",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
Blueprint: `
license {
name: "my_license",
}
filegroup {
name: "my_filegroup",
licenses: ["my_license"],
}
`,
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("filegroup", "my_filegroup", AttrNameToString{
"applicable_licenses": `[":my_license"]`,
}),
MakeBazelTargetNoRestrictions("android_license", "my_license", AttrNameToString{}),
},
})
}