如果我的bazel目标生成未在其中指定的文件,我可以出错吗?

时间:2018-06-10 06:42:09

标签: bazel build-rules

.bzl文件中,
我指定一个程序来生成一些代码。 它看起来像这样:

def generate_code():
    native.genrule(
        name = "foo",
        outs = ["file.hpp"],
        tools = ["//path/to:tool"],
        cmd = $(location path/to:tool) $(@D)
    )

这很好,
但问题是该工具可能生成的文件多于outs中指定的文件 我正试图找到一种方法,如果生成的文件多于指定的数量,则让bazel停止构建,或者让输出自动生成所有内容。

1 个答案:

答案 0 :(得分:0)

如果生成其他意外文件,我不知道有一个通用的方法让bazel出错。

我可以推荐的一件事是将工具包装在另一个工具中,该工具验证目标目录中的输出文件,只有在没有生成意外文件的情况下才返回成功。

对于故意在输出目录中包含所有文件的通用解决方案,请考虑使用actions.declare_directory并创建云雀规则,而不是使用native.genrule