如何解决了解Bazel“运行”操作的“输入”参数
我正在编写使用ctx.actions.run
的简单Bazel规则。不幸的是,我很难理解run动作的inputs
参数。
医生说inputs
是“动作输入文件的列表或摘要”。如果我的操作仅运行可执行文件并传递一些文件路径作为其参数怎么办?假设我将参数指定为arguments
操作的run
参数。我是否仍需要将这些文件路径添加到inputs
参数中?为什么?
解决方法
inputs
参数告诉Bazel当Bazel运行该动作时,哪些文件可用于该动作的可执行文件。此参数很重要,原因如下:
-
它告诉Bazel需要执行哪些其他操作才能生成给定操作的输入文件。如果您有
Action1 <- Artifact <- Action2
,其中Action2
产生Artifact
,并且Action1
以Artifact
作为输入,那么Bazel知道在{{ 1}}。 -
它告诉Bazel在操作沙箱中可以使用哪些文件。否则,该操作将无法找到其任何输入文件。
-
如果正在使用远程执行,它会告诉Bazel将哪些文件上传到远程执行工作器。否则,该文件在远程计算机上将不可用,无法读取操作。
Action2
的{{1}}参数告诉Bazel该操作可执行文件的命令行是什么。如果可执行文件带有Action1
和arguments
之类的标志,则可以使用ctx.actions.run
来构造诸如--input
之类的命令行。
请参见以下示例:https://github.com/bazelbuild/examples/blob/master/rules/actions_run/execute.bzl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。