如何避免在Bazel构建中“无剩余空间”?

时间:2019-03-04 15:54:14

标签: caching build out-of-memory bazel

在接近满载的设备上运行冗长的Bazel构建时,我遇到此错误:

  

错误:写入操作日志时发生I / O错误:设备上没有剩余空间

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

  • 在收到错误消息后删除其中的一些文件?
  • 将该缓存移至其他位置?
  • 完全禁用缓存?

Bazel's User Manual似乎表明--[no]use_action_cache会执行第三种选择(尽管我不知道这样做的效率如何),但会减慢速度。

关于临时存储,我确实有一个足够空间的位置,因此我简单地称呼export TMPDIR=/path/to/morespace/。因此,如果我可以移动缓存,那就可以了。

1 个答案:

答案 0 :(得分:1)

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

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

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

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