gpt4 book ai didi

bazel - 在 Bazel 中构建后如何避免删除缓存文件

转载 作者:行者123 更新时间:2023-12-01 09:40:05 26 4
gpt4 key购买 nike

我有一个 genrule在应该操作一些文件的 Bazel 中。我想我没有通过正确的路径访问这些文件,所以我想查看 Bazel 创建的目录结构,以便我可以调试。

我添加了一些 echo对我的 genrule 的声明,我可以看到 Bazel 在目录 /home/lyft/.cache/bazel/_bazel_lyft/8de0a1069de8d166c668173ca21c04ae/sandbox/linux-sandbox/1/execroot/ 中工作.但是bazel运行完后,这个目录就没有了,所以无法查看目录结构。

如何防止 Bazel 删除其临时文件,以便我可以调试正在发生的事情?

最佳答案

由于此问题是“在构建 bazel 后保留沙箱文件”Google 搜索和 it wasn't obvious for me 的最佳结果。从接受的答案来看,我觉得有必要写下这个答案。

简答

使用 --sandbox_debug .如果传递了此标志,则 Bazel 不会在构建完成后删除沙箱文件夹中的文件。

更长的答案

使用 --sandbox_debug 运行 bazel build选项:

$ bazel build mypackage:mytarget --sandbox_debug

然后,您可以检查项目的沙箱文件夹的内容。

要获取当前项目的沙箱文件夹的位置,请导航到项目,然后运行:
$ bazel info output_base
/home/johnsmith/.cache/bazel/_bazel_johnsmith/d949417420413f64a0b619cb69f1db69 # output will be something like this

在那个目录里面会有 sandbox文件夹。

可能的警告: (我对此不确定,但是) sandbox 中可能缺少某些文件。文件夹,如果您之前在没有 --sandbox_debug 的情况下运行构建flag 并且它部分成功了。原因是 Bazel 不会重新运行已经成功的构建部分,因此与成功构建部分对应的文件可能不会最终出现在沙箱中。

如果你想确保所有的沙箱文件都在那里,首先使用 bazel clean 清理项目。或 bazel clean --expunge .

关于bazel - 在 Bazel 中构建后如何避免删除缓存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com