如何在 Bazel 构建中避免 'No space left'?

How to avoid 'No space left' on Bazel build?

运行 在接近完整的设备上构建冗长的 Bazel,我遇到了这个错误:

ERROR: I/O error while writing action log: No space left on device

但是,我不能完全释放设备上的一些 space,所以我必须以某种方式操纵缓存 and/or 临时存储。我注意到 Bazel 在 ~/.cache/bazel/myproject/ 的缓存可能会变得很大,所以我想知道,我可以:

Bazel's User Manual 似乎表明 --[no]use_action_cache 会做第三种选择(虽然我不知道那会有多有效),但它会减慢速度。

至于暂存区,我确实有足够的位置space,所以我干脆调用了export TMPDIR=/path/to/morespace/。因此,如果我可以移动缓存,那就是它要去的地方。

您可以使用启动选项 --output_base 指向有更多可用存储空间的位置。这将告诉 Bazel 在哪里写入它的所有输出。

$ bazel --output_base=/path/to/more/space build ...

为避免为每个命令指定它,请将其添加到您的项目 <project>/.bazelrc 或用户 ~/.bazelrc:

startup --output_base=/path/to/more/space