Remove deapexer and prebuilt apex select mutators
Originally, when the prebuilt_apex was first created, it selected the source to use in its DepsMutator. It did that because that was a convenient place for it to perform that work which had to be: * After the arch mutator had run so MultiTargets() was available. * Before the prebuilt_select mutator runs as that relied on the Source property to have been set. Change064b70c9
then duplicated the call from the DepsMutator of the deapexer module type that was added as part of the work to make dex files available for hiddenapi processing. Change356f7d45
moved it out of the the DepsMutator methods into its their own mutators, presumably because it interfered with the Soong -> Bazel conversion work. This change improves the existing PrebuiltSrcsSupplier mechanism to support reporting errors so that the logic for selecting the source can be done on demand rather than in separate mutators. The main complication was that PrebuiltSrcsSupplier is called with a BaseModuleContext for both source and prebuilt modules so it cannot use any methods on it that are related to the current module. That necessitated adding MultiTargets() to android.Module. Bug: 181267622 Test: m droid Change-Id: I106c78fd21016f051a315b82b470d8f12b1f820b
This commit is contained in:
@@ -100,7 +100,7 @@ func (p *Prebuilt) Prefer() bool {
|
||||
// more modules like this.
|
||||
func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
|
||||
if p.srcsSupplier != nil {
|
||||
srcs := p.srcsSupplier(ctx)
|
||||
srcs := p.srcsSupplier(ctx, ctx.Module())
|
||||
|
||||
if len(srcs) == 0 {
|
||||
ctx.PropertyErrorf(p.srcsPropertyName, "missing prebuilt source file")
|
||||
@@ -128,8 +128,11 @@ func (p *Prebuilt) UsePrebuilt() bool {
|
||||
|
||||
// Called to provide the srcs value for the prebuilt module.
|
||||
//
|
||||
// This can be called with a context for any module not just the prebuilt one itself. It can also be
|
||||
// called concurrently.
|
||||
//
|
||||
// Return the src value or nil if it is not available.
|
||||
type PrebuiltSrcsSupplier func(ctx BaseModuleContext) []string
|
||||
type PrebuiltSrcsSupplier func(ctx BaseModuleContext, prebuilt Module) []string
|
||||
|
||||
// Initialize the module as a prebuilt module that uses the provided supplier to access the
|
||||
// prebuilt sources of the module.
|
||||
@@ -163,7 +166,7 @@ func InitPrebuiltModule(module PrebuiltInterface, srcs *[]string) {
|
||||
panic(fmt.Errorf("srcs must not be nil"))
|
||||
}
|
||||
|
||||
srcsSupplier := func(ctx BaseModuleContext) []string {
|
||||
srcsSupplier := func(ctx BaseModuleContext, _ Module) []string {
|
||||
return *srcs
|
||||
}
|
||||
|
||||
@@ -184,7 +187,7 @@ func InitSingleSourcePrebuiltModule(module PrebuiltInterface, srcProps interface
|
||||
srcFieldIndex := srcStructField.Index
|
||||
srcPropertyName := proptools.PropertyNameForField(srcField)
|
||||
|
||||
srcsSupplier := func(ctx BaseModuleContext) []string {
|
||||
srcsSupplier := func(ctx BaseModuleContext, _ Module) []string {
|
||||
if !module.Enabled() {
|
||||
return nil
|
||||
}
|
||||
@@ -256,12 +259,12 @@ func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
|
||||
panic(fmt.Errorf("prebuilt module did not have InitPrebuiltModule called on it"))
|
||||
}
|
||||
if !p.properties.SourceExists {
|
||||
p.properties.UsePrebuilt = p.usePrebuilt(ctx, nil)
|
||||
p.properties.UsePrebuilt = p.usePrebuilt(ctx, nil, m)
|
||||
}
|
||||
} else if s, ok := ctx.Module().(Module); ok {
|
||||
ctx.VisitDirectDepsWithTag(PrebuiltDepTag, func(m Module) {
|
||||
p := m.(PrebuiltInterface).Prebuilt()
|
||||
if p.usePrebuilt(ctx, s) {
|
||||
if p.usePrebuilt(ctx, s, m) {
|
||||
p.properties.UsePrebuilt = true
|
||||
s.ReplacedByPrebuilt()
|
||||
}
|
||||
@@ -296,8 +299,8 @@ func PrebuiltPostDepsMutator(ctx BottomUpMutatorContext) {
|
||||
|
||||
// usePrebuilt returns true if a prebuilt should be used instead of the source module. The prebuilt
|
||||
// will be used if it is marked "prefer" or if the source module is disabled.
|
||||
func (p *Prebuilt) usePrebuilt(ctx TopDownMutatorContext, source Module) bool {
|
||||
if p.srcsSupplier != nil && len(p.srcsSupplier(ctx)) == 0 {
|
||||
func (p *Prebuilt) usePrebuilt(ctx TopDownMutatorContext, source Module, prebuilt Module) bool {
|
||||
if p.srcsSupplier != nil && len(p.srcsSupplier(ctx, prebuilt)) == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user