首页 > 解决方案 > 如何让 Bazel、ccache 和沙盒协同工作(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 以 r/w 方式挂载我的 ccache 目录,或者如何通过 bazel 告诉 ccache 我的工作区的正确缓存目录所在的位置?

当我在 Ubuntu 18.04 上运行相同的命令时,它会成功,所以这让我相信 ccache 以某种方式得到支持。

看起来我的问题的一部分是ccache将其编译器驱动程序安装为gcc。例如which gcc -> /usr/lib64/ccache/gcc。必须显式调用 Ubuntu ccache 上的位置,并且默认工具链不会调用它。

标签: bazelccache

解决方案



推荐阅读