从哪里获取已知存储库的列表,如@bazel_tools、@rules_jvm_external 等?

Where to get list of known repositories like @bazel_tools, @rules_jvm_external etc?

有时我会看到从 Internet 加载的扩展程序或内置的扩展程序。 典型示例:

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

但是,我无法通过查看 load 表达式来区分本地 repo 和已知 repo。

如何检查我在 WORKSPACE/BUILD 文件中看到的任何回购的来源(位置)?

如果 Bazel 标签足以作为来源,您可以尝试使用 bazel query 'buildfiles(//...)'.

的 BUILD 文件获取 repo roots

否则,您可以 运行 bazel clean --expunge 和 运行 使用 --experimental_execution_log_file=<FILENAME> 构建。这将创建一个基于 protobuf 的 Bazel 操作日志。在那里,由于 clean --expunge.

所有互联网回购都被重新下载

检查 https://github.com/bazelbuild/bazel/tree/master/src/tools/execlog 解析器。

非常不便的是,此信息无法通过其他方式获得 - afaik。我真的希望有人路过并纠正我,但这样你至少知道你可以关联的可用资源。

我是 Bazel 的新手,但据我了解:

  • 复制存储库的名称。例如。 io_bazel_rules_docker
  • 通过代码库搜索
  • 看看它是如何加载的

例如如果你看到

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

你可以断定它的来源。

bazel query --output=build //external:repo_name 工作正常。