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.

Members

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 two parammeters: settings and attr. The settings param is 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'.

The attr param is a reference to ctx.attr. 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. This function can also return a list of dicts or a dict of dicts in the case of a split transition.

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.