From 28d395a149a62d237365ab8e059bf24e83e585b6 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 7 Dec 2018 22:42:47 +0900 Subject: [PATCH] Fix: build error when a lib with stubs is included in an APEX apex { name: "foo", native_shared_libs: ["mylib"] } cc_library { name: "mylib", shared_libs: ["other_lib"], stubs: { versions: ["1"]}, } This is causing build error due to missing variant for other_lib. This is happening because the stubs variant of mylib is added to apex foo instead of the non-stubs variant. Because stubs variant does not have any further dependencies, other_lib is not included to the APEX and is not built for it. Fixing this issue by specifying the version variant when adding a lib to the dependency of an APEX, so that non-stub variant of the lib is depended on. Test: m (apex_test updated) Change-Id: I972b6dcbce11942f83a76212715ba915534ec3df --- apex/apex.go | 1 + apex/apex_test.go | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index 5ce0e0573..e26849917 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -367,6 +367,7 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, {Mutator: "arch", Variation: arch}, {Mutator: "image", Variation: "core"}, {Mutator: "link", Variation: "shared"}, + {Mutator: "version", Variation: ""}, // "" is the non-stub variant }, sharedLibTag, native_shared_libs...) ctx.AddFarVariationDependencies([]blueprint.Variation{ diff --git a/apex/apex_test.go b/apex/apex_test.go index c7ef58efa..c01c40a76 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -276,13 +276,21 @@ func TestApexWithStubs(t *testing.T) { cc_library { name: "mylib3", - srcs: ["mylib.cpp"], - system_shared_libs: [], + srcs: ["mylib.cpp"], + shared_libs: ["mylib4"], + system_shared_libs: [], stl: "none", stubs: { versions: ["10", "11", "12"], }, } + + cc_library { + name: "mylib4", + srcs: ["mylib.cpp"], + system_shared_libs: [], + stl: "none", + } `) apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule")