Могу ли я получить ошибку, если моя цель Bazel генерирует файлы, которые не указаны в его выходах?
Внутри .bzl
файл,
Я указываю программу для генерации некоторого кода. Это выглядит примерно так:
def generate_code():
native.genrule(
name = "foo",
outs = ["file.hpp"],
tools = ["//path/to:tool"],
cmd = $(location path/to:tool) $(@D)
)
Это отлично работает,
Однако проблема в том, что инструмент может генерировать больше файлов, чем указано в outs
,
Я пытаюсь найти способ, чтобы bazel остановил сборку, если было сгенерировано больше файлов, чем указано, или чтобы все выходы автоматически генерировались.
1 ответ
Я не знаю обобщенного способа вывода ошибки Bazel, если были сгенерированы дополнительные, неожиданные файлы.
Одна вещь, которую я мог бы порекомендовать, - это обернуть ваш инструмент в другой инструмент, который проверяет выходные файлы в целевом каталоге и возвращает успех, только если не было сгенерировано неожиданных файлов.
Что касается обобщенного решения, которое намеренно включает в себя все файлы в выходном каталоге, рассмотрите возможность использования actions.declare_directory и создания правила skylark вместо использования native.genrule
,