Dependencies 有没有办法为特定规则生成deps列表?
我有一个程序,可以查看我的语言的源文件,并为其构建规则的Dependencies 有没有办法为特定规则生成deps列表?,dependencies,bazel,bazel-extra-action,Dependencies,Bazel,Bazel Extra Action,我有一个程序,可以查看我的语言的源文件,并为其构建规则的deps=[]值派生正确的值 我正在寻找一种方法来替换我现有的所有规则(如下所示): 改为: build_lib_new(name = "foo") build_lib_new(name = "bar") build_lib_new(name = "baz") 通过调用我的程序在规则中内部解析相同的指定DEP 理想情况下,build\u lib\u new只是build\u lib的包装规则: def derive_deps(name):
deps=[]
值派生正确的值
我正在寻找一种方法来替换我现有的所有规则(如下所示):
改为:
build_lib_new(name = "foo")
build_lib_new(name = "bar")
build_lib_new(name = "baz")
通过调用我的程序在规则中内部解析相同的指定DEP
理想情况下,build\u lib\u new
只是build\u 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之外运行外部工具来重写构建文件
简言之,是的。这就是Gazelle和Jadep等工具存在的原因
如果您的工具在执行阶段作为操作运行,那么在加载和分析阶段DEP将不存在。您需要在加载/分析之前运行该工具,可能是作为
我看到它们是运行shell命令的动作,但我相信这些动作是在生成依赖关系图之后发生的
对。分析阶段创建配置的目标图,并将其具体化为执行阶段的操作(shell命令、工件等)图。Ok,谢谢确认。Gazelle、Jadep和存储库规则听起来很有前途。它包含用于解析/编辑/打印生成文件的函数。我们将随着时间的推移扩展这些特性,以便更容易地构建此类工具。
def derive_deps(name):
deps = []
# call my tool somehow?
return deps
def build_lib_new(name):
deps = derive_deps(name)
build_lib(name,deps)