Могу ли я получить ошибку, если моя цель Bazel генерирует файлы, которые не указаны в его выходах? - PullRequest
0 голосов
/ 10 июня 2018

Внутри файла .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 голосов
/ 12 июня 2018

Мне неизвестен обобщенный способ вывода ошибки Bazel, если были сгенерированы дополнительные, неожиданные файлы.

Одна вещь, которую я мог бы порекомендовать, - это обернуть ваш инструмент в другой инструмент, который проверяет выходные файлы вцелевой каталог и возвращает успех, только если не были сгенерированы непредвиденные файлы.

Что касается обобщенного решения, которое намеренно включает все файлы в выходной каталог, рассмотрите возможность использования actions.declare_directory и создание правила жаворонка вместо использования native.genrule.

...