我正在编写一个简单的 Bazel 规则,该规则使用ctx.actions.run
. 不幸的是,我很难理解运行inputs
操作的参数。
该文档说inputs
是“操作的输入文件的列表或深度集”。如果我的操作只运行一个可执行文件并传递一些文件路径作为其参数怎么办?假设我将参数指定为操作arguments
的参数run
。我还需要将这些文件路径添加到参数中吗inputs
?为什么 ?
该inputs
参数告诉 Bazel,当 Bazel 运行该操作时,哪些文件可供该操作的可执行文件使用。该参数很重要,原因如下:
它告诉 Bazel 需要运行哪些其他操作来生成给定操作的输入文件。如果你有Action1 <- Artifact <- Action2
,其中Action2
产生Artifact
,并Action1
作为Artifact
输入,Bazel 知道Action2
在 之前运行Action1
。
它告诉 Bazel 在操作沙箱中哪些文件可用。否则该操作将无法找到任何输入文件。
如果正在使用远程执行,它会告诉 Bazel 将哪些文件上传到远程执行工作线程。否则,该文件将无法在远程计算机上供操作读取。
arguments
的参数告诉ctx.actions.run
Bazel 该操作的可执行文件的命令行是什么。如果您的可执行文件采用诸如--input
和 之类的标志--output
,您将使用arguments
构建像 之类的命令行--input artifact1 --input artifact2 --output artifact3
。
请参阅此示例:https ://github.com/bazelbuild/examples/blob/master/rules/actions_run/execute.bzl
归档时间: |
|
查看次数: |
1833 次 |
最近记录: |