transição

Representa uma transição de configuração em uma aresta de dependência. Por exemplo, se //package:foo depender de //package:bar com uma transição de configuração, a configuração de //package:bar (e das dependências dela) será a configuração de //package:foo mais as mudanças especificadas pela função de transição.

Membros

transição

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

Para saber mais detalhes, acesse esta página.

Parâmetros

Parâmetro Descrição
implementation callable; required
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 por atributos.

Essa função precisa retornar um dict do identificador de configuração de build para o valor de 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 para o novo valor. Todas as outras configurações permanecem inalteradas. Essa função também pode retornar um list de dicts ou um dict de dicts no caso de uma transição dividida.

inputs sequence de strings; required
Lista de configurações de 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 de strings; required
Lista de configurações de 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.

and_then

transition transition.and_then(transition)

Retorna uma nova transição que aplica esta transição seguida da transição especificada. A segunda transição lê as configurações de build produzidas por esta, e as transições originais permanecem inalteradas. O resultado é uma transição e pode ser composto ainda mais.

Uma composição pode ser usada como uma regra ou transição de atributo sempre que as transições de componentes dela puderem ser usadas. No máximo, uma das transições compostas pode segmentar a configuração de execução (por exemplo, config.exec). Quando duas transições na cadeia dividem a configuração, o resultado tem vários produtos das divisões. A chave de cada divisão combinada é a concatenação separada por vírgulas das chaves de componente.

Parâmetros

Parâmetro Descrição
transition transition; required
A transição a ser aplicada depois desta.