我正在尝试使用通过copr安装的Bazel 0.16.1和通过DNF安装的ccache 3.4.2在Fedora 28上构建C ++应用程序。我正在使用默认的cc_binary和cc_library规则。当我运行bazel build命令时,出现ccache错误:
ccache: error: Failed to create temporary file for /home/mwalker/.ccache/tmp/time.stdout: Read-only file system
当我使用--verbose_failures --sandbox_debug
进行构建时,可以看到我们没有挂载ccache tmp目录r / w。
那么,如何让bazel挂载我的ccache目录r / w,或者如何通过bazel告诉ccache我工作区的正确缓存目录在哪里?
当我在Ubuntu 18.04上运行相同的命令时,它成功了,所以这使我相信以某种方式支持ccache。
看来,我的问题的一部分是ccache将其编译器驱动程序安装为gcc。例如。 which gcc -> /usr/lib64/ccache/gcc
。在Ubuntu上的哪个位置必须显式调用ccache,默认工具链不会调用它。
答案 0 :(得分:1)
您可以使用--sandbox_writable_path=<path>
[1]将现有目录添加到沙箱中。
[1] https://docs.bazel.build/versions/master/command-line-reference.html
答案 1 :(得分:1)
在Fedora 29中出现了相同的问题,在我的情况下,通过导出下一个环境变量来解决了
export CC="/usr/bin/gcc"
export CXX="/usr/bin/g++"
https://github.com/bazelbuild/bazel/issues/1322#issuecomment-226919588