[英]Is there any way to generate the deps list for particular rules?
我有一个程序可以查看我的语言的源文件,并为其构建规则的deps=[]
值派生正确的值。
我正在寻找一种方法来替换我现有的所有规则(看起来像这样):
build_lib(name = "foo", deps = [...])
build_lib(name = "bar", deps = [...])
build_lib(name = "baz", deps = [...])
相反是:
build_lib_new(name = "foo")
build_lib_new(name = "bar")
build_lib_new(name = "baz")
通过调用我的程序在规则内部解析相同的指定deps。
理想情况下, build_lib_new
也只是围绕一个包装规则build_lib
:
def derive_deps(name):
deps = []
# call my tool somehow?
return deps
def build_lib_new(name):
deps = derive_deps(name)
build_lib(name,deps)
现在我被卡住了。 不幸的是,我认为bazel希望在分析阶段预先了解所有依赖关系。 我看到他们是运行shell命令的动作,但我相信这些是在创建依赖图之后发生的。
我是否必须在bazel之外运行外部工具来重写BUILD
文件?
我是否必须在bazel之外运行外部工具来重写BUILD文件?
简而言之,是的。 这就是为什么像Gazelle和Jadep这样的工具存在的原因。
如果您的工具在执行阶段作为操作运行,那么在加载和分析阶段,deps将不存在。 您需要在加载/分析之前运行该工具,可能作为存储库规则 ?
我看到他们是运行shell命令的动作,但我相信这些是在创建依赖图之后发生的。
正确。 分析阶段创建配置的目标图,并将其强制执行到执行阶段的操作(shell命令,工件等)图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.