gpt4 book ai didi

bazel - 有没有办法查看正在运行的 Bazel 操作的助记符?

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

(来自https://groups.google.com/d/msg/bazel-discuss/XrtKLhH1bgI/B9xZn_aVAAAJ)

在我们使用 Bazel 构建的项目中,我使用了远程缓存 (--spawn_strategy=remote),我们必须做一些微调才能关闭某些 Action 的缓存。例如,当我们生成 tar 文件时,我们不想使用远程缓存,因为 (a) 在本地构建 tar 文件与下载它们一样快,并且 (b) 我们的一些 tar 文件可能非常庞大。

所以我想让我们的 .bazelrc 文件为某些操作指定不同的策略,例如--strategy=PackageTar=standalone

这是棘手的部分:为了覆盖策略,您需要知道助记符。例如。对于 pkg_tar 规则,相关操作具有助记符 PackageTar。我在 bazel 源代码中发现了这一点。其他一些则比较棘手。

有什么方法可以让 bazel 告诉我它正在执行的操作的助记符?我研究了各种选项,例如 --profile--explain--verbose_explanations--subcommands,但想不出办法。

最佳答案

您可以使用 bazel aquery 执行此操作:

$ cat BUILD
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")

pkg_tar(
name = "my_archive",
srcs = ["hello.txt"],
)
$ bazel aquery :my_archive 2>/dev/null
action 'Writing file my_archive.args'
Mnemonic: FileWrite
Target: //:my_archive
Configuration: k8-fastbuild
ActionKey: 3dafce6be7ba0023b7eaae485085f977
Inputs: []
Outputs: [bazel-out/k8-fastbuild/bin/my_archive.args]

action 'PackageTar my_archive.tar'
Mnemonic: PackageTar
Target: //:my_archive
Configuration: k8-fastbuild
ActionKey: 86bd5d0e112232cf0224fd0e3534f553
Inputs: [<snip>]
Outputs: [bazel-out/k8-fastbuild/bin/my_archive.tar]
Command Line: (exec bazel-out/host/bin/external/bazel_tools/tools/build_defs/pkg/build_tar \
--flagfile \
bazel-out/k8-fastbuild/bin/my_archive.args)

注意第二个操作中的 Mnemonic: PackageTar 行。

您可以使用 --output=textproto optionbazel aquery 到获得机器可读的输出。

您还可以使用像 bazel aquery 'outputs(".*\.tar",//...)' 这样的查询缩小 Action 图;有关更多信息,请参阅 aquery 文档详情。

关于bazel - 有没有办法查看正在运行的 Bazel 操作的助记符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494170/

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