.bzl ファイル

問題を報告 ナイトリー · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

すべての .bzl ファイルで使用可能なグローバル メソッド。

メンバー

analysis_test_transition

transition analysis_test_transition(settings)

分析テストルールの依存関係に適用される構成遷移を作成します。この遷移は、analysis_test = True を含むルールの属性にのみ適用できます。このようなルールは機能に制限があるため(たとえば、依存関係ツリーのサイズが制限されているなど)、この関数を使用して作成された遷移は、transition() を使用して作成された遷移と比べて潜在的なスコープが制限されます。

この関数は、主に Analysis Test Framework コア ライブラリを容易にするために設計されています。ベスト プラクティスについては、ドキュメント(またはその実装)をご覧ください。

パラメータ

パラメータ 説明
settings dict; 必須
この構成遷移で設定する必要がある構成設定に関する情報を含む辞書。キーはビルド設定ラベルで、値は移行後の新しい値です。その他の設定は変更されません。これを使用して、分析テストに合格するために設定する必要がある特定の構成設定を宣言します。

アスペクト

Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])

新しいアスペクトを作成します。この関数の結果はグローバル値に格納する必要があります。詳細については、アスペクトの概要をご覧ください。

パラメータ

パラメータ 説明
implementation 関数。必須
このアスペクトを実装する Starlark 関数。Target(アスペクトが適用されるターゲット)と ctx(ターゲットが作成されたルール コンテキスト)の 2 つのパラメータのみを持ちます。ターゲットの属性は ctx.rule フィールドで使用できます。この関数は、ターゲットへのアスペクトの適用ごとに分析フェーズで評価されます。
attr_aspects 文字列シーケンス。デフォルトは []
です。属性名のリスト。アスペクトは、これらの名前を持つターゲットの属性で指定された依存関係に沿って伝播されます。一般的な値には depsexports があります。このリストには、ターゲットのすべての依存関係を伝播する単一の文字列 "*" を含めることもできます。
toolchains_aspects sequence: デフォルトは []
です。ツールチェーン タイプのリスト。アスペクトは、これらのツールチェーン タイプに一致するターゲット ツールチェーンに伝播されます。
attrs dict: デフォルトは {}
。アスペクトのすべての属性を宣言するディクショナリ。属性名から属性オブジェクト(attr.labelattr.string など)にマッピングします(attr モジュールをご覧ください)。アスペクト属性は、ctx パラメータのフィールドとして実装関数で使用できます。

_ で始まる暗黙的な属性は、デフォルト値を持ち、label または label_list 型にする必要があります。

明示的な属性は string 型で、values 制限を使用する必要があります。明示的な属性を使用すると、制限に従って同じ名前、型、有効な値の属性を持つルールでのみアスペクトを使用できます。

宣言された属性は、None をデフォルト値に変換します。

required_providers sequence: デフォルトは [] です。
この属性を使用すると、アスペクトは必要なプロバイダをアドバタイズするルールを持つターゲットのみに伝播を制限できます。値は、個々のプロバイダまたはプロバイダのリストを含むリストにする必要があります。両方を含むリストは使用できません。たとえば、[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]] は無効です。

ネストされていないプロバイダのリストは、プロバイダのリストが 1 つ含まれるリストに自動的に変換されます。つまり、[FooInfo, BarInfo] は自動的に [[FooInfo, BarInfo]] に変換されます。

ルール(some_rule など)のターゲットをアスペクトに表示するには、some_rule が、必須のベンダーリストの少なくとも 1 つからすべてのベンダーを宣伝する必要があります。たとえば、アスペクトの required_providers[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] の場合、このアスペクトは、some_ruleFooInfoまたは BarInfoまたは BazInfo QuxInfo の両方を提供する場合にのみ、some_rule ターゲットを参照できます。

required_aspect_providers 順序: デフォルトは [] です。
この属性により、このアスペクトは他のアスペクトを検査できます。値は、個々のプロバイダまたはプロバイダのリストを含むリストにする必要があります。両方を含むリストは使用できません。たとえば、[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]] は無効になります。

