Regras de ações extras

Informar um problema Ver código-fonte

Regras

ação_listener

Ver origem da regra
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: as ações extras foram descontinuadas. Use aspects.

Uma regra action_listener não produz nenhuma 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 mnemônicas de ação para extra_action.

Ao especificar a opção --experimental_action_listener=<label>, o build usará a action_listener especificada 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 esse destino.

extra_actions

List of labels; required

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

List of strings; required

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

A mnemônica não é uma interface pública. Não há garantia de que os elementos mnemônicos e as ações deles não mudarão.

ação_adicional

Ver origem da regra
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: as ações extras foram descontinuadas. Use aspects.

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 mais ações no gráfico de build 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á monitorando. Ele também tem acesso a todos os arquivos de entrada que a ação original pode acessar. Consulte extra_actions_base.proto para saber mais sobre os dados armazenados no buffer de protocolo. Cada arquivo proto contém uma mensagem ExtraActionInfo.

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

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

É possível consultar essa regra por label no argumento extra_actions das regras action_listener.
cmd

String; required

O comando a ser executado.

Semelhante a genrule cmd attribute com as seguintes diferenças:

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

  2. Um cartão extra é aplicado à 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, out_template $(ACTION_ID).analysis pode ser combinado com $(output $(ACTION_ID).analysis).

    Na verdade, é 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 ID 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 extra_action exige que a saída da ação original esteja presente como entrada para essa extra_action.

Quando verdadeiro (falso padrão), 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.

Para mais informações, consulte a definição de dependências.

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 configuração exec, já que precisam ser executados como uma ferramenta durante o build em si. O caminho de um tools destino //x:y individual pode ser obtido usando $(location //x:y).

Todas as ferramentas e as 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.