transition

Experimental. This type is experimental and subject to change at any time. Do not depend on it.

Represents a configuration transition across a dependency edge. For example, if //package:foo depends on //package:bar with a configuration transition, then the configuration of these two targets will differ: //package:bar's transition will be determined by that of //package:foo, as subject to the function defined by a transition object.

Methods

transition

transition transition(implementation, inputs, outputs)

Experimental. This type is experimental and subject to change at any time. Do not depend on it.

Creates a configuration transition to be applied across a dependency edge.

Parameters

Parameter Description
implementation

function

The function implementing this transition. This function always has the parameter settings, a dictionary whose set of keys is defined by the inputs parameter. So, for each build setting --//foo=bar, if inputs contains //foo, settings will have an entry settings['//foo']='bar'.

This function also optionally takes a parameter attr which is a reference to ctx.attr but pre-analysis-phase. This gives the implementation function access to the rule's attributes to make attribute-parameterized transitions possible.

This function must return a dict from build setting identifier to build setting value; this represents the configuration transition: for each entry in the returned dict, the transition updates that setting to the new value. All other settings are unchanged.

inputs

sequence of strings

List of build settings that can be read by this transition. This becomes the key set of the settings parameter of the implementation function parameter.

outputs

sequence of strings

List of build settings that can be written by this transition. This must be a superset of the key set of the dictionary returned by this transition.