プロバイダのネスト解除されたリストは、1 つのプロバイダのリストを含むリストに自動的に変換されます。つまり、[FooInfo, BarInfo] は自動的に [[FooInfo, BarInfo]] に変換されます。

別のアスペクト(other_aspect など)をこのアスペクトに表示するには、other_aspect が少なくとも 1 つのリストのすべてのプロバイダを提供する必要があります。[[FooInfo], [BarInfo], [BazInfo, QuxInfo]] の例では、このアスペクトは、other_aspectFooInfoまたは BarInfoまたは BazInfo QuxInfo の両方を提供する場合にのみ、other_aspect を参照できます。

provides シーケンス。デフォルトは []
。実装関数が返す必要があるプロバイダのリスト。

実装関数で、ここで説明するプロバイダのいずれかの型が戻り値から省略されている場合はエラーです。ただし、実装関数は、ここに記載されていない追加のプロバイダを返すことがあります。

リストの各要素は、provider() から返される *Info オブジェクトです。ただし、以前のプロバイダは文字列名で表されます。ルールのターゲットが、必要なプロバイダを宣言するターゲットの依存関係として使用される場合、そのプロバイダをここで指定する必要はありません。実装関数で返すだけで十分です。ただし、必須ではないものの、指定することをおすすめします。ただし、アスペクトrequired_providers フィールドでは、プロバイダをここで指定する必要があります。

requires Aspectシーケンス。デフォルトは []
このアスペクトの前に伝播する必要があるアスペクトのリスト。
fragments 文字列シーケンス。デフォルトは []
アスペクトがターゲット構成で必要とする構成フラグメントの名前のリスト。
host_fragments 文字列シーケンス。デフォルトは []
。ホスト構成でアスペクトに必要な構成フラグメントの名前のリスト。
toolchains sequence: デフォルトは []
。設定されている場合、このアスペクトに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi などのオブジェクトを自由に組み合わせて含めることができます。ツールチェーンは現在のプラットフォームをチェックすることで検出され、ctx.toolchain を介してアスペクト実装に提供されます。
incompatible_use_toolchain_transition bool; デフォルトは False
非推奨。使用されなくなったため削除する必要があります。
doc 文字列、または None。デフォルトは None
ドキュメント生成ツールによって抽出できるアスペクトの説明。
apply_to_generating_rules bool; デフォルトは False
true の場合、出力ファイルに適用される代わりに、出力ファイルの生成ルールに適用されます。

たとえば、アスペクトが属性「deps」を介して伝播し、ターゲット「alpha」に適用されているとします。alpha に「deps = [':beta_output']」があるとします。ここで、beta_output はターゲット beta の宣言された出力です。beta にターゲット「charlie」が「deps」の 1 つとしてあるとします。アスペクトの「apply_to_generating_rules=True」の場合、アスペクトは「alpha」、「beta」、「charlie」を介して伝播します。False の場合、アスペクトは「alpha」にのみ伝播します。

デフォルトは false です。

exec_compatible_with 文字列シーケンス。デフォルトは []
。このアスペクトのすべてのインスタンスに適用される実行プラットフォームの制約のリスト。
exec_groups dict または None。デフォルトは None です。
実行グループ名(文字列)の exec_groups へのディクショナリ。設定すると、アスペクトは 1 つのインスタンス内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。
subrules サブルールシーケンス。デフォルトは []
試験運用版: このアスペクトで使用されるサブルールのリスト。

configuration_field

LateBoundDefault configuration_field(fragment, name)

label タイプの属性の遅延デフォルト値を参照します。値を決定する前に構成を構築する必要がある場合、値は「遅延バウンド」になります。値としてこれを使用する属性は、非公開にする必要があります

使用例:

ルール属性の定義:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

ルール実装でのアクセス:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

パラメータ

パラメータ 説明
fragment string; 必須
レイト バウンド値を含む構成フラグメントの名前。
name string; 必須
構成フラグメントから取得する値の名前。

depset

depset depset(direct=None, order="default", *, transitive=None)

depset を作成します。direct パラメータは depset の直接要素のリストで、transitive パラメータは、要素が作成された depset の間接要素になる depset のリストです。depset がリストに変換されたときに要素が返される順序は、order パラメータで指定します。詳細については、Depsets の概要をご覧ください。

