transition

Informar un problema Ver fuente

Representa una transición de configuración en un perímetro de dependencia. Por ejemplo, si //package:foo depende de //package:bar con una transición de configuración, la configuración de estos dos destinos diferirá: la transición de //package:bar se determinará por la de //package:foo, según la función definida por un objeto de transición.

Miembros

transition

transition transition(implementation, inputs, outputs)

Una transición que lee un conjunto de configuraciones de compilación de entrada y escribe un conjunto de configuraciones de compilación de salida.

Ejemplo:

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

Puedes averiguar más detalles aquí.

Parámetros

Parámetro Descripción
implementation requerido
La función que implementa esta transición. Esta función siempre tiene dos parámetros: settings y attr. El parámetro settings es un diccionario cuyo conjunto de claves se define por el parámetro de entradas. Por lo tanto, para cada configuración de compilación --//foo=bar, si inputs contiene //foo, settings tendrá una entrada settings['//foo']='bar'.

El parámetro attr es una referencia a ctx.attr. Esto permite que la función de implementación acceda a los atributos de la regla para posibilitar las transiciones con parámetros para atributos.

Esta función debe mostrar un dict del identificador de configuración de la compilación al valor de configuración de la compilación. Esto representa la transición de configuración: para cada entrada en el dict que se muestra, la transición actualiza ese parámetro de configuración al nuevo valor. El resto de la configuración no se modificará. Esta función también puede mostrar un list de dict o un dict de dict en el caso de una transición dividida.

inputs secuencia de strings; obligatorio
Lista de configuraciones de compilación que se pueden leer con esta transición. Esto se convierte en el conjunto clave del parámetro de configuración del parámetro de la función de implementación.
outputs secuencia de strings; obligatorio
Lista de configuraciones de compilación que se pueden escribir con esta transición. Debe ser un superconjunto del conjunto de claves del diccionario que muestra esta transición.