如何在Bazel中使用文件的绝对路径

问题描述

上下文:我正在尝试为https://github.com/tensorflow/tensorflow/issues/37861提供一个修复程序,其中手动列出了外部依赖项的头文件,但该列表是特定于版本的,因此无法保持最新​​。

发生了什么事

  • tf_http_archive(name = "com_google_protobuf",system_build_file = clean_dep("//third_party/systemlibs:protobuf.BUILD") ...)调用
  • tf_http_archiverepository_rule,实际上只有ctx.template("BUILD.bazel",ctx.attr.system_build_file,{...},False)
  • protobuf.BUILD中有一个列表HEADERS = ["google/protobuf/any.pb.h",...],该列表传递给hdrs调用cc_library自变量
  • 一个genrule将这些标头从$(INCLUDEDIR)符号链接$(@D)(我对Bazel并不是很熟悉,但是IIUC是后者的内部内部构建目录,稍后使用)

由于我通常不熟悉Bazel,因此我只假设标头列表是必需的,并且存在$(INCLUDEDIR)/google/protobuf文件夹,并且该文件夹在系统上的其他位置,例如。 /usr/local/include

是否可以通过全局文件或类似方式获取格式为*.h的所有*.inc$(INCLUDEDIR)文件? Bazel glob函数不适用于绝对路径,因此无法使用。

我发现https://github.com/bazelbuild/bazel/issues/8846建议将new_local_repositorybuild_file设置为path的{​​{1}}使用$(INCLUDEDIR),但我看不到如何将其应用于tf_http_archive(具有某些条件来下载依赖项或仅使用system_build_file)。这似乎也可以避免符号链接(无论如何我还是非常怀疑,因为该文件夹是通过-iquote添加的,但是包含样式是#include <...>,请参见https://github.com/tensorflow/tensorflow/issues/37861中的评论

为问题或想法做出贡献的人的奖励积分,为什么在native.cc_library调用中似乎忽略了action_env环境变量。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...