depset のすべての要素(直接的および間接的)は、式 type(x) によって取得されるものと同じ型である必要があります。

ハッシュベースのセットを使用してイテレーション中に重複を排除するため、depset のすべての要素をハッシュ可能にする必要があります。ただし、現在のところ、この不変条件はすべてのコンストラクタで一貫してチェックされていません。--incompatible_always_check_depset_elements フラグを使用して、一貫したチェックを有効にします。これは今後のリリースのデフォルトの動作になります。問題 10313 をご覧ください。

また、現在のところ要素は不変である必要がありますが、この制限は今後緩和される予定です。

作成された depset の順序は、transitive depset の順序と互換性がある必要があります。"default" オーダーは他のオーダーと互換性がありますが、他のオーダーは互換性がありません。

パラメータ

パラメータ 説明
direct sequence、または None。デフォルトは None です。
depset の直接要素のリスト。
order string; デフォルトは "default"
新しい依存関係の走査戦略。有効な値については、こちらをご覧ください。
transitive depsetシーケンス、または None。 デフォルトは None
要素が depset の間接要素になる depset のリスト。

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[])

ルールの実装時に特定の実行プラットフォームのアクションを作成するために使用できる実行グループを作成します。

パラメータ

パラメータ 説明
toolchains sequence(デフォルトは []
): この実行グループに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi オブジェクトを任意の組み合わせで含めることができます。
exec_compatible_with 文字列シーケンス。デフォルトは []
実行プラットフォームに対する制約のリスト。

exec_transition

transition exec_transition(implementation, inputs, outputs)

実行遷移の定義に使用される transition() の特殊なバージョン。ベスト プラクティスについては、ドキュメント(または実装)をご覧ください。Bazel 組み込み関数からのみ使用できます。

パラメータ

パラメータ 説明
implementation 呼び出し可能。必須
inputs 文字列シーケンス。必須
outputs 文字列シーケンス。必須

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)

新しいモジュール拡張機能を作成します。グローバル値に保存して、use_extension を使用して MODULE.bazel ファイルでエクスポートして使用できるようにします。

パラメータ

パラメータ 説明
implementation callable; 必須
このモジュール拡張を実装する関数。1 つのパラメータ module_ctx を受け取る必要があります。この関数は、ビルドの開始時に 1 回呼び出され、使用可能なリポジトリのセットを決定します。
tag_classes dict(デフォルトは {}
): 拡張機能で使用されるすべてのタグクラスを宣言するディクショナリ。タグクラスの名前から tag_class オブジェクトにマッピングします。
doc 文字列、または None。デフォルトは None
ドキュメント生成ツールによって抽出できるモジュール拡張の説明。
environ 文字列シーケンス。デフォルトは []
このモジュール拡張機能が依存する環境変数のリストを指定します。そのリスト内の環境変数が変更されると、拡張機能が再評価されます。
os_dependent bool: デフォルトは False
この拡張機能が OS に依存するかどうかを示します。
arch_dependent bool; デフォルトは False
この拡張機能がアーキテクチャに依存するかどうかを示します

provider

unknown provider(doc=None, *, fields=None, init=None)

プロバイダ シンボルを定義します。この関数の計算結果をルールまたはアスペクトの実装で使用できるようにするには、グローバル値に保存する必要があります。プロバイダは、結果の値を関数として呼び出すことによってインスタンス化できます。または、ターゲットからそのプロバイダのインスタンスを取得するためのインデックス キーとして直接使用することもできます。例:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

プロバイダの使用方法に関する包括的なガイドについては、ルール(プロバイダ)をご覧ください。

init が指定されていない場合、呼び出し可能な値 Provider を返します。

init が指定されている場合は、2 つの要素(Provider 呼び出し可能値と未加工のコンストラクタ呼び出し可能値)のタプルを返します。詳細については、ルール(カスタム プロバイダのカスタム初期化)と、以下の init パラメータの説明をご覧ください。

パラメータ

