-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Milestone
Description
Describe the bug
Conan is generating bazel build files that do not reference the required so symlinks. At bazel test time, this results in the error:
INFO: From Testing //src/shared/test:shared_test:
==================== Test output for //src/shared/test:shared_test:
/bazel-cache/cppproject/9763da1683031e58994061fbf702ccff/sandbox/processwrapper-sandbox/1/execroot/_main/bazel-out/k8-opt/bin/src/shared/test/shared_test.runfiles/_main/src/shared/test/shared_test: error while loading shared libraries: libgmock_main.so.1.15.0: cannot open shared object file: No such file or directory
================================================================================
Environment
- RockyLinux 9.6
- gcc toolset 14
- Conan 2.21
- gtest 1.15.0
Conanprofile:
[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=20
compiler.libcxx=libstdc++
compiler.version=14
doxygen/*:compiler.cppstd=17
os=Linux
[options]
*:shared=True
Build file generated by conan 2.21 resulting in error:
# Components precompiled libs
cc_import(
name = "gtest_precompiled",
shared_library = "lib/libgtest.so",
)
cc_import(
name = "gtest_main_precompiled",
shared_library = "lib/libgtest_main.so",
)
cc_import(
name = "gmock_precompiled",
shared_library = "lib/libgmock.so",
)
cc_import(
name = "gmock_main_precompiled",
shared_library = "lib/libgmock_main.so",
)
# Root package precompiled libs
# Components libraries declaration
cc_library(
name = "gtest-libgtest",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
defines = [
"GTEST_LINKED_AS_SHARED_LIBRARY=1",
],
linkopts = [
"-lm",
"-lpthread",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest_precompiled",
],
)
cc_library(
name = "gtest-gtest_main",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest_main_precompiled",
":gtest-libgtest",
],
)
cc_library(
name = "gtest-gmock",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gmock_precompiled",
":gtest-libgtest",
],
)
cc_library(
name = "gtest-gmock_main",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gmock_main_precompiled",
":gtest-gmock",
],
)
# Package library declaration
cc_library(
name = "gtest",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest-libgtest",
":gtest-gtest_main",
":gtest-gmock",
":gtest-gmock_main",
],
)
# Filegroup library declaration
filegroup(
name = "gtest_binaries",
srcs = glob([
"bin/**",
],
allow_empty = True
),
visibility = ["//visibility:public"],
)
Patched BUILD file that fixes the issue:
# Components precompiled libs
cc_import(
name = "gtest_precompiled",
shared_library = "lib/libgtest.so",
)
cc_import(
name = "gtest_main_precompiled",
shared_library = "lib/libgtest_main.so",
)
cc_import(
name = "gmock_precompiled",
shared_library = "lib/libgmock.so",
)
cc_import(
name = "gmock_main_precompiled",
shared_library = "lib/libgmock_main.so",
)
# Root package precompiled libs
# Components libraries declaration
cc_library(
name = "gtest-libgtest",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
defines = [
"GTEST_LINKED_AS_SHARED_LIBRARY=1",
],
linkopts = [
"-lm",
"-lpthread",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest_precompiled",
":gtest_symlink",
],
)
cc_library(
name = "gtest-gtest_main",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest_main_precompiled",
":gtest_main_symlink",
":gtest-libgtest",
],
)
cc_library(
name = "gtest-gmock",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gmock_precompiled",
":gmock_symlink",
":gtest-libgtest",
],
)
cc_library(
name = "gtest-gmock_main",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gmock_main_precompiled",
":gmock_main_symlink",
":gtest-gmock",
],
)
# Package library declaration
cc_library(
name = "gtest",
hdrs = glob([
"include/**",
]),
includes = [
"include",
],
visibility = ["//visibility:public"],
deps = [
# do not sort
":gtest-libgtest",
":gtest-gtest_main",
":gtest-gmock",
":gtest-gmock_main",
],
)
# Filegroup library declaration
filegroup(
name = "gtest_binaries",
srcs = glob([
"bin/**",
],
allow_empty = True
),
visibility = ["//visibility:public"],
)
cc_import(
name = "gtest_symlink",
shared_library = "lib/libgtest.so.1.15.0",
)
cc_import(
name = "gtest_main_symlink",
shared_library = "lib/libgtest_main.so.1.15.0",
)
cc_import(
name = "gmock_symlink",
shared_library = "lib/libgmock.so.1.15.0",
)
cc_import(
name = "gmock_main_symlink",
shared_library = "lib/libgmock_main.so.1.15.0",
)
Related issues:
- [bug] BazelDeps shared-library packages with chained symlinks fail to install with bazel correctly after 2.15 #19135
- [bug] z3 and fmt so's are not working correctly in bazel #17721
How to reproduce it
No response
Metadata
Metadata
Assignees
Labels
No labels