Где взять список известных репозиториев, таких как @bazel_tools, @rules_jvm_external et c? - PullRequest
1 голос
/ 19 марта 2020

Иногда я вижу загрузку расширений из целых rnet или встроенных. Канонический пример:

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

Однако я не могу различить guish локальное репо и известное репо, посмотрев на выражение load.

Как проверить источник ( местоположение) любого репозитория, который я вижу в моих файлах WORKSPACE / BUILD?

Ответы [ 3 ]

1 голос
/ 27 марта 2020

bazel query --output=build //external:repo_name отлично работает.

0 голосов
/ 26 марта 2020

Я новичок в Базеле, но насколько я понимаю:

  • Скопируйте имя репо. Например, io_bazel_rules_docker
  • Поиск по базе кодов
  • Посмотрите, как он загружается

Например, если вы видите

http_archive(
    name = "io_bazel_rules_docker",
    ...
)
http_file(
    name = "io_bazel_rules_docker",
    ...
)

И Вы можете сделать вывод, откуда он.

0 голосов
/ 25 марта 2020

Если в качестве источника достаточно метки Bazel, вы можете попробовать извлечь корни репозитория с помощью файлов BUILD с bazel query 'buildfiles(//...)'.

В противном случае вы можете запустить bazel clean --expunge и запустить сборку с --experimental_execution_log_file=<FILENAME>. Это создает протокол действий Bazel на основе протобуфа. Там все inte rnet репозитории загружаются заново из-за clean --expunge.

Check https://github.com/bazelbuild/bazel/tree/master/src/tools/execlog для парсера.

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

...