额外操作规则

报告问题 查看源代码 每晚 · 7.2 条 · 7.1 · 7.0。 · 6.5 · 6.4

规则

action_listener

<ph type="x-smartling-placeholder"></ph> 查看规则来源
action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

警告:额外操作已废弃。使用 方面

action_listener 规则本身不会生成任何输出。 而是允许工具开发者 extra_action 进入构建系统, 方法是提供从操作到extra_action的映射

此规则的参数将操作助记符映射到 extra_action 规则。

通过指定 --experimental_action_listener=<label>, 构建将使用指定的 action_listener 插入 extra_action 添加到构建图中。

示例

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

参数

属性
name

姓名;必需

此目标的唯一名称。

extra_actions

标签列表;必需

extra_action 目标的列表 此 action_listener 应添加到构建图。 例如:[ "//my/tools:analyzer" ]
mnemonics

字符串列表;必需

action_listener 应监听的操作助记符列表 例如[ "Javac" ]

助记符不是公共接口。 我们无法保证助记符及其操作不会改变。

extra_action

<ph type="x-smartling-placeholder"></ph> 查看规则来源
extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

警告:额外操作已废弃。使用 方面

extra_action 规则不会生成任何有意义的输出 (当被指定为常规构建目标时)。而是让工具开发者 将其他操作插入构建图以覆盖现有操作。

如需了解详情,请参阅 action_listener 了解如何启用 extra_action

extra_action 可作为命令行运行。命令行工具 访问包含协议缓冲区的文件,如 $(EXTRA_ACTION_FILE) 其中包含覆盖的原始操作的详细信息。 它还可以访问原始操作有权访问的所有输入文件。 请参阅 extra_actions_base.proto 了解协议缓冲区内存储数据的详情。每个 proto 文件 包含 ExtraActionInfo 消息。

与所有其他操作一样,额外操作也在沙盒中进行处理,而这些操作也应通过沙盒加以处理。

参数

属性
name

姓名;必需

此目标的唯一名称。

您可以在 extra_actions 参数中通过 label 引用此规则 共 action_listener 条规则。
cmd

String;必需

要运行的命令。

类似于 genrule cmd 属性,其中包含以下内容 差异:

  1. 无启发式标签展开。仅展开使用 $(location ...) 的标签。

  2. 再对字符串应用一次传递,以替换 从 out_templates 创建的输出的出现次数 属性。“$(output out_template)”的所有出现次数 替换为以 label 表示的文件的路径。

    例如:out_template $(ACTION_ID).analysis 可与 $(output $(ACTION_ID).analysis) 匹配。

    实际上,这与 $(location) 的替换内容相同。 但范围不同

out_templates

字符串列表;默认值为 []

extra_action 命令生成的文件的模板列表。

该模板可以使用以下变量:

  • $(ACTION_ID),唯一标识此 extra_action 的 ID。 用于生成唯一的输出文件。

requires_action_output

Boolean;默认值为 False

表示此 extra_action 需要 原始操作作为输入呈现到此 extra_action 中。

如果为 true(默认值为 false),extra_action 可以假定 原始操作输出可用作其输入的一部分。

tools

标签列表;默认值为 []

此规则的 tool 依赖项列表。

如需了解详情,请参阅依赖项的定义 信息。

构建系统确保在运行 extra_action 命令;它们是使用 exec配置、 因为它们必须在构建期间作为工具运行。个人的路径 tools 目标 //x:y 可通过以下方式获取: $(location //x:y)

所有工具及其数据依赖关系都整合到单个树中 该命令可以使用相对路径工作目录将 作为该统一树的根。