如何使用 bazel 查询确定目标的绝对路径?
How to determine absolute path of target using bazel query?
问题
有什么方法可以使用 bazel query
或 aspects
来识别 bazel 在包裹路径上的哪个位置拾取包裹?类似于 which
命令。
文档建议使用 --show_package_location
。然而,这已被弃用且不再受支持,请参阅 #5592。此外,我尝试使用它并没有发现太多有用的信息。我已经尝试过 bazel query //some/target/... --output label_kind --show_package_location
以及 bazel build
的其他排列,它不会添加与控制台输出不同的输出。
动机
我的包路径上有两个不同的目录,用于获取、查询和构建。
--package_path=%workspace%:%workspace%/__fuse__
此配置支持用户对我们的大型存储库执行稀疏签出的工作流程,同时仍然能够构建尚未在本地签出的代码。构建目标时,Bazel 会检查本地签出的包版本,如果不存在,它会搜索只读保险丝安装。
有时用户并不清楚包是从哪里获取的,即它是本地签出的版本还是从 fuse 提供的版本。当他们删除或移动 Bazel 包时,这就会出现问题,而 Bazel 会在保险丝座上选择版本。
如果我能给他们指出一个命令,将每个包裹映射到它被提取的地方,那就太好了。例如,如果我 运行 ...
上的命令
//some/package/foo --> package_path/some/package/foo
//some/package/bar --> other_package_path/some/package/bar
我在 bazel 查询文档中完全错过了这一点。
使用 bazel 查询,我只需要添加 --output location
,所以只要我进行如下查询:
bazel query //some/package/... --output location
然后bazel查询会输出
/absolute/path/some/package/BUILD:lineno:colno target_kind label
对于 //some/package/...
中的每个目标
问题
有什么方法可以使用 bazel query
或 aspects
来识别 bazel 在包裹路径上的哪个位置拾取包裹?类似于 which
命令。
文档建议使用 --show_package_location
。然而,这已被弃用且不再受支持,请参阅 #5592。此外,我尝试使用它并没有发现太多有用的信息。我已经尝试过 bazel query //some/target/... --output label_kind --show_package_location
以及 bazel build
的其他排列,它不会添加与控制台输出不同的输出。
动机
我的包路径上有两个不同的目录,用于获取、查询和构建。
--package_path=%workspace%:%workspace%/__fuse__
此配置支持用户对我们的大型存储库执行稀疏签出的工作流程,同时仍然能够构建尚未在本地签出的代码。构建目标时,Bazel 会检查本地签出的包版本,如果不存在,它会搜索只读保险丝安装。
有时用户并不清楚包是从哪里获取的,即它是本地签出的版本还是从 fuse 提供的版本。当他们删除或移动 Bazel 包时,这就会出现问题,而 Bazel 会在保险丝座上选择版本。
如果我能给他们指出一个命令,将每个包裹映射到它被提取的地方,那就太好了。例如,如果我 运行 ...
上的命令//some/package/foo --> package_path/some/package/foo
//some/package/bar --> other_package_path/some/package/bar
我在 bazel 查询文档中完全错过了这一点。
使用 bazel 查询,我只需要添加 --output location
,所以只要我进行如下查询:
bazel query //some/package/... --output location
然后bazel查询会输出
/absolute/path/some/package/BUILD:lineno:colno target_kind label
对于 //some/package/...