Reglas de acciones adicionales

Informar un problema Ver el código fuente

Reglas

objeto_escucha_acción

Ver 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. Usa aspectos en su lugar.

Una regla action_listener no produce ningún resultado. En su lugar, permite a los desarrolladores de herramientas insertar extra_action en el sistema de compilación proporcionando un mapeo de la acción a extra_action.

Los argumentos de esta regla asignan mnemónicas de acción a las reglas extra_action.

Cuando se especifica la opción --experimental_action_listener=<label>, la compilación usa el action_listener especificado para insertar extra_action en el grafo 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 esta orientación.

extra_actions

List of labels; required

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

List of strings; required

Una lista de mnemónicas 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 procesos mnemotécnicos ni sus acciones no cambien.

acción_adicional

Ver 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. 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 a los desarrolladores de herramientas insertar acciones adicionales en el grafo de compilación que cubre las acciones existentes.

Consulta action_listener para obtener detalles sobre cómo habilitar 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 va a seguir. 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 más información sobre los datos almacenados en el búfer de protocolo. Cada archivo proto contiene un mensaje ExtraActionInfo.

Al igual que todas las otras acciones, las acciones adicionales se colocan en una zona de pruebas y deben estar diseñadas para manejar esto.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

Puedes hacer referencia a esta regla mediante label en el argumento extra_actions de las reglas action_listener.
cmd

String; required

El comando que se ejecuta.

Al igual que el atributo genrule cmd con las siguientes diferencias:

  1. Sin expansión heurística de etiquetas. 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. Todas las ocurrencias de $(output out_template) se reemplazan por la ruta de acceso al archivo indicado por label.

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

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

out_templates

List of strings; optional

Una lista de plantillas para los archivos que genera el comando extra_action.

La plantilla puede usar las siguientes variables:

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

requires_action_output

Boolean; optional; default is False

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

Cuando es verdadero (valor predeterminado falso), la acción adicional puede suponer que los resultados 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.

El sistema de compilación garantiza que estos requisitos previos se compilen antes de ejecutar el comando extra_action; se compilan mediante la execconfiguración, 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 mediante $(location //x:y).

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