bazel - 如何使用 bazel 查询确定目标的绝对路径?
问题描述
问题
有什么方法可以使用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/...
推荐阅读
- mysql - 是否可以在没有 CTE 的情况下使用 MySQL 计算列中行之间的值差异?
- css - 有谁知道我怎样才能摆脱表格顶部的这个额外像素?
- r - 如何根据 Y 值中的 facet_wrap 对构面进行排序?
- ruby-on-rails - Rails 基于约束处理异常
- swagger - 为什么 Swagger 会检测到必需的 * 路径参数 {namespace}?
- firebase - Firebase Emulators HUB UI 未在浏览器中加载
- sql - 分组交易并将其放在分组类别的单个单元格中
- mqtt - HiveMQ MQTT Client Java:有没有办法检查主题是否与订阅匹配?
- css - 如何使用 CSS 在侧边栏中添加自定义弯曲形状?
- reactjs - 如何从组件获取参数到 redux action creator