0

我一直在迭代一个依赖于“自定义”的工具的 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 规则做了类似的事情。

4

1 回答 1

1

不,除了编写不正确的非封闭规则之外,没有办法阻止 Bazel 将所有操作输入放入哈希键中。

于 2019-12-13T06:15:19.983 回答