2022 年 BazelCon 将于 11 月 16 日至 17 日在纽约和线上举办。
立即报名!

其他操作规则

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

规则

action_listener

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_listenerextra_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

Name; required

此定位条件的唯一名称。

extra_actions

List of labels; required

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

List of strings; required

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

助记符不是公共接口。并不能保证助记符及其操作不会改变。

extra_action

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 规则指定为常规构建目标时,不会生成任何有意义的输出。取而代之的是,工具开发者可以向构建图插入其他操作来覆盖现有操作。

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

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

与所有其他操作一样,其他操作也已经过沙盒化,因此应进行处理。

参数

特性
name

Name; required

此定位条件的唯一名称。

您可以在 action_listener 规则的 extra_actions 参数中由 label 引用此规则。
cmd

String; required

要运行的命令。

类似于 genrule cmd attribute,但具有以下区别:

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

  2. 将额外的字符串应用于该字符串,以替换所有出现的通过 out_templates 属性创建的输出。所有 $(output out_template) 都会替换为由 label 表示的文件的路径。

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

    实际上,这与 $(location) 相同,但范围不同。

out_templates

List of strings; optional

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

模板可以使用以下变量:

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

requires_action_output

Boolean; optional; default is False

表示此 extra_action 要求原始操作的输出作为此 extra_action 的输入呈现。

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

tools

List of labels; optional

此规则的 tool 依赖项列表。

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

构建系统可确保在运行 extra_action 命令之前构建这些前提条件;这些前提条件是使用 host 配置构建的,因为它们必须在构建过程中作为工具运行。可以使用 $(location //x:y) 获取单个 tools 目标 //x:y 的路径。

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