Create a singleton all_apex_contributions module type
This will be a container for the the apex_contributions selected using build flags. This module will be used to query the state of selected apex contributions instead of a global that can be mutated by anyone. It will set a provider containing metadata for source vs prebuilts selection. To reduce the overhead of a new mutator, this will be done in the existing `prebuilt_select` mutator. It will validate that there are no dups (`foo` and `prebuilt_foo` cannot be both selected) Bug: 308174923 Test: go test ./android Change-Id: Ie42999a71f35d70e0e977f5ab07ce451608d9f35
This commit is contained in:
@@ -435,6 +435,10 @@ func checkInvariantsForSourceAndPrebuilt(ctx BaseModuleContext, s, p Module) {
|
||||
|
||||
// PrebuiltSelectModuleMutator marks prebuilts that are used, either overriding source modules or
|
||||
// because the source module doesn't exist. It also disables installing overridden source modules.
|
||||
//
|
||||
// If the visited module is the metadata module `all_apex_contributions`, it sets a
|
||||
// provider containing metadata about whether source or prebuilt of mainline modules should be used.
|
||||
// This logic was added here to prevent the overhead of creating a new mutator.
|
||||
func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
|
||||
m := ctx.Module()
|
||||
if p := GetEmbeddedPrebuilt(m); p != nil {
|
||||
@@ -455,6 +459,11 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
|
||||
}
|
||||
})
|
||||
}
|
||||
// If this is `all_apex_contributions`, set a provider containing
|
||||
// metadata about source vs prebuilts selection
|
||||
if am, ok := m.(*allApexContributions); ok {
|
||||
am.SetPrebuiltSelectionInfoProvider(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
// PrebuiltPostDepsMutator replaces dependencies on the source module with dependencies on the
|
||||
|
Reference in New Issue
Block a user