Regras de ações extras

Informar um problema Ver fonte

Regras

action_listener

Exibir 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. Em vez disso, use aspectos.

Uma regra action_listener por si só não produz nenhuma saída. 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 desta regra mapeiam os recursos mnemônicos de ação para as 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 o destino.

extra_actions

Lista de rótulos, obrigatório

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

Lista de strings, obrigatório

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

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

extra_action

Exibir 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. Em vez disso, use aspectos.

Uma regra extra_action não produz nenhuma 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 build que sombreiam as ações existentes.

Consulte action_listener para ver detalhes sobre como ativar extra_actions.

As extra_actions são executadas como uma linha de comando. A ferramenta de linha de comando consegue 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 ele está ocultando. Ele também tem acesso a todos os arquivos de entrada que a ação original pode acessar. Consulte extra_actions_base.proto para ver detalhes sobre os dados armazenados dentro do 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 devem ser projetadas para lidar com isso.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

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

String, obrigatório

Comando a ser executado.

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

  1. Não há expansão de rótulo heurística. Somente os marcadores que usam $(location ...) são expandidos.

  2. Uma passagem 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 do arquivo indicado por label.

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

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

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 esse extra_action exige que a saída da ação original esteja presente como entrada para esse extra_action.

Quando verdadeiro (o padrão é falso), a extra_action pode 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 tool dependências para esta regra.

Consulte a definição de dependências para ver 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 configuração exec, já que precisam ser executados como uma ferramenta durante o build. O caminho de um //x:y de destino tools individual pode ser encontrado usando $(location //x:y).

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