bazel: cant build with bazel and ccache
Description of the problem / feature request:
Bazel fails to build tcmalloc
with message
ccache: error: Failed to create temporary file for /home/user/.ccache/tmp/string_uti.stdout: Read-only file system
Bugs: what’s the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.
I guess no special steps needed. ccache
works fine, I’m able to build without using sudo
with CMake, for example
What operating system are you running Bazel on?
Ubuntu 20.04
What’s the output of bazel info release
?
release 3.5.0
Have you found anything relevant by searching the web?
semi-related
https://github.com/bazelbuild/bazel/issues/1540
but I installed the Bazel using apt
Any other information, logs, or outputs that you want to share?
worked as expected once I ran Bazel under sudo
, but I guess it is not the expected behavior
let me know if you need any additional information
About this issue
- Original URL
- State: open
- Created 4 years ago
- Comments: 24 (11 by maintainers)
It looks like this is a documentation request at this point, to clarify that users should pass --sandbox_writeable_path to enable ccache with sandboxing. Does that sound right to you?
Discovered this issue building https://github.com/ankitects/anki on my Fedora 36 system. The command I invoked was:
and ccache complains it cannot locate gcc on the path, which is somewhat amusing.
/usr/lib64/ccache/gcc
does in fact exist.The workaround for me was to explicitly define
CC=/usr/bin/gcc
andCXX=/usr/bin/g++
to force Bazel to not use ccache at all as per https://stackoverflow.com/a/53517061. I have tried all the steps indicated in this thread (server shutdown, and even bazel cleans between runs).This feels like surprisingly brittle behaviour.
You can create config file
$HOME/.bazelrc
with the option, https://docs.bazel.build/versions/master/guide.html#bazelrc-syntax-and-semantics.in bazel.rc should work. What does not work is using env variables, such as
$HOME
in .bazel.rc. https://github.com/bazelbuild/bazel/issues/10904. And env variables there never worked, as far as I remember.worked too
In that case, what does using the sandbox writable path argument, that is
--sandbox_writable_path=$HOME/.ccache
do?