bazel - 如何让 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 上的位置,并且默认工具链不会调用它。
解决方案
推荐阅读
- flutter - 我正在从 api 获取数据以获取电晕病毒的统计信息,并想为其绘制饼图,但饼图仅接受双值
- model-view-controller - 403 - 禁止:访问被拒绝。ASP.NET Core MVC IIS 客户端证书 SSL
- python-3.x - Python3.5 openssl 验证证书时出错
- java - 使用 Java 将大型 JSON 文件拆分为较小的 JSON 文件
- gcc - 如何用 g++ 覆盖像 __libc_start_main 这样的入口点
- python - 处理缺失的分类值 ML
- java - java内置方法性能好吗?
- c# - 如何将带有查询字符串的 url 作为 api 参数传递?
- javascript - 在一个数据属性中为背景图像设置动画
- numpy - 我怎样才能用 numpy 来改变 Dimension 并降低复杂性?