Regras de ações extras

Regras

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)

AVISO:o uso de outras ações foi suspenso. Use aspects em vez disso.

Uma regra action_listener não produz saída. Em vez disso, ele permite que os desenvolvedores de ferramentas insiram extra_actions no sistema de compilação, fornecendo um mapeamento de ação para extra_action .

Os argumentos desta regra mapeiam mneumônicos de ação para regras extra_action.

Ao especificar a opção --experimental_action_listener=<label>, o build usará o action_listener especificado para inserir extra_actions no gráfico.

Exemplo

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

Um nome exclusivo para o destino.

extra_actions

List of labels; required

Uma lista de destinos de extra_action que esse action_listener precisa adicionar ao gráfico de compilação Por exemplo, [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Uma lista de mneumônicos de ação que este action_listener precisa detectar, por exemplo, [ "Javac" ].

A memônia não é uma interface pública. Não há garantia de que as mneumônicas e as ações delas não mudem.

ação_extra

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)

AVISO: o uso de outras ações foi suspenso. Use aspects em vez disso.

Uma regra extra_action não produz uma saída significativa quando especificada como um destino de build normal. Em vez disso, ele permite que os desenvolvedores de ferramentas insiram outras ações no gráfico de compilação que acompanham as ações existentes.

Consulte action_listener para ver detalhes sobre como ativar extra_actions.

Os extra_actions são executados como uma linha de comando. A ferramenta de linha de comando tem acesso a um arquivo que contém um buffer de protocolo como $(EXTRA_ACTION_FILE) com informações detalhadas sobre a ação original que está acompanhando. Ele também tem acesso a todos os arquivos de entrada aos quais a ação original tem acesso. Consulte extra_actions_base.proto para ver mais detalhes sobre os dados armazenados no buffer de protocolo. Cada arquivo proto contém uma mensagem ExtraActionInfo.

Assim como todas as outras ações, as ações extras são colocadas no sandbox e precisam ser projetadas para lidar com isso.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para o destino.

Você pode fazer referência a essa regra por label no argumento extra_actions das regras action_listener.
cmd

String; required

O comando a ser executado.

Como o atributo genrule cmd, com as seguintes diferenças:

  1. Sem expansão de rótulo heurística. Somente os rótulos que usam $(location ...) são expandidos.

  2. Uma cartão extra é aplicada à string para substituir todas as ocorrências das saídas criadas a partir do atributo out_templates. Todas as ocorrências de $(output out_template) são substituídas pelo caminho para o arquivo indicado por label.

    Por exemplo, o out_template $(ACTION_ID).analysis pode ser correspondido com $(output $(ACTION_ID).analysis).

    Na verdade, essa é a mesma substituição de $(location), mas com um escopo diferente.

out_templates

List of strings; optional

Uma lista de modelos para arquivos gerados pelo comando extra_action.

O modelo pode usar as seguintes variáveis:

  • $(ACTION_ID), um código que identifica exclusivamente esse extra_action. Usado para gerar um arquivo de saída único.

requires_action_output

Boolean; optional; default is False

Indica que o extra_action exige que a saída da ação original esteja presente como entrada para esse extra_action.

Quando verdadeiro (padrão falso), a extra_action pode presumir que as saídas da ação original estejam disponíveis como parte das entradas.

tools

List of labels; optional

Uma lista de dependências tool para esta regra.

Consulte a definição de dependencies para mais informações.

O sistema de compilação garante que esses pré-requisitos sejam criados antes da execução do comando extra_action. Eles são criados usando a hostconfiguração, já que precisam ser executados como uma ferramenta durante o próprio build. O caminho de um //x:y de destino individual tools pode ser adquirido usando $(location //x:y).

Todas as ferramentas e as respectivas dependências de dados são consolidadas em uma única árvore, em que o comando pode usar caminhos relativos. O diretório de trabalho será a raiz dessa árvore unificada.