From 58c33f073d71e35562d7778ff03a74ef6b3e589b Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Mon, 6 Jul 2020 22:56:01 +0100 Subject: [PATCH] Do not follow prebuiltDependencyTags in APEX payload walks. If prebuilts are active they will have the other direct dependencies from the source modules. Bug: 151303681 Test: m nothing Test: `m` with prebuilts/runtime in the manifest (along with other fixes) Change-Id: I1ffc7e7b528ed9db5ce6ca2ee96c9d23c6548c49 --- apex/apex.go | 10 ++++++++-- apex/apex_test.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index d0c1a09d5..b29017d1f 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1750,9 +1750,15 @@ func (a *apexBundle) WalkPayloadDeps(ctx android.ModuleContext, do android.Paylo return false } + dt := ctx.OtherModuleDependencyTag(child) + + if _, ok := dt.(android.ExcludeFromApexContentsTag); ok { + return false + } + // Check for the direct dependencies that contribute to the payload - if dt, ok := ctx.OtherModuleDependencyTag(child).(dependencyTag); ok { - if dt.payload { + if adt, ok := dt.(dependencyTag); ok { + if adt.payload { return do(ctx, parent, am, false /* externalDep */) } // As soon as the dependency graph crosses the APEX boundary, don't go further. diff --git a/apex/apex_test.go b/apex/apex_test.go index befb81483..6613ab57a 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -5790,6 +5790,41 @@ func TestAllowedFiles(t *testing.T) { } } +func TestNonPreferredPrebuiltDependency(t *testing.T) { + _, _ = testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + native_shared_libs: ["mylib"], + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + } + + cc_library { + name: "mylib", + srcs: ["mylib.cpp"], + stubs: { + versions: ["10000"], + }, + apex_available: ["myapex"], + } + + cc_prebuilt_library_shared { + name: "mylib", + prefer: false, + srcs: ["prebuilt.so"], + stubs: { + versions: ["10000"], + }, + apex_available: ["myapex"], + } + `) +} + func TestMain(m *testing.M) { run := func() int { setUp()