パラメータ 説明
doc 文字列、または None。デフォルトは None
ドキュメント生成ツールで抽出できるプロバイダの説明。
fields stringシーケンスdict、または None。デフォルトは None
指定すると、許可されるフィールドのセットが制限されます。
指定できる値は次のとおりです。
  • フィールドのリスト:
    provider(fields = ['a', 'b'])

  • 辞書フィールド名 -> ドキュメント:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
すべてのフィールドは省略可能です。
init 呼び出し可能オブジェクト、または None。デフォルトは None
インスタンス化時にプロバイダのフィールド値を前処理して検証するためのオプションのコールバック。init が指定されている場合、provider() は 2 つの要素(通常のプロバイダ シンボルと未加工のコンストラクタ)のタプルを返します。

以下に正確な説明を示します。直感的な説明とユースケースについては、ルール(プロバイダのカスタム初期化)をご覧ください。

P は、provider() を呼び出して作成されたプロバイダ シンボルです。概念的には、P のインスタンスは、デフォルト コンストラクタ関数 c(*args, **kwargs) を呼び出すことで生成されます。この関数は次のことを行います。

  • args が空でない場合、エラーが発生します。
  • provider() の呼び出し時に fields パラメータが指定されていて、fields にリストされていないキーが kwargs に含まれていると、エラーが発生します。
  • それ以外の場合、c は、kwargsk: v エントリごとに、値が vk という名前のフィールドを持つ新しいインスタンスを返します。
init コールバックが指定されていない場合、シンボル P 自体の呼び出しはデフォルト コンストラクタ関数 c の呼び出しとして機能します。つまり、P(*args, **kwargs)c(*args, **kwargs) を返します。たとえば、
MyInfo = provider()
m = MyInfo(foo = 1)
を使用すると、mm.foo == 1 を含む MyInfo インスタンスになります。

ただし、init が指定されている場合、P(*args, **kwargs) 呼び出しは代わりに次の手順を実行します。

  1. コールバックは init(*args, **kwargs) として呼び出されます。つまり、P に渡されたものと同じ位置引数とキーワード引数で呼び出されます。
  2. init の戻り値は、キーがフィールド名の文字列である辞書 d である必要があります。一致していない場合は、エラーが発生します。
  3. c(**d) のように、d のエントリをキーワード引数としてデフォルト コンストラクタを呼び出す場合と同様に、P の新しいインスタンスが生成されます。

注: 上記の手順は、*args または **kwargsinit のシグネチャと一致しない場合、init の本文の評価が失敗した場合(fail() の呼び出しによって意図的に失敗した場合も含む)、または init の戻り値が想定されるスキーマの辞書でない場合、エラーが発生することを意味します。

このように、init コールバックは、前処理と検証のために位置引数と任意のロジックを許可することで、通常のプロバイダ構築を一般化します。許可された fields のリストへの迂回を許可しません

init を指定すると、provider() の戻り値はタプル (P, r) になります。ここで、r未加工のコンストラクタです。実際、r の動作は、前述のデフォルト コンストラクタ関数 c の動作とまったく同じです。通常、r は、名前の先頭にアンダースコアが付いた変数にバインドされるため、現在の .bzl ファイルのみが直接アクセスできます。

MyInfo, _new_myinfo = provider(init = ...)

repository_rule

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)

新しいリポジトリ ルールを作成します。グローバル値に格納して、module_extension() 実装関数から読み込んで呼び出したり、use_repo_rule() で使用できるようにします。

パラメータ

パラメータ 説明
implementation callable(呼び出し可能): 必須
このルールを実装する関数。単一のパラメータ repository_ctx を指定する必要があります。この関数は、ルールの各インスタンスの読み込みフェーズで呼び出されます。
attrs dict、または None。デフォルトは None
リポジトリ ルールのすべての属性を宣言する辞書。属性名から属性オブジェクトにマッピングします(attr モジュールを参照)。_ で始まる属性は非公開であり、ラベルへの暗黙的な依存関係をファイルに追加するために使用できます(リポジトリ ルールは生成されたアーティファクトに依存できません)。属性 name は暗黙的に追加されるため、指定する必要はありません。

宣言された属性により、None がデフォルト値に変換されます。

