diff options
author | 2025-01-17 20:04:46 +0000 | |
---|---|---|
committer | 2025-01-17 20:05:45 +0000 | |
commit | ddccb2a4cbf64ea3b0a4a34073ea3c7a6f926aec (patch) | |
tree | 5e99735767010515f576aa9d369295237206fac4 | |
parent | 7eebf8b34c4a40fe1f374b7db290ac62ca872c10 (diff) |
Convert licensesPropertyFlattener to use ModuleProxy.
Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: Iff8fd64e3938cde8950d8144f03a5fbde8bdfe6e
-rw-r--r-- | android/license.go | 24 | ||||
-rw-r--r-- | android/license_kind.go | 14 | ||||
-rw-r--r-- | android/licenses.go | 26 | ||||
-rw-r--r-- | sdk/update.go | 2 |
4 files changed, 47 insertions, 19 deletions
diff --git a/android/license.go b/android/license.go index 5bffc2519..ffda58b37 100644 --- a/android/license.go +++ b/android/license.go @@ -18,6 +18,16 @@ import ( "github.com/google/blueprint" ) +type LicenseInfo struct { + EffectiveLicenses []string + PackageName *string + EffectiveLicenseText NamedPaths + EffectiveLicenseKinds []string + EffectiveLicenseConditions []string +} + +var LicenseInfoProvider = blueprint.NewProvider[LicenseInfo]() + type licenseKindDependencyTag struct { blueprint.BaseDependencyTag } @@ -71,14 +81,22 @@ func (m *licenseModule) GenerateAndroidBuildActions(ctx ModuleContext) { // license modules have no licenses, but license_kinds must refer to license_kind modules mergeStringProps(&m.base().commonProperties.Effective_licenses, ctx.ModuleName()) namePathProps(&m.base().commonProperties.Effective_license_text, m.properties.Package_name, PathsForModuleSrc(ctx, m.properties.License_text)...) - for _, module := range ctx.GetDirectDepsWithTag(licenseKindTag) { - if lk, ok := module.(*licenseKindModule); ok { - mergeStringProps(&m.base().commonProperties.Effective_license_conditions, lk.properties.Conditions...) + for _, module := range ctx.GetDirectDepsProxyWithTag(licenseKindTag) { + if lk, ok := OtherModuleProvider(ctx, module, LicenseKindInfoProvider); ok { + mergeStringProps(&m.base().commonProperties.Effective_license_conditions, lk.Conditions...) mergeStringProps(&m.base().commonProperties.Effective_license_kinds, ctx.OtherModuleName(module)) } else { ctx.ModuleErrorf("license_kinds property %q is not a license_kind module", ctx.OtherModuleName(module)) } } + + SetProvider(ctx, LicenseInfoProvider, LicenseInfo{ + EffectiveLicenses: m.base().commonProperties.Effective_licenses, + PackageName: m.properties.Package_name, + EffectiveLicenseText: m.base().commonProperties.Effective_license_text, + EffectiveLicenseKinds: m.base().commonProperties.Effective_license_kinds, + EffectiveLicenseConditions: m.base().commonProperties.Effective_license_conditions, + }) } func LicenseFactory() Module { diff --git a/android/license_kind.go b/android/license_kind.go index 838deddd2..1ca695449 100644 --- a/android/license_kind.go +++ b/android/license_kind.go @@ -14,6 +14,14 @@ package android +import "github.com/google/blueprint" + +type LicenseKindInfo struct { + Conditions []string +} + +var LicenseKindInfoProvider = blueprint.NewProvider[LicenseKindInfo]() + func init() { RegisterLicenseKindBuildComponents(InitRegistrationContext) } @@ -43,8 +51,10 @@ func (m *licenseKindModule) DepsMutator(ctx BottomUpMutatorContext) { // Nothing to do. } -func (m *licenseKindModule) GenerateAndroidBuildActions(ModuleContext) { - // Nothing to do. +func (m *licenseKindModule) GenerateAndroidBuildActions(ctx ModuleContext) { + SetProvider(ctx, LicenseKindInfoProvider, LicenseKindInfo{ + Conditions: m.properties.Conditions, + }) } func LicenseKindFactory() Module { diff --git a/android/licenses.go b/android/licenses.go index 53d055588..77f563f8c 100644 --- a/android/licenses.go +++ b/android/licenses.go @@ -227,16 +227,16 @@ func licensesPropertyFlattener(ctx ModuleContext) { } var licenses []string - for _, module := range ctx.GetDirectDepsWithTag(licensesTag) { - if l, ok := module.(*licenseModule); ok { + for _, module := range ctx.GetDirectDepsProxyWithTag(licensesTag) { + if l, ok := OtherModuleProvider(ctx, module, LicenseInfoProvider); ok { licenses = append(licenses, ctx.OtherModuleName(module)) - if m.base().commonProperties.Effective_package_name == nil && l.properties.Package_name != nil { - m.base().commonProperties.Effective_package_name = l.properties.Package_name + if m.base().commonProperties.Effective_package_name == nil && l.PackageName != nil { + m.base().commonProperties.Effective_package_name = l.PackageName } - mergeStringProps(&m.base().commonProperties.Effective_licenses, module.base().commonProperties.Effective_licenses...) - mergeNamedPathProps(&m.base().commonProperties.Effective_license_text, module.base().commonProperties.Effective_license_text...) - mergeStringProps(&m.base().commonProperties.Effective_license_kinds, module.base().commonProperties.Effective_license_kinds...) - mergeStringProps(&m.base().commonProperties.Effective_license_conditions, module.base().commonProperties.Effective_license_conditions...) + mergeStringProps(&m.base().commonProperties.Effective_licenses, l.EffectiveLicenses...) + mergeNamedPathProps(&m.base().commonProperties.Effective_license_text, l.EffectiveLicenseText...) + mergeStringProps(&m.base().commonProperties.Effective_license_kinds, l.EffectiveLicenseKinds...) + mergeStringProps(&m.base().commonProperties.Effective_license_conditions, l.EffectiveLicenseConditions...) } else { propertyName := "licenses" primaryProperty := m.base().primaryLicensesProperty @@ -248,10 +248,10 @@ func licensesPropertyFlattener(ctx ModuleContext) { } // Make the license information available for other modules. - licenseInfo := LicenseInfo{ + licenseInfo := LicensesInfo{ Licenses: licenses, } - SetProvider(ctx, LicenseInfoProvider, licenseInfo) + SetProvider(ctx, LicensesInfoProvider, licenseInfo) } // Update a property string array with a distinct union of its values and a list of new values. @@ -336,14 +336,14 @@ func exemptFromRequiredApplicableLicensesProperty(module Module) bool { return true } -// LicenseInfo contains information about licenses for a specific module. -type LicenseInfo struct { +// LicensesInfo contains information about licenses for a specific module. +type LicensesInfo struct { // The list of license modules this depends upon, either explicitly or through default package // configuration. Licenses []string } -var LicenseInfoProvider = blueprint.NewProvider[LicenseInfo]() +var LicensesInfoProvider = blueprint.NewProvider[LicensesInfo]() func init() { RegisterMakeVarsProvider(pctx, licensesMakeVarsProvider) diff --git a/sdk/update.go b/sdk/update.go index 5a899a234..00352cb1d 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -1145,7 +1145,7 @@ func (s *snapshotBuilder) AddPrebuiltModule(member android.SdkMember, moduleType // The licenses are the same for all variants. mctx := s.ctx - licenseInfo, _ := android.OtherModuleProvider(mctx, variant, android.LicenseInfoProvider) + licenseInfo, _ := android.OtherModuleProvider(mctx, variant, android.LicensesInfoProvider) if len(licenseInfo.Licenses) > 0 { m.AddPropertyWithTag("licenses", licenseInfo.Licenses, s.OptionalSdkMemberReferencePropertyTag()) } |