First of all, I'm very new to bazel, so please forgive any incorrect wording and stupid questions :sweat_smile:
I'm trying to switch to bazel with a bunch of native dependencies, most of which get built using autotools.
The autotools part is wrapped using rules_foreign_cc. In fairness, I'm not sure if the issue lies more in foreign_cc or here, but please feel free to redirect me there.
Our main issue comes down to libtool not detecting ld.lld as a GNU linker, but I believe that's because the linker is simply not there.
Here's a minimal repro: minimal_repro.zip
Libtool gets confused by what the linker is and fails to generate the .so, which causes the main visible error:
$> bazel build :libxcrypt --sandbox_debug
...
/usr/bin/install: cannot stat '.libs/libcrypt.so.2.0.0': No such file or directory
make[1]: *** [Makefile:1418: install-libLTLIBRARIES] Error 1
make[1]: Leaving directory '/home/hugo.beauzee/.cache/bazel/_bazel_hugo.beauzee/d935f933fb7b3a399ddc63c1fd0c0e1d/sandbox/processwrapper-sandbox/4/execroot/_main/bazel-out/k8-fastbuild/bin/libxcrypt.build_tmpdir'
make: *** [Makefile:3246: install-am] Error 2
_____ END BUILD LOGS _____
Looking at bazel-out/k8-fastbuild/bin/libxcrypt_foreign_cc/Configure.log we can see the compiler and linker being provided to xcrypt's build system:
$> /home/hugo.beauzee/.cache/bazel/_bazel_hugo.beauzee/d935f933fb7b3a399ddc63c1fd0c0e1d/sandbox/processwrapper-sandbox/5/execroot/_main/external/hermetic_cc_toolchain~~toolchains~zig_sdk/tools/x86_64-linux-gnu.2.28/c++ -v
clang version 17.0.6 (https://github.com/ziglang/zig-bootstrap 4c78aa1bba84dbd324e178932cd52221417f63da)
Target: x86_64-unknown-linux-gnu.2.28
The linker doesn't appear to be:
$> /home/hugo.beauzee/.cache/bazel/_bazel_hugo.beauzee/d935f933fb7b3a399ddc63c1fd0c0e1d/sandbox/processwrapper-sandbox/5/execroot/_main/external/hermetic_cc_toolchain~~toolchains~zig_sdk/tools/ld.lld -v
zsh: no such file or directory: /home/hugo.beauzee/.cache/bazel/_bazel_hugo.beauzee/d935f933fb7b3a399ddc63c1fd0c0e1d/sandbox/processwrapper-sandbox/5/execroot/_main/external/hermetic_cc_toolchain~~toolchains~zig_sdk/tools/ld.lld
while I'd expect it to be, since the build is ran with --sandbox_debug
Oh I forgot to mention that running the build with --spawn_strategy=local makes the issue disappear, which makes me think about a problem with the linker's availability in the sandbox even more
Hello :wave:
First of all, I'm very new to bazel, so please forgive any incorrect wording and stupid questions :sweat_smile:
I'm trying to switch to bazel with a bunch of native dependencies, most of which get built using autotools. The autotools part is wrapped using rules_foreign_cc. In fairness, I'm not sure if the issue lies more in
foreign_cc
or here, but please feel free to redirect me there.Our main issue comes down to libtool not detecting
ld.lld
as a GNU linker, but I believe that's because the linker is simply not there. Here's a minimal repro: minimal_repro.zipLibtool gets confused by what the linker is and fails to generate the .so, which causes the main visible error:
Looking at
bazel-out/k8-fastbuild/bin/libxcrypt_foreign_cc/Configure.log
we can see the compiler and linker being provided to xcrypt's build system:While C compiler is there:
The linker doesn't appear to be:
while I'd expect it to be, since the build is ran with
--sandbox_debug
Thanks a lot in advance for taking a look!