Runtime deps to a stubs lib crosses APEX boundary

When there is a runtime depedency (via runtime_libs property) to a
library providing stable C APIs, the dependency is considered as
crossing APEX boundary. Therefore, the requested lib doesn't need to be
made available to the APEX where the requesting lib is in.

Bug: 147813447
Test: m
Change-Id: I9cf8a5877850fb85b92c851e15fac921b8b7641b
This commit is contained in:
Jiyong Park 2020-03-01 17:29:06 +09:00
parent cfaa1643e8
commit 323a4c3ab3
2 changed files with 19 additions and 4 deletions

View File

@ -810,7 +810,6 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) {
stubs: {
versions: ["10", "20", "30"],
},
apex_available: [ "myapex" ],
}
cc_library {
@ -3175,6 +3174,7 @@ func TestApexAvailable(t *testing.T) {
name: "libfoo",
stl: "none",
system_shared_libs: [],
runtime_libs: ["libbaz"],
apex_available: ["myapex"],
}
@ -3183,6 +3183,15 @@ func TestApexAvailable(t *testing.T) {
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
}
cc_library {
name: "libbaz",
stl: "none",
system_shared_libs: [],
stubs: {
versions: ["10", "20", "30"],
},
}`)
// check that libfoo and libbar are created only for myapex, but not for the platform

View File

@ -2631,9 +2631,15 @@ func (c *Module) AndroidMkWriteAdditionalDependenciesForSourceAbiDiff(w io.Write
func (c *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
if depTag, ok := ctx.OtherModuleDependencyTag(dep).(DependencyTag); ok {
if cc, ok := dep.(*Module); ok {
if cc.HasStubsVariants() && depTag.Shared && depTag.Library {
// dynamic dep to a stubs lib crosses APEX boundary
return false
if cc.HasStubsVariants() {
if depTag.Shared && depTag.Library {
// dynamic dep to a stubs lib crosses APEX boundary
return false
}
if IsRuntimeDepTag(depTag) {
// runtime dep to a stubs lib also crosses APEX boundary
return false
}
}
if depTag.FromStatic {
// shared_lib dependency from a static lib is considered as crossing