微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在实现bazel方面时,是否有一种方法可以获取工作空间根目录的绝对文件系统路径?

如何解决在实现bazel方面时,是否有一种方法可以获取工作空间根目录的绝对文件系统路径?

我正在尝试在淡褐色方面实现clang compilation database生成。看来此clang文件的“目录”字段必须指定为绝对路径。现在,当我尝试使用bazel方面生成文件时,所有相关的bazel API都会在工作区中返回路径相对路径。

“工作空间根”是~/.cache/bazel/_bazel_<user>/<hash>/execroot/__main__

我想到了两种方法可以使这项工作有效:

  1. 使用ctx.actions.run_shell而不是ctx.actions.write生成文件,shell可以使用PWD评估沙箱$(realpath ../../../../../execroot/__main__)的工作区根路径。

我已经验证了此方法的有效性,但这绝对是不希望的方法,因为bazel无法保证沙箱工作路径与工作空间根目录之间的关系,因此很容易突破bazel版本。

  1. 使用脚本来生成文件

由于所有编译命令信息仍然必须来自bazel方面,因此这会将文件生成分为两部分,从而使其难以维护。

我考虑过的另一种方法,但看不到使它起作用的明显方法,就是以某种方式将__workspace_dir__文件中的WORKSPACE.bazel变量传递给方面上下文,但是我仍然找不到。 / p>

那么,有什么优雅的方法可以从方面实现上下文中获取此信息?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。