Representa uma transição de configuração em uma borda de dependência. Por exemplo, se //package:foo depender de //package:bar com uma transição de configuração, a configuração desses dois destinos será diferente: a transição de //package:bar será determinada por //package:foo, conforme sujeito à função definida por um objeto de transição.
Uma transição que lê um conjunto de configurações de build de entrada e grava um conjunto de configurações de build de saída.
Exemplo:
def _transition_impl(settings, attr):
# This transition just reads the current CPU value as a demonstration.
# A real transition could incorporate this into its followup logic.
current_cpu = settings["//command_line_option:cpu"]
return {"//command_line_option:compilation_mode": "dbg"}
build_in_debug_mode = transition(
implementation = _transition_impl,
inputs = ["//command_line_option:cpu"],
outputs = ["//command_line_option:compilation_mode"],
)
obrigatório
A função que implementa essa transição. Essa função sempre tem dois parâmetros: settings e attr. O parâmetro settings é um dicionário cujo conjunto de chaves é definido pelo parâmetro de entrada. Portanto, para cada configuração de build --//foo=bar, se inputs contiver //foo, settings terá uma entrada settings['//foo']='bar'.
O parâmetro attr é uma referência a ctx.attr. Isso concede à função de implementação acesso aos atributos da regra para possibilitar transições com parâmetros de atributo.
Essa função precisa retornar um dict do identificador de configuração do build para o valor da configuração. Isso representa a transição de configuração: para cada entrada na dict retornada, a transição atualiza essa configuração para o novo valor. Todas as outras configurações não foram alteradas. Essa função também pode retornar um list de dicts ou um dict de dicts no caso de uma transição de divisão.
inputs
sequência de strings
obrigatório
Lista de configurações de compilação que podem ser lidas por esta transição. Ele se torna o conjunto principal do parâmetro de configurações do parâmetro da função de implementação.
outputs
sequência de strings
obrigatório
Lista de configurações de compilação que podem ser gravadas por esta transição. Precisa ser um superconjunto do conjunto de chaves do dicionário retornado por essa transição.