Bazel: принудительно генерировать манифест runfile - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть правило Deploy, которое запускает сценарий и хочет получить доступ к файлам запуска другой цели из другого проекта @ Proj //: SomeExecutable .

Я определил правило Развернуть вот так

Deploy = rule(
  implementation = Deploy_impl,
  attrs = { 
    "targets": attr.label_list(mandatory = True),
    ...
  },
  executable = True
)

и я звоню через

Deploy(targets = [ "@Proj//:SomeExecutable" ], ....)

Внутри Deploy_impl Я могу получить доступ к сгенерированным файлам @ Proj // : SomeExecutable через ctx.targets.files. Это позволяет мне получить доступ к напрямую сгенерированным файлам @ Proj //: SomeExecutable (например, SomeExecutable.exe), но не к транзитивно сгенерированным файлам этой цели, что более важно, это не генерирование Папка SomeExecutable.exe.runfiles с файлом MANIEST. Я получаю этот файл, только если явно позвоню bazel build @Proj//:SomeExecutable. Как я могу «научить» Базеля, что мне понадобятся файлы запуска. Обратите внимание, что я не хочу на самом деле вызывать исполняемый файл @ Proj //: SomeExecutable Я просто хочу проанализировать его runfile для извлечения некоторой информации.

...