Integrate gen_notice with Make for dist.
Most exempt module types have no output. Support exempt module types with output by requiring they must be 0p and have no license metadata. Disallow `licenses: []` property on gen_notice. Test: m cts dist Change-Id: Ic992bd6420fa6898495866eac43495002ef4b6c8 Merged-in: Ic992bd6420fa6898495866eac43495002ef4b6c8
This commit is contained in:
parent
2ba6d37e7b
commit
4660a9824c
3 changed files with 35 additions and 5 deletions
|
@ -366,7 +366,9 @@ func (a *AndroidMkEntries) getDistContributions(mod blueprint.Module) *distContr
|
||||||
// Collate the contributions this module makes to the dist.
|
// Collate the contributions this module makes to the dist.
|
||||||
distContributions := &distContributions{}
|
distContributions := &distContributions{}
|
||||||
|
|
||||||
distContributions.licenseMetadataFile = amod.licenseMetadataFile
|
if !exemptFromRequiredApplicableLicensesProperty(mod.(Module)) {
|
||||||
|
distContributions.licenseMetadataFile = amod.licenseMetadataFile
|
||||||
|
}
|
||||||
|
|
||||||
// Iterate over this module's dist structs, merged from the dist and dists properties.
|
// Iterate over this module's dist structs, merged from the dist and dists properties.
|
||||||
for _, dist := range amod.Dists() {
|
for _, dist := range amod.Dists() {
|
||||||
|
@ -458,10 +460,12 @@ func generateDistContributionsForMake(distContributions *distContributions) []st
|
||||||
ret = append(ret, fmt.Sprintf(".PHONY: %s\n", d.goals))
|
ret = append(ret, fmt.Sprintf(".PHONY: %s\n", d.goals))
|
||||||
// Create dist-for-goals calls for each of the copy instructions.
|
// Create dist-for-goals calls for each of the copy instructions.
|
||||||
for _, c := range d.copies {
|
for _, c := range d.copies {
|
||||||
ret = append(
|
if distContributions.licenseMetadataFile != nil {
|
||||||
ret,
|
ret = append(
|
||||||
fmt.Sprintf("$(if $(strip $(ALL_TARGETS.%s.META_LIC)),,$(eval ALL_TARGETS.%s.META_LIC := %s))\n",
|
ret,
|
||||||
c.from.String(), c.from.String(), distContributions.licenseMetadataFile.String()))
|
fmt.Sprintf("$(if $(strip $(ALL_TARGETS.%s.META_LIC)),,$(eval ALL_TARGETS.%s.META_LIC := %s))\n",
|
||||||
|
c.from.String(), c.from.String(), distContributions.licenseMetadataFile.String()))
|
||||||
|
}
|
||||||
ret = append(
|
ret = append(
|
||||||
ret,
|
ret,
|
||||||
fmt.Sprintf("$(call dist-for-goals,%s,%s:%s)\n", d.goals, c.from.String(), c.dest))
|
fmt.Sprintf("$(call dist-for-goals,%s,%s:%s)\n", d.goals, c.from.String(), c.dest))
|
||||||
|
|
|
@ -111,6 +111,9 @@ type genNoticeModule struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *genNoticeModule) DepsMutator(ctx BottomUpMutatorContext) {
|
func (m *genNoticeModule) DepsMutator(ctx BottomUpMutatorContext) {
|
||||||
|
if ctx.ContainsProperty("licenses") {
|
||||||
|
ctx.PropertyErrorf("licenses", "not supported on \"gen_notice\" modules")
|
||||||
|
}
|
||||||
if proptools.Bool(m.properties.Html) && proptools.Bool(m.properties.Xml) {
|
if proptools.Bool(m.properties.Html) && proptools.Bool(m.properties.Xml) {
|
||||||
ctx.ModuleErrorf("can be html or xml but not both")
|
ctx.ModuleErrorf("can be html or xml but not both")
|
||||||
}
|
}
|
||||||
|
@ -195,6 +198,16 @@ func (m *genNoticeModule) OutputFiles(tag string) (Paths, error) {
|
||||||
return nil, fmt.Errorf("unrecognized tag %q", tag)
|
return nil, fmt.Errorf("unrecognized tag %q", tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ AndroidMkEntriesProvider = (*genNoticeModule)(nil)
|
||||||
|
|
||||||
|
// Implements AndroidMkEntriesProvider
|
||||||
|
func (m *genNoticeModule) AndroidMkEntries() []AndroidMkEntries {
|
||||||
|
return []AndroidMkEntries{AndroidMkEntries{
|
||||||
|
Class: "ETC",
|
||||||
|
OutputFile: OptionalPathForPath(m.output),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
// missingReferencesRule emits an ErrorRule for missing module references.
|
// missingReferencesRule emits an ErrorRule for missing module references.
|
||||||
func missingReferencesRule(ctx BuilderContext, m *genNoticeModule) {
|
func missingReferencesRule(ctx BuilderContext, m *genNoticeModule) {
|
||||||
if len(m.missing) < 1 {
|
if len(m.missing) < 1 {
|
||||||
|
|
|
@ -11,6 +11,19 @@ var genNoticeTests = []struct {
|
||||||
fs MockFS
|
fs MockFS
|
||||||
expectedErrors []string
|
expectedErrors []string
|
||||||
}{
|
}{
|
||||||
|
{
|
||||||
|
name: "gen_notice must not accept licenses property",
|
||||||
|
fs: map[string][]byte{
|
||||||
|
"top/Android.bp": []byte(`
|
||||||
|
gen_notice {
|
||||||
|
name: "top_license",
|
||||||
|
licenses: ["other_license"],
|
||||||
|
}`),
|
||||||
|
},
|
||||||
|
expectedErrors: []string{
|
||||||
|
`not supported on "gen_notice" modules`,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "bad gen_notice",
|
name: "bad gen_notice",
|
||||||
fs: map[string][]byte{
|
fs: map[string][]byte{
|
||||||
|
|
Loading…
Reference in a new issue