Reglas de acciones adicionales

Reglas

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)

ADVERTENCIA: Las acciones adicionales dejaron de estar disponibles. Usa aspectos en su lugar.

Una regla action_listener no produce ningún resultado en sí misma. En cambio, permite que los desarrolladores de herramientas extra_action en el sistema de compilación, si proporciona una asignación de la acción a extra_action

Los argumentos de esta regla asignan mnemónicos de acciones a Reglas extra_action.

Con la especificación de la opción --experimental_action_listener=<label>, la compilación usará el action_listener especificado para insertar extra_action en el gráfico de compilación.

Ejemplo

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)",
)

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

extra_actions

List of labels; required

Una lista de extra_action objetivos que debería agregar action_listener al gráfico de compilación. P.ej., [ "//my/tools:analyzer" ]
mnemonics

List of strings; required

Lista de mnemónicos de acción que debe escuchar este action_listener p.ej., [ "Javac" ]

Los mnemónicos no son una interfaz pública. No hay garantía de que los mnemónicos y sus acciones no cambien.

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)

ADVERTENCIA: Las acciones adicionales dejaron de estar disponibles. Usa aspectos en su lugar.

Una regla extra_action no produce ningún resultado significativo cuando se especifica como un objetivo de compilación normal. En cambio, permite que los desarrolladores para insertar acciones adicionales en el gráfico de compilación que modelen las acciones existentes.

Consulta action_listener para obtener más información. sobre cómo habilitar extra_action.

Los extra_action se ejecutan como una línea de comandos. La herramienta de línea de comandos acceso a un archivo que contiene un búfer de protocolo como $(EXTRA_ACTION_FILE) con información detallada sobre la acción original que observa. También tiene acceso a todos los archivos de entrada a los que tiene acceso la acción original. Consulta extra_actions_base.proto. para obtener detalles sobre los datos almacenados dentro del búfer de protocolo. Cada archivo proto contiene un mensaje ExtraActionInfo.

Al igual que todas las demás acciones, las acciones adicionales se colocan en una zona de pruebas y deben estar diseñadas para manejarlas.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

Puedes consultar esta regla de label en el argumento extra_actions de action_listener reglas.
cmd

String; required

El comando que se ejecutará.

Como el atributo cmd de genrule con lo siguiente diferencias:

  1. No hay expansión de etiquetas heurística. Solo se expanden las etiquetas que usan $(location ...).

  2. Se aplica un pase adicional a la cadena para reemplazar todo casos de los resultados creados a partir de out_templates . Todos los casos de $(output out_template) se reemplazan por la ruta de acceso al archivo indicada por label.

    P.ej., out_template $(ACTION_ID).analysis puede coincidir con $(output $(ACTION_ID).analysis).

    En efecto, es la misma sustitución que $(location). pero con un alcance diferente.

out_templates

List of strings; optional

Una lista de plantillas para archivos que genera el comando extra_action

La plantilla puede usar las siguientes variables:

  • $(ACTION_ID), un ID que identifica de forma exclusiva a este extra_action. Se usa para generar un archivo de salida único.

requires_action_output

Boolean; optional; default is False

Indica que este extra_action requiere la salida de la acción original que esté presente como entrada a este extra_action.

Si es verdadero (predeterminado en falso), extra_action puede suponer que el las salidas de la acción original están disponibles como parte de sus entradas.

tools

List of labels; optional

Una lista de dependencias de tool para esta regla.

Consulta la definición de dependencias para obtener más información. información.

El sistema de compilación garantiza que estos requisitos se compilen antes de ejecutar el Comando extra_action; se crean con el hostconfiguración, ya que deben ejecutarse como herramienta durante la compilación. La ruta de un individuo Puedes obtener tools //x:y objetivo usando $(location //x:y)

Todas las herramientas y sus dependencias de datos se consolidan en un solo árbol dentro de los cuales el comando puede usar rutas de acceso relativas. En el directorio de trabajo, será la raíz de ese árbol unificado.