Convert NewProvider/NewMutatorProvider to generic providers API

Convert all of the callers to NewProvider and NewMutatorProvider
to use a generic type parameter instead of an example object.

Bug: 316410648
Test: builds
Change-Id: Ic9cdafc87336e26730d3fd596df05de0e7267542
This commit is contained in:
Colin Cross 2023-12-12 16:39:03 -08:00
parent 3c0a83d19f
commit bc7d76cca2
27 changed files with 44 additions and 42 deletions

View file

@ -120,7 +120,7 @@ type DeclarationsProviderData struct {
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,
// the data is keyed on the container.
@ -128,7 +128,7 @@ type TransitiveDeclarationsInfo struct {
AconfigFiles map[string]android.Paths
}
var TransitiveDeclarationsInfoProvider = blueprint.NewProvider(TransitiveDeclarationsInfo{})
var TransitiveDeclarationsInfoProvider = blueprint.NewProvider[TransitiveDeclarationsInfo]()
func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// 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
}
var valueSetProviderKey = blueprint.NewProvider(valueSetProviderData{})
var valueSetProviderKey = blueprint.NewProvider[valueSetProviderData]()
func (module *ValueSetModule) DepsMutator(ctx android.BottomUpMutatorContext) {
deps := ctx.AddDependency(ctx.Module(), valueSetTag, module.properties.Values...)

View file

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

View file

@ -64,7 +64,7 @@ type AidlLibraryInfo struct {
}
// 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) {
includeDirsDepSetBuilder := android.NewDepSetBuilder[android.Path](android.PREORDER)

View file

@ -89,7 +89,7 @@ type ApexInfo struct {
TestApexes []string
}
var ApexInfoProvider = blueprint.NewMutatorProvider(ApexInfo{}, "apex")
var ApexInfoProvider = blueprint.NewMutatorProvider[ApexInfo]("apex")
func (i ApexInfo) AddJSONData(d *map[string]interface{}) {
(*d)["Apex"] = map[string]interface{}{
@ -145,7 +145,7 @@ type ApexTestForInfo struct {
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
// 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
// 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
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
// 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
// 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.
var LicenseMetadataProvider = blueprint.NewProvider(&LicenseMetadataInfo{})
var LicenseMetadataProvider = blueprint.NewProvider[*LicenseMetadataInfo]()
// LicenseMetadataInfo stores the license metadata path for a module.
type LicenseMetadataInfo struct {

View file

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

View file

@ -860,11 +860,11 @@ type ExportedComponentsInfo struct {
Components []string
}
var ExportedComponentsInfoProvider = blueprint.NewProvider(ExportedComponentsInfo{})
var ExportedComponentsInfoProvider = blueprint.NewProvider[ExportedComponentsInfo]()
// AdditionalSdkInfo contains additional properties to add to the generated SDK info file.
type AdditionalSdkInfo struct {
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
}
var DCLAInfoProvider = blueprint.NewMutatorProvider(DCLAInfo{}, "apex_info")
var DCLAInfoProvider = blueprint.NewMutatorProvider[DCLAInfo]("apex_info")
type ApexBundleInfo struct {
Contents *android.ApexContents
}
var ApexBundleInfoProvider = blueprint.NewMutatorProvider(ApexBundleInfo{}, "apex_info")
var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_info")
var _ ApexInfoMutator = (*apexBundle)(nil)

View file

@ -52,7 +52,7 @@ func init() {
pctx.SourcePathVariable("bloaty", "prebuilts/build-tools/${hostPrebuiltTag}/bin/bloaty")
pctx.HostBinToolVariable("bloatyMerger", "bloaty_merger")
android.RegisterParallelSingletonType("file_metrics", fileSizesSingleton)
fileSizeMeasurerKey = blueprint.NewProvider(measuredFiles{})
fileSizeMeasurerKey = blueprint.NewProvider[measuredFiles]()
}
// 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
var FdoProfileProvider = blueprint.NewMutatorProvider(FdoProfileInfo{}, "fdo_profile")
var FdoProfileProvider = blueprint.NewMutatorProvider[FdoProfileInfo]("fdo_profile")
// FdoProfileMutatorInterface is the interface implemented by fdo_profile module type
// module types that can depend on an fdo_profile module

View file

@ -368,7 +368,7 @@ type SharedLibraryInfo struct {
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.
// 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
}
var SharedLibraryStubsProvider = blueprint.NewProvider(SharedLibraryStubsInfo{})
var SharedLibraryStubsProvider = blueprint.NewProvider[SharedLibraryStubsInfo]()
// StaticLibraryInfo is a provider to propagate information about a static C++ library.
type StaticLibraryInfo struct {
@ -410,14 +410,14 @@ type StaticLibraryInfo struct {
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.
type HeaderLibraryInfo struct {
}
// 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
// pertaining to exported include paths and flags.
@ -429,4 +429,4 @@ type FlagExporterInfo struct {
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
}
var SnapshotInfoProvider = blueprint.NewMutatorProvider(SnapshotInfo{}, "deps")
var SnapshotInfoProvider = blueprint.NewMutatorProvider[SnapshotInfo]("deps")
var _ android.ImageInterface = (*snapshotModule)(nil)

View file

@ -1069,7 +1069,7 @@ type JniPackageInfo struct {
JniPackages android.Paths
}
var JniPackageProvider = blueprint.NewProvider(JniPackageInfo{})
var JniPackageProvider = blueprint.NewProvider[JniPackageInfo]()
// Unzip an AAR and extract the JNI libs for $archString.
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
// 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 {
// Whether the classpaths.proto config is generated for the fragment.

View file

@ -114,7 +114,7 @@ func TestCodeMetadata(t *testing.T) {
}
}
func runCodeMetadataTest(
t *testing.T, errorHandler android.FixtureErrorHandler, bp string,
t *testing.T, errorHandler android.FixtureErrorHandler, bp string,
) *android.TestResult {
return android.GroupFixturePreparers(
soongTesting.PrepareForTestWithTestingBuildComponents, prepareForJavaTest,

View file

@ -600,7 +600,7 @@ func (i *HiddenAPIInfo) FlagSubset() SignatureCsvSubset {
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
// by the sdk snapshot.
@ -617,7 +617,7 @@ type HiddenAPIInfoForSdk struct {
}
// 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.
//
@ -749,7 +749,7 @@ type HiddenAPIPropertyInfo struct {
SplitPackages []string
}
var hiddenAPIPropertyInfoProvider = blueprint.NewProvider(HiddenAPIPropertyInfo{})
var hiddenAPIPropertyInfoProvider = blueprint.NewProvider[HiddenAPIPropertyInfo]()
// newHiddenAPIPropertyInfo creates a new initialized HiddenAPIPropertyInfo struct.
func newHiddenAPIPropertyInfo() HiddenAPIPropertyInfo {

View file

@ -90,4 +90,4 @@ func (i *MonolithicHiddenAPIInfo) append(other *HiddenAPIInfo) {
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]
}
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.
type JavaInfo struct {
@ -295,7 +295,7 @@ type JavaInfo struct {
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
// the sysprop implementation library.
@ -305,7 +305,7 @@ type SyspropPublicStubInfo struct {
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.
type ApexDependency interface {
@ -1624,7 +1624,7 @@ type JavaApiImportInfo struct {
ApiSurface string
}
var JavaApiImportProvider = blueprint.NewProvider(JavaApiImportInfo{})
var JavaApiImportProvider = blueprint.NewProvider[JavaApiImportInfo]()
func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleContext) {
var apiFile android.Path = nil

View file

@ -122,7 +122,7 @@ func TestTestSpec(t *testing.T) {
}
func runTestSpecTest(
t *testing.T, errorHandler android.FixtureErrorHandler, bp string,
t *testing.T, errorHandler android.FixtureErrorHandler, bp string,
) *android.TestResult {
return android.GroupFixturePreparers(
soongTesting.PrepareForTestWithTestingBuildComponents,

View file

@ -64,7 +64,7 @@ type ApiImportInfo struct {
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.
func (imports *ApiImports) DepsMutator(ctx android.BottomUpMutatorContext) {

View file

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

View file

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

View file

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