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

有没有办法查看正在运行的Bazel操作的助记符?,bazel,Bazel,(来自) 在我们使用Bazel进行构建的项目中,我使用了远程缓存(--spawn_strategy=remote),我们必须进行一些微调,以便为某些操作关闭缓存。例如,当我们生成tar文件时,我们不想使用远程缓存,因为(a)在本地构建tar文件与下载tar文件一样快,(b)我们的一些tar文件可能非常庞大 因此,我想让我们的.bazelrc文件为某些操作指定不同的策略,例如:strategy=PackageTar=standalone 这里是棘手的部分:为了覆盖策略,你需要知道助记符。例如,对于

(来自)

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

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

这里是棘手的部分:为了覆盖策略,你需要知道助记符。例如,对于
pkg_tar
规则,相关操作具有助记符
PackageTar
。我在bazel的资料里找到的。其他一些问题要弄清楚就有点棘手了


有没有办法让bazel告诉我它正在执行的动作的助记符?我查看了各种选项,例如
--profile
--explain
--verbose\u explaintation
--subcommands
,但找不到解决办法。

不幸的是,Bazel似乎在任何地方都没有报告助记符

通过在源代码中对可用助记符进行灰显,可以找到它们的列表

在云雀规则中:

cd <bazel_src_dir>
find -name '*.bzl' -not -path '*.git/*' -and -not -path '*/test/*' -type f | xargs grep 'mnemonic\s*='
cd
查找-name'*.bzl'-not-path'*.git/*'-and-not-path'*/test/*'-type f | xargs grep'mnemonic\s*='
在本机规则中:

cd <bazel_src_dir>
find src/main/java -name '*.java' -type f | xargs grep -A1 'String getMnemonic()'
cd
查找src/main/java-name'*.java'-type f | xargs grep-A1'String getMnemonic()'
您可以通过以下方式执行此操作:

$bazel aquery:my_archive 2>/dev/null
操作“正在写入文件my_archive.args”
助记符:文件写入
目标://:我的档案
配置:k8fastbuild
操作密钥:3dafce6be7ba0023b7eaae485085f977
投入:[]
输出:[bazel out/k8 fastbuild/bin/my_archive.args]
动作“PackageTar my_archive.tar”
助记符:PackageTar
目标://:我的档案
配置:k8fastbuild
操作密钥:86bd5d0e112232cf0224fd0e3534f553
投入:[]
输出:[bazel out/k8 fastbuild/bin/my_archive.tar]
命令行:(exec bazel out/host/bin/external/bazel_tools/tools/build_defs/pkg/build_tar)\
--旗标文件\
bazel out/k8 fastbuild/bin/my_archive.args)
注意第二个操作中的
助记符:PackageTar

您可以使用to
bazel aquery
来 获取机器可读的输出

您还可以使用类似于
bazel aquery'输出(“.\.tar”,//…)”
缩小动作图的范围;有关更多信息,请参阅
问答
文档
详细信息。

很抱歉代表你提问,我意识到这是个坏主意,因为现在你不知道这个问题,也没有得到赏金。也许你更愿意告诉人们在Stackoverflow上再问一次。虽然找人很好,但我宁愿让人们学习操作Stackoverflow。是的,我同意,我将来会这么做。
$ 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)