local bool。デフォルトは False
。このルールがローカル システムからすべてを取得し、取得ごとに再評価する必要があることを示します。
environ 文字列シーケンス。デフォルトは []
非推奨。このパラメータのサポートは終了しました。代わりに repository_ctx.getenv に移行します。
このリポジトリ ルールが依存する環境変数のリストを提供します。このリスト内の環境変数が変更されると、リポジトリが再取得されます。
configure bool; デフォルトは False
リポジトリが構成目的でシステムを検査することを示します
remotable bool。デフォルトは False
試験運用版。このパラメータは試験運用版であり、随時変更される可能性があります。これに依存しないでください。--experimental_repo_remote_exec
Compatible with remote execution を設定することで、試験運用版として有効にできます。
doc string: None、デフォルトは None
ドキュメント生成ツールで抽出できるリポジトリ ルールの説明。

ルール

callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], dependency_resolution_rule=False, exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])

新しいルールを作成します。このルールは、BUILD ファイルまたはマクロから呼び出してターゲットを作成できます。

ルールは .bzl ファイルのグローバル変数に割り当てる必要があります。グローバル変数の名前はルールの名前です。

テストルールの名前は _test で終わる必要があります。他のすべてのルールでは、この接尾辞を使用しないでください。(この制限はルールにのみ適用され、ターゲットには適用されません)。

パラメータ

パラメータ 説明
implementation function; 必須
このルールを実装する Starlark 関数。パラメータは 1 つだけ(gke)であることが必要です。この関数は、ルールの各インスタンスの分析フェーズで呼び出されます。ユーザーが指定した属性にアクセスできます。宣言されたすべての出力を生成するアクションを作成する必要があります。
test bool。デフォルトは unbound です。
このルールがテストルールであるかどうか、つまり blaze test コマンドの対象となるかどうか。すべてのテストルールは自動的に実行可能と見なされます。テストルールに executable = True を明示的に設定する必要はありません(設定しないことをおすすめします)。値はデフォルトで False に設定されます。詳細については、ルール ページをご覧ください。
attrs dict: デフォルトは {}
。ルールのすべての属性を宣言するディクショナリ。属性名から属性オブジェクトにマッピングします(attr モジュールを参照)。_ で始まる属性は非公開で、ラベルへの暗黙的な依存関係を追加するために使用できます。属性 name は暗黙的に追加されるため、指定する必要はありません。属性 visibilitydeprecationtagstestonlyfeatures は暗黙的に追加され、オーバーライドできません。ほとんどのルールでは、必要な属性はほんの一握りです。メモリ使用量を制限するために、宣言できる属性の数には上限があります。

宣言された属性は、None をデフォルト値に変換します。

outputs dictNone、または function。デフォルトは None
非推奨。このパラメータは非推奨となっており、まもなく削除されます。これに依存しないでください。--incompatible_no_rule_outputs_param により無効になります。このフラグを使用して、コードが間もなく削除される可能性があるかどうかを検証します。
このパラメータは非推奨になりました。代わりに OutputGroupInfo または attr.output を使用するようにルールを移行します。

事前に宣言された出力を定義するスキーマoutput 属性や output_list 属性とは異なり、ユーザーはこれらのファイルのラベルを指定しません。事前宣言された出力の詳細については、ルールのページをご覧ください。

この引数の値は、ディクショナリまたはディクショナリを生成するコールバック関数です。コールバックは、計算された依存関係属性と同様に機能します。関数のパラメータ名はルールの属性と照合されます。たとえば、定義 def _my_func(srcs, deps): ...outputs = _my_func を渡すと、関数は属性 srcsdeps にアクセスできます。辞書は直接指定するか、関数を介して指定しますが、どちらの場合も次のように解釈されます。

