Spec-Zone.ru › Bazel 8.0

Правила дополнительных действий

Правила

  • action_listener
  • extra_action

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 с следующими отличиями:

  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. Используется для генерации уникального выходного файла.
requires_action_output

Булево; по умолчанию False

Указывает, что этому extra_action требуется вывод исходного действия в качестве входных данных для этого extra_action.

При значении true (по умолчанию false), extra_action может предполагать, что выходные данные исходного действия доступны в качестве входных данных.

tools

Список меток; по умолчанию []

Список tool зависимостей для этого правила.

См. определение зависимостей для получения дополнительной информации.

Система сборки гарантирует, что эти предварительные условия будут построены перед запуском команды extra_action; они строятся с использованием execконфигурации, поскольку они должны выполняться как инструмент во время самой сборки. Путь к отдельной целевой задаче tools //x:y можно получить с помощью $(location //x:y).

Все инструменты и их зависимости данных объединяются в одно дерево, в котором команда может использовать относительные пути. Рабочая директория будет корнем этого объединённого дерева.

За исключением случаев, указанных отдельно, содержание этой страницы лицензируется по лицензии Creative Commons Attribution 4.0, а примеры кода лицензированы по лицензии Apache 2.0. Подробности см. в политике Google Developers. Java — зарегистрированный товарный знак Oracle и/или её аффилированных компаний.

Последнее обновление 2024-12-10 UTC.

Licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License.
https://bazel.build/versions/8.0.0/reference/be/extra-actions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API