Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05b0ba6d authored by Sasha Smundak's avatar Sasha Smundak
Browse files

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
parent afc97f02
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.
+27 −0
Original line number Diff line number Diff line
@@ -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{}),
			},
		})
}