辞書内の各エントリは、事前宣言された出力を作成します。キーは識別子で、値は出力のラベルを決定する文字列テンプレートです。ルールの実装関数では、識別子は ctx.outputs の出力の File にアクセスするために使用されるフィールド名になります。出力のラベルはルールと同じパッケージで、パッケージの後の部分は、"%{ATTR}" 形式の各プレースホルダを属性 ATTR の値から形成された文字列に置き換えることで生成されます。

  • 文字列型の属性はそのまま置換されます。
  • ラベル型の属性は、パッケージの後の部分(ファイル拡張子を除く)としてラベルの一部になります。たとえば、ラベル "//pkg:a/b.c""a/b" になります。
  • 出力型の属性は、ファイル拡張子(上記の例では "a/b.c")を含むパッケージの後のラベルの一部になります。
  • プレースホルダで使用されるリスト型属性(attr.label_list など)はすべて、1 つの要素のみを持つ必要があります。リスト以外のバージョン(attr.label)と同じコンバージョンです。
  • 他の属性タイプはプレースホルダに表示されない場合があります。
  • 属性以外の特別なプレースホルダ %{dirname}%{basename} は、ルールのラベルの一部(パッケージを除く)に展開されます。たとえば、"//pkg:a/b.c" では、dirname は a、basename は b.c です。

実際には、最も一般的な置換プレースホルダは "%{name}" です。たとえば、foo という名前のターゲットの場合、出力ディクショナリ {"bin": "%{name}.exe"} は、実装関数で ctx.outputs.bin としてアクセスできる foo.exe という名前の出力を事前宣言します。

executable bool。デフォルトは unbound
。このルールが実行可能と見なされるかどうか、つまり blaze run コマンドの対象となるかどうか。デフォルトでは False に設定されます。詳細については、ルール ページをご覧ください。
output_to_genfiles bool: デフォルトは False
true の場合、ファイルは bin ディレクトリではなく genfiles ディレクトリに生成されます。既存のルールとの互換性のために必要な場合(C++ のヘッダー ファイルを生成する場合など)を除き、このフラグを設定しないでください。
fragments 文字列シーケンス。デフォルトは []
。ターゲット構成でルールに必要な構成フラグメントの名前のリスト。
host_fragments 文字列シーケンス。デフォルトは []
。ホスト構成でルールに必要な構成フラグメントの名前のリスト。
_skylark_testable bool。デフォルトは False
(試験運用版)

true の場合、このルールは、Actions プロバイダを介して、このルールに依存するルールによる検査のためにアクションを公開します。プロバイダは、ctx.created_actions() を呼び出すことで、ルール自体でも使用できます。

これは、Starlark ルールの分析時の動作をテストする場合にのみ使用してください。このフラグは今後削除される可能性があります。
toolchains sequence: デフォルトは []
。設定されている場合、このルールに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi オブジェクトを任意の組み合わせで含めることができます。ツールチェーンは現在のプラットフォームをチェックすることで検出され、ctx.toolchain を介してルール実装に提供されます。
incompatible_use_toolchain_transition bool; デフォルトは False
非推奨。使用されなくなったため削除する必要があります。
doc 文字列、または None。デフォルトは None です。
ドキュメント生成ツールによって抽出できるルールの説明。
provides シーケンス。デフォルトは []
。実装関数が返す必要があるプロバイダのリスト。

実装関数で、ここで説明するプロバイダのいずれかの型が戻り値から省略されている場合はエラーです。ただし、実装関数はここに記載されていない追加のプロバイダを返す場合があります。

リストの各要素は、provider() によって返される *Info オブジェクトです。ただし、従来のプロバイダは文字列名で表されます。ルールのターゲットが、必須のプロバイダを宣言するターゲットの依存関係として使用される場合、ここでそのプロバイダを指定する必要はありません。実装関数で返すだけで十分です。ただし、必須ではないものの、指定することをおすすめします。ただし、アスペクトの required_providers フィールドでは、プロバイダをここで指定する必要があります。

dependency_resolution_rule bool: デフォルトは False です。
設定されている場合、マテリアライザでも使用可能としてマークされている属性によって、ルールは依存関係になります。このフラグが設定されているルールのすべての属性は、マテリアルライザでも使用可能としてマークする必要があります。これは、マークされたルールが、マークされていないルールに依存できないようにするためです。
exec_compatible_with 文字列シーケンス。デフォルトは []
。このルールタイプのすべてのターゲットに適用される実行プラットフォームの制約のリスト。
analysis_test bool。デフォルトは False
。true の場合、このルールは分析テストとして扱われます。

注: 分析テストルールは、主にコア Starlark ライブラリで提供されるインフラストラクチャを使用して定義されます。ガイダンスについては、テストをご覧ください。

