Regras de ações extras

Informar um problema Ver fonte Nightly · 8.3 · 8.2 · 8.1 ·

Regras

action_listener

Ver origem da regra
action_listener(name, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, package_metadata, restricted_to, tags, target_compatible_with, testonly, visibility)

AVISO:as ações extras foram descontinuadas. Use aspects em vez disso.

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

Os argumentos dessa regra mapeiam mnemônicos de ação para regras extra_action.

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

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

Nome: obrigatório

Um nome exclusivo para essa segmentação.

extra_actions

Lista de marcadores; obrigatório

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

Lista de strings; obrigatório

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

Os mnemônicos não são uma interface pública. Não há garantia de que os mnemônicos e as ações deles não vão mudar.

extra_action

Ver origem da regra
extra_action(name, data, aspect_hints, cmd, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, licenses, out_templates, package_metadata, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

AVISO:as ações extras foram descontinuadas. Use aspects em vez disso.

Uma regra extra_action não produz nenhuma saída significativa quando especificada como um destino de build regular. Em vez disso, ele permite que os desenvolvedores de ferramentas insiram ações adicionais no gráfico de build que substituem as ações atuais.

Consulte action_listener para detalhes sobre como ativar extra_actions.

Os extra_actions são executados como uma linha de comando. A ferramenta de linha de comando recebe 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á sendo substituída. Ele também tem acesso a todos os arquivos de entrada que a ação original tem. Consulte extra_actions_base.proto para 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 em sandbox e precisam ser projetadas para lidar com isso.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

Você pode se referir a essa regra por label no argumento extra_actions das regras action_listener.
cmd

String; obrigatório

O comando a ser executado.

Como o atributo cmd genrule, mas 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 passagem adicional é aplicada à string para substituir todas as ocorrências das saídas criadas com o atributo out_templates. Todas as ocorrências de $(output out_template) são substituídas pelo caminho do arquivo indicado por label.

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

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

out_templates

Lista de strings. O padrão é [].

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 este extra_action. Usado para gerar um arquivo de saída exclusivo.

requires_action_output

Booleano; o padrão é False

Indica que este extra_action requer a saída da ação original como entrada para este extra_action.

Quando for verdadeiro (o padrão é falso), a extra_action poderá presumir que as saídas da ação original estão disponíveis como parte das entradas.

tools

Lista de rótulos. O padrão é [].

Uma lista de dependências de tool para essa regra.

Consulte a definição de dependências para mais informações.

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

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