Do not add bootstrap libs as providing from apex
Currently, com.android.runtime provides libc/libm/libdl to system. But
they are supposed to be used from symlinks under /system/lib not
directly from runtime apex.
This helps linkerconfig to generate ld.config.txt automatically for
apexes.
Bug: 144664390
Test: m com.android.runtime
deapexer info com.android.runtime.apex
Change-Id: I1620e88e489fba88a06cc3bd6eb5b86a9b581e4f
diff --git a/apex/apex.go b/apex/apex.go
index 53bdc12..83276ce 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1303,11 +1303,12 @@
}
switch depTag {
case sharedLibTag:
- if cc, ok := child.(*cc.Module); ok {
- if cc.HasStubsVariants() {
- provideNativeLibs = append(provideNativeLibs, cc.OutputFile().Path().Base())
+ if c, ok := child.(*cc.Module); ok {
+ // bootstrap bionic libs are treated as provided by system
+ if c.HasStubsVariants() && !cc.InstallToBootstrap(c.BaseModuleName(), ctx.Config()) {
+ provideNativeLibs = append(provideNativeLibs, c.OutputFile().Path().Base())
}
- filesInfo = append(filesInfo, apexFileForNativeLibrary(ctx, cc, handleSpecialLibs))
+ filesInfo = append(filesInfo, apexFileForNativeLibrary(ctx, c, handleSpecialLibs))
return true // track transitive dependencies
} else {
ctx.PropertyErrorf("native_shared_libs", "%q is not a cc_library or cc_library_shared module", depName)