移行

依存関係エッジ間の構成の移行を表します。たとえば、//package:foo が構成の移行で //package:bar に依存している場合、//package:bar(とその依存関係)の構成は、//package:foo の構成に移行関数で指定された変更を加えたものになります。

メンバー

transition

transition transition(*, implementation, inputs, outputs)

一連の入力ビルド設定を読み取り、一連の出力ビルド設定を書き込むトランジション。

例:

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

詳しくはこちらをご覧ください。

パラメータ

パラメータ 説明
implementation callable; required
この遷移を実装する関数。この関数には、常に settings と attr の 2 つのパラメータがあります。settings パラメータは、キーのセットが inputs パラメータで定義される辞書です。したがって、各ビルド設定 --//foo=bar について、inputs に //foo が含まれている場合、settings にはエントリ settings['//foo']='bar' が含まれます。

attr パラメータは ctx.attr への参照です。これにより、実装関数はルールの属性にアクセスして、属性パラメータ化された遷移を行うことができます。

この関数は、ビルド設定 ID からビルド設定値への dict を返す必要があります。これは構成の移行を表します。返された dict の各エントリについて、移行はその設定を新しい値に更新します。その他の設定は変更されません。分割トランジションの場合、この関数は dict の list または dict の dict を返すこともできます。

inputs 文字列のシーケンス。必須
この遷移で読み取ることができるビルド設定のリスト。これは、実装関数パラメータの設定パラメータのキーセットになります。
outputs 文字列のシーケンス。必須
この遷移で書き込むことができるビルド設定のリスト。これは、この遷移によって返される辞書のキーセットのスーパーセットである必要があります。

and_then

transition transition.and_then(transition)

このトランジションを適用してから指定されたトランジションを適用する新しいトランジションを返します。2 番目のトランジションは、このトランジションによって生成されたビルド設定を読み取ります。元のトランジションは変更されません。結果自体がトランジションであり、さらに構成される可能性があります。

コンポーネントの遷移を使用できる場所であれば、構成をルールまたは属性の遷移として使用できます。構成された遷移は、最大で 1 つだけ実行構成(config.exec など)をターゲットにできます。チェーン内の 2 つの遷移が構成を分割する場合、結果には分割のクロス積が含まれます。結合された各分割のキーは、コンポーネント キーのカンマ区切りの連結です。

パラメータ

パラメータ 説明
transition transition; 必須
この移行の後に適用する移行。