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_action
s 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_action
s 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 |
Um nome exclusivo para o destino. |
extra_actions
|
extra_action que esse action_listener precisa adicionar ao gráfico de compilação
Por exemplo, [ "//my/tools:analyzer" ] .
|
mnemonics
|
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_action
s.
Os extra_action
s 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 |
Um nome exclusivo para o destino. Você pode fazer referência a essa regra porlabel no argumento extra_actions
das regras action_listener .
|
cmd
|
Como o atributo genrule cmd, com as seguintes diferenças:
|
out_templates
|
extra_action .
O modelo pode usar as seguintes variáveis:
|
requires_action_output
|
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
|
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
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. |