transition

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.

Participantes

transition

transition transition(implementation, inputs, outputs)

Uma transição que lê um conjunto de configurações de build de entrada e grava um conjunto de configurações de saída de build.

Exemplos

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"],
)

Confira mais detalhes aqui.

Parâmetros

Parâmetro Descrição
implementation necessá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 "inputs". 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 dá à função de implementação acesso aos atributos da regra para possibilitar transições parametrizadas de atributos.

Essa função precisa retornar um dict do identificador de configuração de build para o valor da configuração de build. Isso representa a transição de configuração: para cada entrada no dict retornado, a transição atualiza essa configuração com o novo valor. As demais configurações não foram alteradas. Essa função também pode retornar uma list de dicts ou uma dict de dicts no caso de uma transição de divisão.

inputs sequence of strings; obrigatório
Lista de configurações do build que podem ser lidas por essa transição. Esse se torna o conjunto de chaves do parâmetro de configurações do parâmetro da função de implementação.
outputs sequence of strings; obrigatório
Lista de configurações do build que podem ser gravadas por essa transição. Precisa ser um superconjunto do conjunto de chaves do dicionário retornado por essa transição.