Файл дополнительных атрибутов данных Bazel

#bazel

#bazel

Вопрос:

Я хотел бы, чтобы для data атрибута был дополнительно предоставлен файл, и моя программа могла обрабатывать наличие или отсутствие файла.

Если файл не существует, bazel сообщает missing input file...

 cc_binary(
    name = "test",
    srcs = ["main.c"],
    data = [":conf.yml"]
)
 

Есть ли какой-либо способ сделать его необязательным?

Ответ №1:

Нет. Bazel требует, чтобы все входные данные были объявлены статически для обеспечения герметичности и детерминированности. Дальнейший путь — создать пустой conf.yml файл и заставить программу определить, является ли он пустым или нет.

Комментарии:

1. есть один способ обойти это: использовать glob(["conf.yml"]) . glob() запускается во время загрузки перед анализом, и поэтому он может безопасно ничего не возвращать, если файла там нет. Шаблон включения будет только совпадать conf.yml , поэтому он не должен ошибочно совпадать с другими файлами.

2. @ahumesky работает как шарм, спасибо! Пожалуйста, сделайте отдельный ответ, если вы хотите, чтобы я его одобрил.