ルールが分析テストルールとして定義されている場合、その属性の analysis_test_transition を使用して定義された設定の移行を使用できますが、いくつかの制限が適用されます。

  • このルールのターゲットには、持つことができる伝播依存関係の数に制限があります。
  • このルールは、(test=True が設定されている場合と同様に)テストルールと見なされます。これは test の値に優先されます。
  • ルール実装関数ではアクションを登録できません。代わりに、AnalysisTestResultInfo を指定して、合格/不合格の結果を登録する必要があります。
build_setting BuildSetting、または None。デフォルトは None
設定されている場合、このルールの build setting の種類を記述します。config モジュールをご覧ください。これが設定されている場合、このルールに「build_setting_default」という必須属性が自動的に追加され、ここに渡された値に対応する型が設定されます。
cfg デフォルトは None
この値を設定すると、分析前にルールが独自の構成に適用する構成遷移を指定できます。
exec_groups 辞書、または None。デフォルトは None
。実行グループ名(文字列)と exec_group の辞書。設定すると、ルールで 1 つのターゲット内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。
initializer デフォルトは None
です。試験運用版: ルールの属性を初期化する Stalark 関数。

この関数は、ルールのインスタンスごとに読み込み時に呼び出されます。name と、ルールで定義された公開属性の値(汎用属性(tags など)ではない)で呼び出されます。

ディクショナリを属性名から目的の値に返す必要があります。返されない属性は影響を受けません。値として None を返すと、属性定義で指定されたデフォルト値が使用されます。

イニシャライザは、属性定義で指定されたデフォルト値の前に評価されます。したがって、イニシャライザのシグネチャのパラメータにデフォルト値が含まれている場合、属性定義のデフォルト値が上書きされます(None を返す場合を除く)。

同様に、イニシャライザの署名のパラメータにデフォルト値がない場合、そのパラメータは必須になります。このような場合は、属性定義のデフォルト設定または必須設定を省略することをおすすめします。

処理されない属性には **kwargs を使用することをおすすめします。

拡張ルールの場合、すべてのイニシャライザは、子から祖先に向かって呼び出されます。各イニシャライザには、そのイニシャライザが認識している公開属性のみが渡されます。

parent デフォルトは None
です。試験運用版: 拡張された Stalark ルール。設定すると、パブリック属性はアドバタイズされたプロバイダだけでなく、統合されます。ルールは、親の executabletest を照合します。fragmentstoolchainsexec_compatible_withexec_groups の値は統合されます。以前のパラメータや非推奨のパラメータは設定できません。親の受信構成遷移 cfg は、thisrule の受信構成の後に適用されます。
extendable boolLabelstringNone(デフォルトは None
(試験運用版): このルールを拡張できるルールを定義する許可リストのラベル。True または False に設定して、常に拡張を許可または禁止することもできます。Bazel のデフォルトでは、拡張機能は常に許可されます。
subrules サブルールシーケンス。デフォルトは []
。試験運用版: このルールで使用されるサブルールのリスト。

選択

unknown select(x, no_match_error='')

select() は、ルール属性を構成可能にするヘルパー関数です。詳しくは、ビルド百科事典をご覧ください。

パラメータ

パラメータ 説明
x dict; 必須
構成条件を値にマッピングする辞書。各キーは、config_setting インスタンスまたは constraint_value インスタンスを識別するラベルまたはラベル文字列です。文字列ではなくラベルを使用する場合は、マクロに関するドキュメントをご覧ください。
no_match_error 文字列。デフォルトは ''
。条件が一致しなかった場合に報告するカスタム エラー(省略可)。

サブルール

Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])

サブルールの新しいインスタンスを構築します。この関数の結果を使用するには、グローバル変数に保存する必要があります。

パラメータ

パラメータ 説明
implementation function; required
このサブルールを実装する Starlark 関数
attrs dict: デフォルトは {}
。サブルールのすべての(非公開)属性を宣言する辞書。

