Merge "Improve missing apex_available message" am: 4db3298d34

Change-Id: Ic806d07d68037d2bc1e70a0a2300455a474eba6d
This commit is contained in:
Paul Duffin
2020-03-31 09:22:10 +00:00
committed by Automerger Merge Worker
2 changed files with 13 additions and 3 deletions

View File

@@ -1976,7 +1976,7 @@ func (c *flattenedApexContext) InstallBypassMake() bool {
// Visit dependencies that contributes to the payload of this APEX
func (a *apexBundle) walkPayloadDeps(ctx android.ModuleContext,
do func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool)) {
ctx.WalkDepsBlueprint(func(child, parent blueprint.Module) bool {
ctx.WalkDeps(func(child, parent android.Module) bool {
am, ok := child.(android.ApexModule)
if !ok || !am.CanHaveApexVariants() {
return false
@@ -2037,7 +2037,11 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) {
if externalDep || to.AvailableFor(apexName) || whitelistedApexAvailable(apexName, toName) {
return
}
ctx.ModuleErrorf("%q requires %q that is not available for the APEX.", fromName, toName)
message := ""
for _, m := range ctx.GetWalkPath()[1:] {
message = fmt.Sprintf("%s\n -> %s", message, m.String())
}
ctx.ModuleErrorf("%q requires %q that is not available for the APEX. Dependency path:%s", fromName, toName, message)
})
}

View File

@@ -3538,7 +3538,13 @@ func TestApexAvailable_DirectDep(t *testing.T) {
func TestApexAvailable_IndirectDep(t *testing.T) {
// libbbaz is an indirect dep
testApexError(t, "requires \"libbaz\" that is not available for the APEX", `
testApexError(t, `requires "libbaz" that is not available for the APEX. Dependency path:
.*-> libfoo.*link:shared.*
.*-> libfoo.*link:static.*
.*-> libbar.*link:shared.*
.*-> libbar.*link:static.*
.*-> libbaz.*link:shared.*
.*-> libbaz.*link:static.*`, `
apex {
name: "myapex",
key: "myapex.key",