Merge changes from topic "provider_generics" into main am: b2c65a26d6

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2876763

Change-Id: Idd45d802713d4395abe9c233e71dc39f4d5b691e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Colin Cross 2023-12-18 19:32:33 +00:00 committed by Automerger Merge Worker
commit 7e3f9b43de
27 changed files with 44 additions and 42 deletions

View file

@ -120,7 +120,7 @@ type DeclarationsProviderData struct {
IntermediateDumpOutputPath android.WritablePath IntermediateDumpOutputPath android.WritablePath
} }
var DeclarationsProviderKey = blueprint.NewProvider(DeclarationsProviderData{}) var DeclarationsProviderKey = blueprint.NewProvider[DeclarationsProviderData]()
// This is used to collect the aconfig declarations info on the transitive closure, // This is used to collect the aconfig declarations info on the transitive closure,
// the data is keyed on the container. // the data is keyed on the container.
@ -128,7 +128,7 @@ type TransitiveDeclarationsInfo struct {
AconfigFiles map[string]android.Paths AconfigFiles map[string]android.Paths
} }
var TransitiveDeclarationsInfoProvider = blueprint.NewProvider(TransitiveDeclarationsInfo{}) var TransitiveDeclarationsInfoProvider = blueprint.NewProvider[TransitiveDeclarationsInfo]()
func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Get the values that came from the global RELEASE_ACONFIG_VALUE_SETS flag // Get the values that came from the global RELEASE_ACONFIG_VALUE_SETS flag

View file

