【问题标题】:Bazel rules with unknown output filenames具有未知输出文件名的 Bazel 规则
【发布时间】:2023-01-10 09:56:49
【问题描述】:

我有一个编译和运行程序的命令,但中间文件是随机命名的(但包含在一个目录中)。例如。

build foo.src bar.src -o output_dir
run output_dir

Bazel 要求我预先声明规则的所有输出,但我不能这样做,因为它们是随机命名的。我能以某种方式命名整个目录吗?

我能想到的唯一选择是让规则在运行命令之前/之后压缩/解压缩目录,这是一个非常糟糕的解决方案。

编辑:我发现一个问题恰好描述了“just zip/unzip everything”解决方案hereThe closing comment 说只使用来自rules_pkg 的规则来压缩/解压缩东西。不幸的是,它也需要 Python。

该线程中的一些 cmet 建议您可以使用 declare_directory(),但我认为这真的行不通。

【问题讨论】:

  • 为什么 declare_directory 不起作用?

标签: bazel


【解决方案1】:

有树神器。可以在here 找到如何使用树工件的示例。 树工件对于缓存来说是有问题的,因为 Bazel 不知道 Bazel 的内容,如果由于某种原因树工件的内容在使用相同 Bazel 缓存的两台机器之间不同,你就有麻烦了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多