Reglas de acciones adicionales

Informar un problema Ver fuente {/2/}}Noche {/2/}

Reglas

action_listener

Ver el código fuente de la regla
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. En su lugar, usa aspects.

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

Los argumentos de esta regla asignan los mnemónicos de acciones a las reglas extra_action.

Si se especifica 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; obligatorio

Un nombre único para este destino.

extra_actions

Lista de etiquetas; obligatorio

Una lista de destinos de extra_action que este action_listener debe agregar al gráfico de compilación. P.ej., [ "//my/tools:analyzer" ].
mnemonics

Lista de cadenas; obligatorio

Es una lista de mnemónicos de acciones que debe tener en cuenta 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

Ver el código fuente de la regla
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. En su lugar, usa aspects.

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

Consulta action_listener para obtener detalles sobre cómo habilitar las extra_action.

Los extra_action se ejecutan como una línea de comandos. La herramienta de línea de comandos obtiene 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 está replicando. 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; obligatorio

Un nombre único para este destino.

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

String; obligatoria

El comando que se ejecutará.

Es similar al atributo cmd de genrule, con las siguientes 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 string para reemplazar todos los casos de los resultados creados a partir del atributo 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, esta es la misma sustitución que $(location), pero con un alcance diferente.

out_templates

Lista de cadenas; el valor predeterminado es []

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

Booleano; el valor predeterminado es False

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

Cuando es verdadero (valor predeterminado, falso), extra_action puede suponer que las salidas de la acción originales están disponibles como parte de sus entradas.

tools

Lista de etiquetas; el valor predeterminado es []

Una lista de dependencias de tool para esta regla.

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

El sistema de compilación garantiza que estos requisitos previos se compilen antes de ejecutar el comando extra_action; se compilan con la configuración exec, ya que deben ejecutarse como una herramienta durante la compilación. La ruta de acceso de un //x:y de destino tools individual se puede obtener con $(location //x:y).

Todas las herramientas y sus dependencias de datos se consolidan en un único árbol dentro del cual el comando puede usar rutas relativas. El directorio de trabajo será la raíz de ese árbol unificado.