Don't fail if the target module is disabled in dex2oat tool
dependencies. dexpreopt.RegisterToolDeps runs late after prebuilt dependencies have been resolved, and there's special code in dex2oatPathFromDep to resolve the prebuilt from the source module. However, if the source module is disabled then the dependencies check in validateAndroidModule will complain, so we need to disable that check in this particular situation. Also add a comment to explain why dexpreopt.RegisterToolDeps needs to run so late. Test: m nothing Bug: 145934348 Bug: 172480615 Change-Id: Ibc673303d0336768fa23261a2068e91a08f46a30
This commit is contained in:
@@ -1809,8 +1809,8 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
|
||||
if m.Enabled() {
|
||||
// ensure all direct android.Module deps are enabled
|
||||
ctx.VisitDirectDepsBlueprint(func(bm blueprint.Module) {
|
||||
if _, ok := bm.(Module); ok {
|
||||
ctx.validateAndroidModule(bm, ctx.baseModuleContext.strictVisitDeps)
|
||||
if m, ok := bm.(Module); ok {
|
||||
ctx.validateAndroidModule(bm, ctx.OtherModuleDependencyTag(m), ctx.baseModuleContext.strictVisitDeps)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -2234,7 +2234,12 @@ func (b *baseModuleContext) AddMissingDependencies(deps []string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, strict bool) Module {
|
||||
type AllowDisabledModuleDependency interface {
|
||||
blueprint.DependencyTag
|
||||
AllowDisabledModuleDependency(target Module) bool
|
||||
}
|
||||
|
||||
func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, tag blueprint.DependencyTag, strict bool) Module {
|
||||
aModule, _ := module.(Module)
|
||||
|
||||
if !strict {
|
||||
@@ -2247,10 +2252,12 @@ func (b *baseModuleContext) validateAndroidModule(module blueprint.Module, stric
|
||||
}
|
||||
|
||||
if !aModule.Enabled() {
|
||||
if b.Config().AllowMissingDependencies() {
|
||||
b.AddMissingDependencies([]string{b.OtherModuleName(aModule)})
|
||||
} else {
|
||||
b.ModuleErrorf("depends on disabled module %q", b.OtherModuleName(aModule))
|
||||
if t, ok := tag.(AllowDisabledModuleDependency); !ok || !t.AllowDisabledModuleDependency(aModule) {
|
||||
if b.Config().AllowMissingDependencies() {
|
||||
b.AddMissingDependencies([]string{b.OtherModuleName(aModule)})
|
||||
} else {
|
||||
b.ModuleErrorf("depends on disabled module %q", b.OtherModuleName(aModule))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -2343,7 +2350,7 @@ func (b *baseModuleContext) VisitDirectDepsBlueprint(visit func(blueprint.Module
|
||||
|
||||
func (b *baseModuleContext) VisitDirectDeps(visit func(Module)) {
|
||||
b.bp.VisitDirectDeps(func(module blueprint.Module) {
|
||||
if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
||||
if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
||||
visit(aModule)
|
||||
}
|
||||
})
|
||||
@@ -2351,7 +2358,7 @@ func (b *baseModuleContext) VisitDirectDeps(visit func(Module)) {
|
||||
|
||||
func (b *baseModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) {
|
||||
b.bp.VisitDirectDeps(func(module blueprint.Module) {
|
||||
if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
||||
if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
||||
if b.bp.OtherModuleDependencyTag(aModule) == tag {
|
||||
visit(aModule)
|
||||
}
|
||||
@@ -2363,7 +2370,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func
|
||||
b.bp.VisitDirectDepsIf(
|
||||
// pred
|
||||
func(module blueprint.Module) bool {
|
||||
if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
||||
if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
||||
return pred(aModule)
|
||||
} else {
|
||||
return false
|
||||
@@ -2377,7 +2384,7 @@ func (b *baseModuleContext) VisitDirectDepsIf(pred func(Module) bool, visit func
|
||||
|
||||
func (b *baseModuleContext) VisitDepsDepthFirst(visit func(Module)) {
|
||||
b.bp.VisitDepsDepthFirst(func(module blueprint.Module) {
|
||||
if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
||||
if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
||||
visit(aModule)
|
||||
}
|
||||
})
|
||||
@@ -2387,7 +2394,7 @@ func (b *baseModuleContext) VisitDepsDepthFirstIf(pred func(Module) bool, visit
|
||||
b.bp.VisitDepsDepthFirstIf(
|
||||
// pred
|
||||
func(module blueprint.Module) bool {
|
||||
if aModule := b.validateAndroidModule(module, b.strictVisitDeps); aModule != nil {
|
||||
if aModule := b.validateAndroidModule(module, b.bp.OtherModuleDependencyTag(module), b.strictVisitDeps); aModule != nil {
|
||||
return pred(aModule)
|
||||
} else {
|
||||
return false
|
||||
|
Reference in New Issue
Block a user