Skip to content

Seems the linkage didn't work properly #188

@hcoona

Description

@hcoona

Wrap zig cc manually and build with either Bazel or CMake works fine but failed to run with hermetic_cc_toolchain neither via traditional WORKSPACE nor via bzlmod.

Reproduce steps

git clone https://github.com/google/googletest.git
cd googletest
git checkout 1d17ea141d2c11b8917d2c7d029f1c4e2b9769b2

cat >.bazelrc <<EOF
common --enable_platform_specific_config

build --action_env BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1

build:linux --sandbox_add_mount_pair=/tmp
build:macos --sandbox_add_mount_pair=/var/tmp
build:windows --sandbox_add_mount_pair=C:\Temp
EOF

cat >>MODULE.bazel <<EOF
bazel_dep(
    name = "hermetic_cc_toolchain",
    version = "3.1.0",
)

toolchains = use_extension("@hermetic_cc_toolchain//toolchain:ext.bzl", "toolchains")
use_repo(toolchains, "zig_sdk")

register_toolchains(
    "@zig_sdk//toolchain:linux_amd64_gnu.2.31",
    "@zig_sdk//toolchain:linux_arm64_gnu.2.31",
    "@zig_sdk//toolchain:windows_amd64",
    "@zig_sdk//toolchain:windows_arm64",
)
EOF

bazel test //googletest/test:gtest_skip_test

I can execute bazel-bin/googletest/test/gtest_skip_test directly but failed to run with bazel command. The logs shows:

exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //googletest/test:gtest_skip_test
-----------------------------------------------------------------------------
/home/shuaiz/.cache/bazel/_bazel_shuaiz/6aeaeb0ed356c77557cf38dba9bcd145/sandbox/linux-sandbox/577/execroot/_main/bazel-out/k8-fastbuild/bin/googletest/test/gtest_skip_test.runfiles/_main/googletest/test/gtest_skip_test: error while loading shared libraries: bazel-out/k8-fastbuild/bin/_solib_k8/liblibgtest_Umain.so: cannot open shared object file: No such file or directory

An initial triage with bazel run //googletest/test:gtest_skip_test --run_under="ldd" shows:

INFO: Running command line: external/bazel_tools/tools/test/test-setup.sh /bin/bash -c '"$@"' /bin/bash ldd googletest/test/gtest_skip_test
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //googletest/test:gtest_skip_test
-----------------------------------------------------------------------------
        linux-vdso.so.1 (0x00007ffce21ca000)
        bazel-out/k8-fastbuild/bin/_solib_k8/liblibgtest_Umain.so => not found
        bazel-out/k8-fastbuild/bin/_solib_k8/liblibgtest.so => not found
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc92ca16000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc92c7ed000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc92ca27000)

A correct version for comparison:

INFO: Running command line: external/bazel_tools/tools/test/test-setup.sh /bin/bash -c '"$@"' /bin/bash ldd googletest/test/gtest_skip_test
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //googletest/test:gtest_skip_test
-----------------------------------------------------------------------------
        linux-vdso.so.1 (0x00007ffd4e1f2000)
        liblibgtest_Umain.so => /home/shuaiz/.cache/bazel/_bazel_shuaiz/6aeaeb0ed356c77557cf38dba9bcd145/execroot/_main/bazel-out/k8-fastbuild/bin/googletest/test/gtest_skip_test.runfiles/_main/googletest/test/../../_solib_k8/liblibgtest_Umain.so (0x00007f9f2e071000)
        liblibgtest.so => /home/shuaiz/.cache/bazel/_bazel_shuaiz/6aeaeb0ed356c77557cf38dba9bcd145/execroot/_main/bazel-out/k8-fastbuild/bin/googletest/test/gtest_skip_test.runfiles/_main/googletest/test/../../_solib_k8/liblibgtest.so (0x00007f9f2deda000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9f2dca4000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9f2dc84000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9f2da59000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9f2d972000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f9f2e081000)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions