我正在使用小型文件系统(~8 GB)的云虚拟机中构建一个大型 Bazel 项目。/tmp
有时我的构建失败并出现错误Not all outputs were created
:包含的文件系统/tmp
容量为 99%,并且/tmp
包含许多 Bazel 构建工件。
如何覆盖 Bazel 使用的临时目录?我尝试在启动时设置TEMP
和TMPDIR
环境变量bazel build
,但这没有帮助。
我正在使用小型文件系统(~8 GB)的云虚拟机中构建一个大型 Bazel 项目。/tmp
有时我的构建失败并出现错误Not all outputs were created
:包含的文件系统/tmp
容量为 99%,并且/tmp
包含许多 Bazel 构建工件。
如何覆盖 Bazel 使用的临时目录?我尝试在启动时设置TEMP
和TMPDIR
环境变量bazel build
,但这没有帮助。
您可以设置--output_base
将所有输出放在非默认目录中:
bazel --output_base=/dir/with/more/free/space build //foo
但是,我认为 Bazel/tmp
在您安装后(默认情况下)不会使用(安装程序确实使用 /tmp),所以您可能遇到了不同的问题。
如果您使用来自rules_foreign_cc的configure_make规则,不幸的是,您无法影响构建的 deps 的存储位置。
见https://github.com/bazelbuild/rules_foreign_cc/blob/master/cc_configure_make/def.bzl#L44
"tmpdir=$(mktemp -d)",
"tmpinstalldir=$(mktemp -d)",
我认为您需要该命令的--test_tmpdir=<a_path>命令行参数bazel
。
--test_tmpdir=<a path> default: see description
Specifies the base temporary directory for 'bazel test' to use.
您也可以参考 Bazel 的手册,描述输出目录布局