サブルールは、ラベル型(ラベルまたはラベルリスト)の非公開属性のみを持つことができます。これらのラベルに対応する解決済み値は、Bazel によってサブルールの実装関数に名前付き引数として自動的に渡されます(そのため、実装関数は属性名に一致する名前付きパラメータを受け入れる必要が生じます)。これらの値の型は次のとおりです。

  • FilesToRunProvider: executable=True を含むラベル属性
  • File: allow_single_file=True を含むラベル属性
  • Target(その他のラベル属性の場合)
  • [Target]: すべてのラベルリスト属性
toolchains sequence: デフォルトは []
。設定されている場合、このサブルールに必要なツールチェーンのセット。このリストには、String、Label、StarlarkToolchainTypeApi オブジェクトを任意の組み合わせで含めることができます。ツールチェーンは現在のプラットフォームをチェックすることで検出され、ctx.toolchains を介してサブルールの実装に提供されます。このパラメータを設定する場合は、使用ルールで AEG を有効にする必要があります。AEG にまだ移行していない場合は、https://bazel.build/extending/auto-exec-groups#migration-aegs をご覧ください。
fragments 文字列シーケンス。デフォルトは []
サブルールがターゲット構成で必要とする構成フラグメントの名前のリスト。
subrules サブルールシーケンス。デフォルトは []
。このサブルールに必要な他のサブルールのリスト。

tag_class

tag_class tag_class(attrs={}, *, doc=None)

新しい tag_class オブジェクトを作成します。このタグは、タグのクラスの属性スキーマ(モジュール拡張機能で使用できるデータ オブジェクト)を定義します。

パラメータ

パラメータ 説明
attrs dict: デフォルトは {}
。このタグクラスのすべての属性を宣言するディクショナリ。属性名から属性オブジェクトにマッピングされます( attr モジュールを参照)。

rule()aspect()repository_rule() とは異なり、宣言された属性では None がデフォルト値に変換されません。デフォルトを使用するには、呼び出し元で属性を完全に省略する必要があります。

doc 文字列、または None。デフォルトは None
ドキュメント生成ツールによって抽出できるタグクラスの説明。

visibility

None visibility(value)

現在初期化されている .bzl モジュールの読み込み公開設定を設定します。

モジュールの読み込み公開設定は、他の BUILD ファイルと .bzl ファイルがそのモジュールを読み込むことができるかどうかを制御します。(これは、ファイルが他のターゲットの依存関係として表示されることを制御する、基盤となる .bzl ソースファイルのターゲット ビジュアリビティとは異なります)。読み込みの公開設定はパッケージ単位で機能します。モジュールを読み込むには、読み込みを行うファイルが、そのモジュールの公開設定が付与されているパッケージに存在している必要があります。モジュールは、可視性に関係なく、常にそれぞれのパッケージ内で読み込めます。

visibility() は、.bzl ファイルごとに 1 回だけ呼び出すことができます。関数内ではトップレベルで呼び出すことはできません。推奨されるスタイルは、この呼び出しを load() ステートメントの直下と、引数の決定に必要な簡単なロジックのすぐ下に配置することです。

フラグ --check_bzl_visibility が false に設定されている場合、読み込みの可視性の違反は警告を出力しますが、ビルドは失敗しません。

パラメータ

パラメータ 説明
value 必須
パッケージ仕様の文字列のリスト、または単一のパッケージ仕様の文字列。

パッケージの仕様は package_group と同じ形式ですが、負のパッケージの仕様は許可されません。つまり、仕様の形式は次のようになります。

  • "//foo": パッケージ //foo
  • "//foo/...": パッケージ //foo とそのすべてのサブパッケージ。
  • "public" または "private": すべてのパッケージまたはパッケージなし

「@」構文は使用できません。すべての仕様は、現在のモジュールのリポジトリを基準にして解釈されます。

value が文字列のリストの場合、このモジュールへの公開が許可されているパッケージのセットは、各仕様で表されるパッケージの統合です。(空のリストの効果は private と同じです)。value が単一の文字列の場合は、シングルトン リスト [value] として扱われます。

フラグ --incompatible_package_group_has_public_syntax--incompatible_fix_package_group_reporoot_syntax は、この引数には影響しません。"public""private" の値は常に使用できます。"//..." は常に「現在のリポジトリ内のすべてのパッケージ」として解釈されます。