如何使Bazel,ccache和沙箱协同工作(ccache只读文件系统)

时间:2018-09-17 14:37:39

标签: bazel ccache

我正在尝试使用通过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,默认工具链不会调用它。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

在Fedora 29中出现了相同的问题,在我的情况下,通过导出下一个环境变量来解决了

export CC="/usr/bin/gcc"
export CXX="/usr/bin/g++"

https://github.com/bazelbuild/bazel/issues/1322#issuecomment-226919588