Правила
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_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
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 для получения подробностей о данных, хранящихся внутри протокол буфера. Каждый файл протокола содержит сообщение ExtraActionInfo.
Как и все остальные действия, дополнительные действия защищены от несанкционированного доступа и должны быть спроектированы для работы с этим.
Аргументы
| Атрибуты | |
|---|---|
name | Имя; обязательно Уникальное имя для этого целевого объекта. Вы можете ссылаться на это правило с помощьюlabel в аргументе extra_actions правил action_listener. |
cmd | Строка; обязательно Команда для выполнения.Как атрибут genrule cmd с следующими отличиями:
|
out_templates | Список строк; по умолчанию extra_action . Шаблон может использовать следующие переменные:
|
requires_action_output | Булево; по умолчанию extra_action требуется вывод исходного действия в качестве входных данных для этого extra_action. При значении true (по умолчанию false), extra_action может предполагать, что выходные данные исходного действия доступны в качестве входных данных. |
tools | Список меток; по умолчанию tool зависимостей для этого правила. См. определение зависимостей для получения дополнительной информации. Система сборки гарантирует, что эти предварительные условия будут построены перед запуском команды Все инструменты и их зависимости данных объединяются в одно дерево, в котором команда может использовать относительные пути. Рабочая директория будет корнем этого объединённого дерева. |