Integrate stub library targets into the top level shared library proxy target.
Dependents of the shared library, e.g. libm, can inspect the target's
providers for a non-empty CcStubLibrariesInfo, and then iterating over
the list for a CcStubInfo for a particular version of the library to
build against.
A use case of this is in the APEX aspect to allow symbols in transitive
stub libraries to be resolved during linking, but excluded from the
APEX's contents.
e.g.
$ b cquery --output=starlark
--starlark:expr="providers(target)[\"//build/bazel/rules:cc_library_shared.bzl%CcStubLibrariesInfo\"]"
//bionic/libm:libm\"]
struct(infos = [
{
"CcStubInfo": struct(abi_symbol_list = <generated file bionic/libm/libm_29_stubs_files/abi_symbol_list.txt>, stub_map = <generated file bionic/libm/libm_29_stubs_files/stub.map>, version = "29"),
"CcSharedLibraryInfo": struct(dynamic_deps = depset([]), exports = ["//bionic/libm:libm_29_stubs_root"], link_once_static_libs = [], linker_input = <unknown object com.google.devtools.build.lib.rules.cpp.CcLinkingContext$LinkerInput>, preloaded_deps = None), "DefaultInfo": struct(data_runfiles = <unknown object com.google.devtools.build.lib.analysis.Runfiles>, default_runfiles = <unknown object com.google.devtools.build.lib.analysis.Runfiles>, files = depset([<generated file bionic/libm/liblibm_29_stubs_so.so>]), files_to_run = <unknown object com.google.devtools.build.lib.analysis.FilesToRunProvider>)
},
{
"CcStubInfo": struct(abi_symbol_list = <generated file bionic/libm/libm_current_stubs_files/abi_symbol_list.txt>, stub_map = <generated file bionic/libm/libm_current_stubs_files/stub.map>, version = "current"),
"CcSharedLibraryInfo": struct(dynamic_deps = depset([]), exports = ["//bionic/libm:libm_current_stubs_root"], link_once_static_libs = [], linker_input = <unknown object com.google.devtools.build.lib.rules.cpp.CcLinkingContext$LinkerInput>, preloaded_deps = None), "DefaultInfo": struct(data_runfiles = <unknown object com.google.devtools.build.lib.analysis.Runfiles>, default_runfiles = <unknown object com.google.devtools.build.lib.analysis.Runfiles>, files = depset([<generated file bionic/libm/liblibm_current_stubs_so.so>]), files_to_run = <unknown object com.google.devtools.build.lib.analysis.FilesToRunProvider>)
}
])
Test: CI
Bug: 207812332
Change-Id: I8a2326c90d37defd4183efb9b57029b0ee34658b
2 files changed