繁体   English   中英

有没有办法为特定规则生成deps列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM