如何使用Bazel查询确定目标的绝对路径?

时间:2018-07-13 15:26:29

标签: bazel

问题

有什么方法可以使用bazel queryaspects来标识bazel在包裹路径上的什么地方拿走包裹吗?类似于which命令。

文档建议使用--show_package_location。但是,此方法已弃用,不再受支持,请参见#5592。此外,我使用它的尝试还没有发现很多有用的信息。我已经尝试过bazel query //some/target/... --output label_kind --show_package_location以及其他bazel build的排列,它并没有添加与控制台输出不同的输出。

动机

我的软件包路径上有两个不同的目录,用于获取,查询和构建。

--package_path=%workspace%:%workspace%/__fuse__

此配置支持工作流,在该工作流中,用户可以对我们的大型存储库执行稀疏检出,同时仍可以构建尚未在本地检出的代码。构建目标时,Bazel会检查本地签出的软件包版本,如果不存在,则会搜索只读的保险丝座。

有时,用户不清楚从哪里领取包裹,即是本地签出的版本还是由保险丝提供的版本。当他们删除或移动Bazel包,并且Bazel拿起保险丝座上的版本时,这将成为问题。

如果我能将它们指向将每个包映射到要拾取的包的命令,那将是很好的。例如,如果我在...上运行命令

//some/package/foo --> package_path/some/package/foo
//some/package/bar --> other_package_path/some/package/bar 

1 个答案:

答案 0 :(得分:3)

我在bazel查询文档中完全错过了这一点。

使用bazel查询,我只需要添加--output location,因此只要我进行如下查询即可:

bazel query //some/package/... --output location

然后将显示bazel查询

/absolute/path/some/package/BUILD:lineno:colno target_kind label

针对//some/package/...

中的每个目标