我有一个程序可以查看我的语言的源文件,并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
文件?