@ -54,7 +54,7 @@ type valueSetProviderData struct {
AvailablePackages map[string]android.Paths AvailablePackages map[string]android.Paths
} }
var valueSetProviderKey = blueprint.NewProvider(valueSetProviderData{}) var valueSetProviderKey = blueprint.NewProvider[valueSetProviderData]()
func (module *ValueSetModule) DepsMutator(ctx android.BottomUpMutatorContext) { func (module *ValueSetModule) DepsMutator(ctx android.BottomUpMutatorContext) {
deps := ctx.AddDependency(ctx.Module(), valueSetTag, module.properties.Values...) deps := ctx.AddDependency(ctx.Module(), valueSetTag, module.properties.Values...)

View file

@ -52,7 +52,7 @@ type valuesProviderData struct {
Values android.Paths Values android.Paths
} }
var valuesProviderKey = blueprint.NewProvider(valuesProviderData{}) var valuesProviderKey = blueprint.NewProvider[valuesProviderData]()
func (module *ValuesModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (module *ValuesModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if len(module.properties.Package) == 0 { if len(module.properties.Package) == 0 {

View file

@ -64,7 +64,7 @@ type AidlLibraryInfo struct {
} }
// AidlLibraryProvider provides the srcs and the transitive include dirs // AidlLibraryProvider provides the srcs and the transitive include dirs
var AidlLibraryProvider = blueprint.NewProvider(AidlLibraryInfo{}) var AidlLibraryProvider = blueprint.NewProvider[AidlLibraryInfo]()
func (lib *AidlLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (lib *AidlLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
includeDirsDepSetBuilder := android.NewDepSetBuilder[android.Path](android.PREORDER) includeDirsDepSetBuilder := android.NewDepSetBuilder[android.Path](android.PREORDER)

View file

@ -89,7 +89,7 @@ type ApexInfo struct {
TestApexes []string TestApexes []string
} }
var ApexInfoProvider = blueprint.NewMutatorProvider(ApexInfo{}, "apex") var ApexInfoProvider = blueprint.NewMutatorProvider[ApexInfo]("apex")
func (i ApexInfo) AddJSONData(d *map[string]interface{}) { func (i ApexInfo) AddJSONData(d *map[string]interface{}) {
(*d)["Apex"] = map[string]interface{}{ (*d)["Apex"] = map[string]interface{}{
@ -145,7 +145,7 @@ type ApexTestForInfo struct {
ApexContents []*ApexContents ApexContents []*ApexContents
} }
var ApexTestForInfoProvider = blueprint.NewMutatorProvider(ApexTestForInfo{}, "apex_test_for") var ApexTestForInfoProvider = blueprint.NewMutatorProvider[ApexTestForInfo]("apex_test_for")
// DepIsInSameApex defines an interface that should be used to determine whether a given dependency // DepIsInSameApex defines an interface that should be used to determine whether a given dependency
// should be considered as part of the same APEX as the current module or not. Note: this was // should be considered as part of the same APEX as the current module or not. Note: this was

View file

@ -124,7 +124,7 @@ func (a *allApexContributions) SetPrebuiltSelectionInfoProvider(ctx BaseModuleCo
// A provider containing metadata about whether source or prebuilt should be used // A provider containing metadata about whether source or prebuilt should be used
// This provider will be used in prebuilt_select mutator to redirect deps // This provider will be used in prebuilt_select mutator to redirect deps
var PrebuiltSelectionInfoProvider = blueprint.NewMutatorProvider(PrebuiltSelectionInfoMap{}, "prebuilt_select") var PrebuiltSelectionInfoProvider = blueprint.NewMutatorProvider[PrebuiltSelectionInfoMap]("prebuilt_select")
// Map of baseModuleName to the selected source or prebuilt // Map of baseModuleName to the selected source or prebuilt
type PrebuiltSelectionInfoMap map[string]PrebuiltSelectionInfo type PrebuiltSelectionInfoMap map[string]PrebuiltSelectionInfo

View file

@ -98,7 +98,7 @@ func (i DeapexerInfo) PrebuiltExportPath(apexRelativePath string) WritablePath {
// Provider that can be used from within the `GenerateAndroidBuildActions` of a module that depends // Provider that can be used from within the `GenerateAndroidBuildActions` of a module that depends
// on a `deapexer` module to retrieve its `DeapexerInfo`. // on a `deapexer` module to retrieve its `DeapexerInfo`.
var DeapexerProvider = blueprint.NewProvider(DeapexerInfo{}) var DeapexerProvider = blueprint.NewProvider[DeapexerInfo]()
// NewDeapexerInfo creates and initializes a DeapexerInfo that is suitable // NewDeapexerInfo creates and initializes a DeapexerInfo that is suitable
// for use with a prebuilt_apex module. // for use with a prebuilt_apex module.

View file

@ -200,7 +200,7 @@ func isContainerFromFileExtensions(installPaths InstallPaths, builtPaths Paths)
} }
// LicenseMetadataProvider is used to propagate license metadata paths between modules. // LicenseMetadataProvider is used to propagate license metadata paths between modules.
var LicenseMetadataProvider = blueprint.NewProvider(&LicenseMetadataInfo{}) var LicenseMetadataProvider = blueprint.NewProvider[*LicenseMetadataInfo]()
// LicenseMetadataInfo stores the license metadata path for a module. // LicenseMetadataInfo stores the license metadata path for a module.
type LicenseMetadataInfo struct { type LicenseMetadataInfo struct {

View file

@ -322,7 +322,7 @@ type LicenseInfo struct {
Licenses []string Licenses []string
} }
var LicenseInfoProvider = blueprint.NewProvider(LicenseInfo{}) var LicenseInfoProvider = blueprint.NewProvider[LicenseInfo]()
func init() { func init() {
RegisterMakeVarsProvider(pctx, licensesMakeVarsProvider) RegisterMakeVarsProvider(pctx, licensesMakeVarsProvider)

View file

@ -860,11 +860,11 @@ type ExportedComponentsInfo struct {
Components []string Components []string
} }
var ExportedComponentsInfoProvider = blueprint.NewProvider(ExportedComponentsInfo{}) var ExportedComponentsInfoProvider = blueprint.NewProvider[ExportedComponentsInfo]()
// AdditionalSdkInfo contains additional properties to add to the generated SDK info file. // AdditionalSdkInfo contains additional properties to add to the generated SDK info file.
type AdditionalSdkInfo struct { type AdditionalSdkInfo struct {
Properties map[string]interface{} Properties map[string]interface{}
} }
var AdditionalSdkInfoProvider = blueprint.NewProvider(AdditionalSdkInfo{}) var AdditionalSdkInfoProvider = blueprint.NewProvider[AdditionalSdkInfo]()

View file

@ -912,13 +912,13 @@ type DCLAInfo struct {
ProvidedLibs []string ProvidedLibs []string
} }
var DCLAInfoProvider = blueprint.NewMutatorProvider(DCLAInfo{}, "apex_info") var DCLAInfoProvider = blueprint.NewMutatorProvider[DCLAInfo]("apex_info")
type ApexBundleInfo struct { type ApexBundleInfo struct {
Contents *android.ApexContents Contents *android.ApexContents
} }
var ApexBundleInfoProvider = blueprint.NewMutatorProvider(ApexBundleInfo{}, "apex_info") var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info")
var _ ApexInfoMutator = (*apexBundle)(nil) var _ ApexInfoMutator = (*apexBundle)(nil)

View file

@ -52,7 +52,7 @@ func init() {
pctx.SourcePathVariable("bloaty", "prebuilts/build-tools/${hostPrebuiltTag}/bin/bloaty") pctx.SourcePathVariable("bloaty", "prebuilts/build-tools/${hostPrebuiltTag}/bin/bloaty")
pctx.HostBinToolVariable("bloatyMerger", "bloaty_merger") pctx.HostBinToolVariable("bloatyMerger", "bloaty_merger")
android.RegisterParallelSingletonType("file_metrics", fileSizesSingleton) android.RegisterParallelSingletonType("file_metrics", fileSizesSingleton)
fileSizeMeasurerKey = blueprint.NewProvider(measuredFiles{}) fileSizeMeasurerKey = blueprint.NewProvider[measuredFiles]()
} }
// measuredFiles contains the paths of the files measured by a module. // measuredFiles contains the paths of the files measured by a module.

View file

@ -43,7 +43,7 @@ type FdoProfileInfo struct {
} }
// FdoProfileProvider is used to provide path to an fdo profile // FdoProfileProvider is used to provide path to an fdo profile
var FdoProfileProvider = blueprint.NewMutatorProvider(FdoProfileInfo{}, "fdo_profile") var FdoProfileProvider = blueprint.NewMutatorProvider[FdoProfileInfo]("fdo_profile")
// FdoProfileMutatorInterface is the interface implemented by fdo_profile module type // FdoProfileMutatorInterface is the interface implemented by fdo_profile module type
// module types that can depend on an fdo_profile module // module types that can depend on an fdo_profile module

View file

@ -368,7 +368,7 @@ type SharedLibraryInfo struct {
TransitiveStaticLibrariesForOrdering *android.DepSet[android.Path] TransitiveStaticLibrariesForOrdering *android.DepSet[android.Path]
} }
var SharedLibraryInfoProvider = blueprint.NewProvider(SharedLibraryInfo{}) var SharedLibraryInfoProvider = blueprint.NewProvider[SharedLibraryInfo]()
// SharedStubLibrary is a struct containing information about a stub shared library. // SharedStubLibrary is a struct containing information about a stub shared library.
// Stub libraries are used for cross-APEX dependencies; when a library is to depend on a shared // Stub libraries are used for cross-APEX dependencies; when a library is to depend on a shared
@ -391,7 +391,7 @@ type SharedLibraryStubsInfo struct {
IsLLNDK bool IsLLNDK bool
} }
var SharedLibraryStubsProvider = blueprint.NewProvider(SharedLibraryStubsInfo{}) var SharedLibraryStubsProvider = blueprint.NewProvider[SharedLibraryStubsInfo]()
// StaticLibraryInfo is a provider to propagate information about a static C++ library. // StaticLibraryInfo is a provider to propagate information about a static C++ library.
type StaticLibraryInfo struct { type StaticLibraryInfo struct {
@ -410,14 +410,14 @@ type StaticLibraryInfo struct {
TransitiveStaticLibrariesForOrdering *android.DepSet[android.Path] TransitiveStaticLibrariesForOrdering *android.DepSet[android.Path]
} }
var StaticLibraryInfoProvider = blueprint.NewProvider(StaticLibraryInfo{}) var StaticLibraryInfoProvider = blueprint.NewProvider[StaticLibraryInfo]()
// HeaderLibraryInfo is a marker provider that identifies a module as a header library. // HeaderLibraryInfo is a marker provider that identifies a module as a header library.
type HeaderLibraryInfo struct { type HeaderLibraryInfo struct {
} }
// HeaderLibraryInfoProvider is a marker provider that identifies a module as a header library. // HeaderLibraryInfoProvider is a marker provider that identifies a module as a header library.
var HeaderLibraryInfoProvider = blueprint.NewProvider(HeaderLibraryInfo{}) var HeaderLibraryInfoProvider = blueprint.NewProvider[HeaderLibraryInfo]()
// FlagExporterInfo is a provider to propagate transitive library information // FlagExporterInfo is a provider to propagate transitive library information
// pertaining to exported include paths and flags. // pertaining to exported include paths and flags.
@ -429,4 +429,4 @@ type FlagExporterInfo struct {
GeneratedHeaders android.Paths GeneratedHeaders android.Paths
} }
var FlagExporterInfoProvider = blueprint.NewProvider(FlagExporterInfo{}) var FlagExporterInfoProvider = blueprint.NewProvider[FlagExporterInfo]()

View file

@ -209,7 +209,7 @@ type SnapshotInfo struct {
HeaderLibs, Binaries, Objects, StaticLibs, SharedLibs, Rlibs, Dylibs map[string]string HeaderLibs, Binaries, Objects, StaticLibs, SharedLibs, Rlibs, Dylibs map[string]string
} }
var SnapshotInfoProvider = blueprint.NewMutatorProvider(SnapshotInfo{}, "deps") var SnapshotInfoProvider = blueprint.NewMutatorProvider[SnapshotInfo]("deps")
var _ android.ImageInterface = (*snapshotModule)(nil) var _ android.ImageInterface = (*snapshotModule)(nil)

View file

@ -1069,7 +1069,7 @@ type JniPackageInfo struct {
JniPackages android.Paths JniPackages android.Paths
} }
var JniPackageProvider = blueprint.NewProvider(JniPackageInfo{}) var JniPackageProvider = blueprint.NewProvider[JniPackageInfo]()
// Unzip an AAR and extract the JNI libs for $archString. // Unzip an AAR and extract the JNI libs for $archString.
var extractJNI = pctx.AndroidStaticRule("extractJNI", var extractJNI = pctx.AndroidStaticRule("extractJNI",

View file

@ -352,7 +352,7 @@ func (m *BootclasspathFragmentModule) bootclasspathFragmentPropertyCheck(ctx and
} }
} }
var BootclasspathFragmentApexContentInfoProvider = blueprint.NewProvider(BootclasspathFragmentApexContentInfo{}) var BootclasspathFragmentApexContentInfoProvider = blueprint.NewProvider[BootclasspathFragmentApexContentInfo]()
// BootclasspathFragmentApexContentInfo contains the bootclasspath_fragments contributions to the // BootclasspathFragmentApexContentInfo contains the bootclasspath_fragments contributions to the
// apex contents. // apex contents.

View file

@ -211,7 +211,7 @@ func (c *ClasspathFragmentBase) androidMkEntries() []android.AndroidMkEntries {
}} }}
} }
var ClasspathFragmentProtoContentInfoProvider = blueprint.NewProvider(ClasspathFragmentProtoContentInfo{}) var ClasspathFragmentProtoContentInfoProvider = blueprint.NewProvider[ClasspathFragmentProtoContentInfo]()
type ClasspathFragmentProtoContentInfo struct { type ClasspathFragmentProtoContentInfo struct {
// Whether the classpaths.proto config is generated for the fragment. // Whether the classpaths.proto config is generated for the fragment.

View file

@ -600,7 +600,7 @@ func (i *HiddenAPIInfo) FlagSubset() SignatureCsvSubset {
return SignatureCsvSubset{i.FilteredFlagsPath, i.SignaturePatternsPath} return SignatureCsvSubset{i.FilteredFlagsPath, i.SignaturePatternsPath}
} }
var HiddenAPIInfoProvider = blueprint.NewProvider(HiddenAPIInfo{}) var HiddenAPIInfoProvider = blueprint.NewProvider[HiddenAPIInfo]()
// HiddenAPIInfoForSdk contains information provided by the hidden API processing for use // HiddenAPIInfoForSdk contains information provided by the hidden API processing for use
// by the sdk snapshot. // by the sdk snapshot.
@ -617,7 +617,7 @@ type HiddenAPIInfoForSdk struct {
} }
// Provides hidden API info for the sdk snapshot. // Provides hidden API info for the sdk snapshot.
var HiddenAPIInfoForSdkProvider = blueprint.NewProvider(HiddenAPIInfoForSdk{}) var HiddenAPIInfoForSdkProvider = blueprint.NewProvider[HiddenAPIInfoForSdk]()
// ModuleStubDexJars contains the stub dex jars provided by a single module. // ModuleStubDexJars contains the stub dex jars provided by a single module.
// //
@ -749,7 +749,7 @@ type HiddenAPIPropertyInfo struct {
SplitPackages []string SplitPackages []string
} }
var hiddenAPIPropertyInfoProvider = blueprint.NewProvider(HiddenAPIPropertyInfo{}) var hiddenAPIPropertyInfoProvider = blueprint.NewProvider[HiddenAPIPropertyInfo]()
// newHiddenAPIPropertyInfo creates a new initialized HiddenAPIPropertyInfo struct. // newHiddenAPIPropertyInfo creates a new initialized HiddenAPIPropertyInfo struct.
func newHiddenAPIPropertyInfo() HiddenAPIPropertyInfo { func newHiddenAPIPropertyInfo() HiddenAPIPropertyInfo {

View file

@ -90,4 +90,4 @@ func (i *MonolithicHiddenAPIInfo) append(other *HiddenAPIInfo) {
i.FlagSubsets = append(i.FlagSubsets, other.FlagSubset()) i.FlagSubsets = append(i.FlagSubsets, other.FlagSubset())
} }
var MonolithicHiddenAPIInfoProvider = blueprint.NewProvider(MonolithicHiddenAPIInfo{}) var MonolithicHiddenAPIInfoProvider = blueprint.NewProvider[MonolithicHiddenAPIInfo]()

View file

@ -239,7 +239,7 @@ type ProguardSpecInfo struct {
UnconditionallyExportedProguardFlags *android.DepSet[android.Path] UnconditionallyExportedProguardFlags *android.DepSet[android.Path]
} }
var ProguardSpecInfoProvider = blueprint.NewProvider(ProguardSpecInfo{}) var ProguardSpecInfoProvider = blueprint.NewProvider[ProguardSpecInfo]()
// JavaInfo contains information about a java module for use by modules that depend on it. // JavaInfo contains information about a java module for use by modules that depend on it.
type JavaInfo struct { type JavaInfo struct {
@ -295,7 +295,7 @@ type JavaInfo struct {
JacocoReportClassesFile android.Path JacocoReportClassesFile android.Path
} }
var JavaInfoProvider = blueprint.NewProvider(JavaInfo{}) var JavaInfoProvider = blueprint.NewProvider[JavaInfo]()
// SyspropPublicStubInfo contains info about the sysprop public stub library that corresponds to // SyspropPublicStubInfo contains info about the sysprop public stub library that corresponds to
// the sysprop implementation library. // the sysprop implementation library.
@ -305,7 +305,7 @@ type SyspropPublicStubInfo struct {
JavaInfo JavaInfo JavaInfo JavaInfo
} }
var SyspropPublicStubInfoProvider = blueprint.NewProvider(SyspropPublicStubInfo{}) var SyspropPublicStubInfoProvider = blueprint.NewProvider[SyspropPublicStubInfo]()
// Methods that need to be implemented for a module that is added to apex java_libs property. // Methods that need to be implemented for a module that is added to apex java_libs property.
type ApexDependency interface { type ApexDependency interface {
@ -1624,7 +1624,7 @@ type JavaApiImportInfo struct {
ApiSurface string ApiSurface string
} }
var JavaApiImportProvider = blueprint.NewProvider(JavaApiImportInfo{}) var JavaApiImportProvider = blueprint.NewProvider[JavaApiImportInfo]()
func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleContext) {
var apiFile android.Path = nil var apiFile android.Path = nil

View file

@ -64,7 +64,7 @@ type ApiImportInfo struct {
SharedLibs, HeaderLibs, ApexSharedLibs map[string]string SharedLibs, HeaderLibs, ApexSharedLibs map[string]string
} }
var ApiImportsProvider = blueprint.NewMutatorProvider(ApiImportInfo{}, "deps") var ApiImportsProvider = blueprint.NewMutatorProvider[ApiImportInfo]("deps")
// Store module lists into ApiImportInfo and share it over mutator provider. // Store module lists into ApiImportInfo and share it over mutator provider.
func (imports *ApiImports) DepsMutator(ctx android.BottomUpMutatorContext) { func (imports *ApiImports) DepsMutator(ctx android.BottomUpMutatorContext) {

View file

@ -527,7 +527,7 @@ type FlagExporterInfo struct {
LinkObjects []string // TODO: this should be android.Paths LinkObjects []string // TODO: this should be android.Paths
} }
var FlagExporterInfoProvider = blueprint.NewProvider(FlagExporterInfo{}) var FlagExporterInfoProvider = blueprint.NewProvider[FlagExporterInfo]()
func (mod *Module) isCoverageVariant() bool { func (mod *Module) isCoverageVariant() bool {
return mod.coverage.Properties.IsCoverageVariant return mod.coverage.Properties.IsCoverageVariant

View file

@ -20,6 +20,7 @@ import (
"android/soong/android" "android/soong/android"
"android/soong/testing/code_metadata_internal_proto" "android/soong/testing/code_metadata_internal_proto"
"github.com/google/blueprint" "github.com/google/blueprint"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -83,7 +84,7 @@ type CodeMetadataProviderData struct {
IntermediatePath android.WritablePath IntermediatePath android.WritablePath
} }
var CodeMetadataProviderKey = blueprint.NewProvider(CodeMetadataProviderData{}) var CodeMetadataProviderKey = blueprint.NewProvider[CodeMetadataProviderData]()
func (module *CodeMetadataModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (module *CodeMetadataModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
metadataList := make( metadataList := make(

View file

@ -20,8 +20,9 @@ import (
"android/soong/android" "android/soong/android"
"android/soong/testing/test_spec_proto" "android/soong/testing/test_spec_proto"
"github.com/google/blueprint"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
"github.com/google/blueprint"
) )
// ErrTestModuleDataNotFound is the error message for missing test module provider data. // ErrTestModuleDataNotFound is the error message for missing test module provider data.
@ -81,12 +82,12 @@ type TestSpecProviderData struct {
IntermediatePath android.WritablePath IntermediatePath android.WritablePath
} }
var TestSpecProviderKey = blueprint.NewProvider(TestSpecProviderData{}) var TestSpecProviderKey = blueprint.NewProvider[TestSpecProviderData]()
type TestModuleProviderData struct { type TestModuleProviderData struct {
} }
var TestModuleProviderKey = blueprint.NewProvider(TestModuleProviderData{}) var TestModuleProviderKey = blueprint.NewProvider[TestModuleProviderData]()
func (module *TestSpecModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (module *TestSpecModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
for _, m := range ctx.GetDirectDepsWithTag(testsDepTag) { for _, m := range ctx.GetDirectDepsWithTag(testsDepTag) {