From f8707c07f153ac4ac2ec4b210321f1a16343006d Mon Sep 17 00:00:00 2001 From: plf Date: Tue, 15 Mar 2022 03:30:48 -0700 Subject: [PATCH] Account for interface libraries in cc_shared_library Take into account libraries_to_link which just contain an interface libary when building the runfiles of cc_shared_library. A library_to_link with only an interface library can come about in a cc_import rule for example where one can set system_provided=True RELNOTES:none PiperOrigin-RevId: 434705871 --- .../common/cc/experimental_cc_shared_library.bzl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl index 1f65828c4ea105..47ec796efa9201 100644 --- a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl +++ b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl @@ -147,7 +147,10 @@ def _build_link_once_static_libs_map(merged_shared_library_infos): return link_once_static_libs_map def _is_dynamic_only(library_to_link): - if library_to_link.static_library == None and library_to_link.pic_static_library == None: + if (library_to_link.static_library == None and + library_to_link.pic_static_library == None and + (library_to_link.objects == None or len(library_to_link.objects) == 0) and + (library_to_link.pic_objects == None or len(library_to_link.pic_objects) == 0)): return True return False @@ -501,7 +504,10 @@ def _cc_shared_library_impl(ctx): precompiled_only_dynamic_libraries_runfiles = [] for precompiled_dynamic_library in precompiled_only_dynamic_libraries: - precompiled_only_dynamic_libraries_runfiles.append(precompiled_dynamic_library.dynamic_library) + # precompiled_dynamic_library.dynamic_library could be None if the library to link just contains + # an interface library which is valid if the actual library is obtained from the system. + if precompiled_dynamic_library.dynamic_library != None: + precompiled_only_dynamic_libraries_runfiles.append(precompiled_dynamic_library.dynamic_library) if precompiled_dynamic_library.resolved_symlink_dynamic_library != None: precompiled_only_dynamic_libraries_runfiles.append(precompiled_dynamic_library.resolved_symlink_dynamic_library)