Правила
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
в систему сборки, предоставляя сопоставление между 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(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
s.
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 для этого правила.См. определение зависимостей для получения дополнительной информации. Система сборки гарантирует, что эти предварительные условия будут собраны до запуска команды Все инструменты и их зависимости данных объединены в единое дерево, внутри которого команда может использовать относительные пути. Рабочий каталог будет корнем этого единого дерева. |