我一直在迭代一个依赖于“自定义”的工具的 bazel 规则(如果您熟悉,则为验证器)。该工具应该读取参数和输入并生成 cpp 文件。调用验证器的动作定义如下
ctx.actions.run(
arguments = [args],
executable = verilator_toolchain.verilator_bin,
inputs = inputs,
outputs = [verilator_output],
progress_message = "[Verilator] Compiling {}".format(ctx.label),
)
问题在于,赋予此操作的可执行文件在不同平台之间/完全/不一样——它稍大,在此处比较 mac 和 linux 可执行文件时具有不同的哈希值。
我可以相信输出可以相同,并且我想为两个平台的此操作共享一个远程缓存;是否有“最佳实践”,我可以将此操作重写为非封闭的,因此工具链二进制文件不被视为缓存的“输入”?我认为 cpp 规则做了类似的事情。