.bzl ファイル

問題を報告

このページでは、すべての .bzl ファイルで利用可能なグローバル メソッドについて説明します。

メンバー

analytics_test_transition

transition analysis_test_transition(settings)

analytics-test ルールの依存関係に適用する構成遷移を作成します。この移行は、analysis_test = True を使用するルールの属性にのみ適用されます。このようなルールは機能が制限されるため(たとえば、依存関係ツリーのサイズに制限があるため)、この関数を使用して作成される遷移は、transition() を使用して作成された遷移と比較して、スコープが限定されます。

この関数は主に、分析テスト フレームワークのコアライブラリの設計を目的として設計されています。ベスト プラクティスについては、そのドキュメント(または実装)をご覧ください。

パラメータ

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

アスペクト

Aspect aspect(implementation, attr_aspects=[], attrs=None, 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)

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

パラメータ

パラメータ 説明
implementation 必須
この要素を実装する Starlark 関数で、Target(対象が適用されるターゲット)と ctx(ターゲットの作成元となるルール コンテキスト)の 2 つのパラメータのみを含めます。ターゲットの属性は ctx.rule フィールドを介して使用できます。この関数は、ターゲットに対するアスペクトを適用するたびに分析フェーズで評価されます。
attr_aspects sequence of strings; default = []
属性名のリスト。このアスペクトは、これらの属性を持つターゲットの属性で指定された依存関係に従います。一般的な値には depsexports があります。このリストには、ターゲットのすべての依存関係に沿って伝播する単一の文字列 "*" を含めることもできます。
attrs dict; or None; default = None
特徴のすべての属性を宣言する辞書。これは、属性名から「attr.label」や「attr.string」などの属性オブジェクト(attr モジュールを参照)にマッピングされます。Aspect 属性は、ctx パラメータのフィールドとして実装関数で使用できます。

_ で始まる暗黙の属性のデフォルト値は labellabel_list でなければなりません。

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

required_providers default = []
この属性を使用すると、アスペクトの伝播を、ルールで必要なプロバイダをアドバタイズするターゲットに限定できます。値には、個別のプロバイダか、プロバイダのリストのいずれか(いずれかまたは両方)を含むリストを指定する必要があります。たとえば、[[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、あるいは BazInfoQuxInfo の両方を提供している場合に限り、このアスペクトに some_rule ターゲットが表示されます。

required_aspect_providers default = []
この属性を使用すると、他の要素を調べることができます。値には、個別のプロバイダか、プロバイダのリストのいずれか(いずれかまたは両方)を含むリストを指定する必要があります。たとえば、[[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または BazInfoQuxInfo の両方を提供している場合に限り、この要素に other_aspect が表示されます。

provides default = []
実装関数が返すプロバイダのリスト。

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

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

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

たとえば、ある側面が「deps」属性を通じて推移的に伝播し、それがターゲット「alpha」に適用されるとします。`alpha` に `deps = [':beta_output']` がある場合、`beta_output` がターゲットの `beta` の出力を宣言していると仮定します。 `beta` に`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` A ` ` ` ` ` A ` ` ` A ` ` ` ` A ` ` ` ` A ` ` ` A ` ` ` ` A ` ` ` ` A ` ` ` A ` ` ` ` A ` ` ` ` ` ` `、

デフォルトは False です。

exec_compatible_with sequence of strings; default = []
この側面のすべてのインスタンスに適用される実行プラットフォームの制約のリスト。
exec_groups dict; or None; default = None
実行グループ名(文字列)を exec_groups に部門。設定すると、1 つのインスタンス内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。

構成フィールド

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 必須
: 遅延値を含む構成フラグメントの名前。
name 必須
構成フラグメントから取得する値の名前。

Depset

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

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

デセットのすべての要素(直接的および間接的)は、式 type(x) で得られる同じ型でなければなりません。

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

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

作成するデプセットの順序は、その transitive デプセットの順序と互換性がある必要があります。"default" の注文は他の注文と互換性があります。他のすべての注文は、互換性のある注文に限られます。

下位互換性と上位互換性に関する注意事項。現在、この関数は位置 items パラメータを受け入れます。direct は非推奨であり、今後削除される予定です。削除後は depset 関数の唯一の位置パラメータになります。したがって、次の呼び出しはどちらも同等で、今後も問題ありません。

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

パラメータ

パラメータ 説明
direct sequence; or None; default = None
デプトの直接要素のリスト。
order default = "default"
新しい Depset の走査戦略。設定可能な値についてはこちらをご覧ください。
transitive sequence of depsets; or None; default = None
要素が Depset の間接要素になる Depset のリスト。

exec_group

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

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

パラメータ

パラメータ 説明
toolchains sequence; default = []
この実行グループが必要とするツールチェーンのセット。リストには、任意の組み合わせの String、Label、StarlarkToolchainTypeApi オブジェクトを含めることができます。
exec_compatible_with sequence of strings; default = []
実行プラットフォーム上の制約のリスト。

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='')

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

パラメータ

パラメータ 説明
implementation 必須
このモジュール拡張機能を実装する関数です。単一のパラメータ module_ctx を指定する必要があります。ビルドの開始時に関数が 1 回呼び出され、使用可能なリポジトリのセットが決定されます。
tag_classes default = {}
拡張機能で使用されるすべてのタグクラスを宣言する辞書。タグクラスの名前から tag_class オブジェクトにマッピングされます。
doc default = ''
ドキュメント生成ツールで抽出できる、モジュール拡張機能の説明。

プロバイダ

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 を指定すると、Provider 呼び出し可能値と raw コンストラクタ呼び出し可能値という 2 つの要素タプルを返します。詳しくは、 ルール(カスタム プロバイダのカスタム初期化)と下記の init パラメータの説明をご覧ください。

パラメータ

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

  • 辞書のフィールド名 -> ドキュメント:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
すべてのフィールドは省略可能です。
init callable; or None; default = None
インスタンス化の際にプロバイダのフィールド値を前処理して検証するためのコールバック(省略可)。init を指定すると、provider() は 2 つの要素のタプル(標準のプロバイダ シンボルと未加工のコンストラクタ)を返します。

直感的なディスカッションやユースケースについては、ルール(プロバイダのカスタム初期化)をご覧ください。

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

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

ただし、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='')

新しいリポジトリ ルールを作成します。WORKSPACE ファイルから読み込んで呼び出せるように、グローバル値に保存します。

パラメータ

パラメータ 説明
implementation 必須
このルールを実装する関数。単一のパラメータ repository_ctx が必要です。この関数は、ルールのインスタンスごとに、読み込みフェーズで呼び出されます。
attrs dict; or None; default = None
。辞書のすべての属性を宣言します。属性名から属性オブジェクトにマッピングされます(attr モジュールをご覧ください)。_ で始まる属性は非公開で、ラベルに対する暗黙的な依存関係をファイルに追加できます(リポジトリ ルールは生成されたアーティファクトに依存できません)。属性 name は暗黙的に追加されるため、指定できません。
local default = False
このルールでローカル システムからすべてのものを取得し、取得ごとに再評価する必要があることを示します。
environ sequence of strings; default = []
このリポジトリ ルールが依存する環境変数のリストを指定します。そのリストの環境変数が変更されると、リポジトリが再取得されます。
configure default = False
リポジトリが構成目的でシステムを検査することを示します
remotable default = False
試験運用版。このパラメータは試験運用版であり、いつでも変更される可能性があります。依存しないでください。---experimental_repo_remote_exec
リモート実行と互換性を設定することで、試験運用版で有効になります。
doc default = '
ドキュメント生成ツールで抽出できるリポジトリ ルールの説明。

ルール

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

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

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

テストルールには _test で終わる名前を付ける必要がありますが、他のすべてのルールにこのサフィックスを付けることはできません。(この制限はターゲットにのみ適用され、ルールにのみ適用されます)。

パラメータ

パラメータ 説明
implementation 必須
このルールを実装する Starlark 関数のパラメータは ctx のみです。この関数は、分析フェーズでルールの各インスタンスに対して呼び出されます。ユーザーが指定した属性にアクセスできます。宣言されたすべての出力を生成するアクションを作成する必要があります。
test default = False
このルールがテストルールであるかどうか、つまり、blaze test コマンドのサブジェクトかどうか。すべてのテストルールは、自動的に実行可能と見なされます。テストルールに executable = True を明示的に設定する必要はありません(また、おすすめしません)。詳しくは、 ルールのページをご覧ください。
attrs dict; or None; default = None
。辞書のすべての属性を宣言します。属性名から属性オブジェクトにマッピングされます(attr モジュールをご覧ください)。_ で始まる属性は非公開で、ラベルへの暗黙的な依存関係を追加できます。属性 name は暗黙的に追加されるため、指定できません。属性 visibilitydeprecationtagstestonlyfeatures は暗黙的に追加され、オーバーライドできません。ほとんどのルールに必要なのは、わずかな属性だけです。メモリ使用量を制限するために、ルール関数は attr のサイズに上限を設けています。
outputs dict; or None; or function; デフォルト = なし
非推奨。このパラメータは非推奨で、まもなく削除されます。依存しないでください。---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 default = False
このルールが実行可能ファイルとみなされるかどうか(blaze run コマンドのサブジェクトになる可能性があるかどうか)。詳しくは、 ルールのページをご覧ください。
output_to_genfiles default = False
true の場合、ファイルは bin ディレクトリではなく genfiles ディレクトリに生成されます。既存のルールとの互換性(C++ のヘッダー ファイルの生成など)に必要な場合を除き、このフラグは設定しないでください。
fragments sequence of strings; default = []
ターゲット構成でルールに必要な構成フラグメントの名前のリスト。
host_fragments sequence of strings; default = []
ホスト構成でルールに必要な構成フラグメントの名前のリスト。
_skylark_testable default = False
(試験運用版)

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

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

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

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

exec_compatible_with sequence of strings; default = []
このルール タイプのすべてのターゲットに適用される実行プラットフォームの制約のリスト。
analysis_test default = False
true の場合、このルールは分析テストとして扱われます。

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

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

  • このルールのターゲットは、推移的依存関係の数が制限されています。
  • このルールは、test=True が設定されているかのように、テストルールとみなされます。これは test の値よりも優先されます
  • ルールの実装関数ではアクションを登録できません。代わりに、AnalysisTestResultInfo を指定して、合否の結果を登録する必要があります。
build_setting BuildSetting; or None; デフォルト = なし
設定されている場合、このルールのタイプを表します。build settingconfig モジュールをご覧ください。このように設定すると、「build_setting_default」という名前の必須属性が、渡される値に対応する型を持つこのルールに自動的に追加されます。
cfg default = None
設定されている場合、分析の前にルールが独自の構成に適用される構成遷移を指定します。
exec_groups dict; or None; default = None
実行グループ名(文字列)を exec_groups に部門。設定すると、1 つのターゲット内の複数の実行プラットフォームでルールによるアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。
compile_one_filetype sequence of strings; or None; default = None
--compile_one_dependency で使用されます。複数のルールが特定のファイルを使用する場合は、他のルールではなくこのルールを選択します。
name string; or None; デフォルト = なし
非推奨。このパラメータは非推奨で、まもなく削除されます。依存しないでください。--+incompatible_remove_rule_name_parameter無効になっています。このフラグを使用して、コードと即時削除との互換性があることを確認します。
非推奨: 使用しないでください。

このルールの名前。Bazel によって認識され、ロギング、native.existing_rule(...)[kind]bazel query などのコンテキストで報告されます。これは通常、このルールにバインドされる Starlark 識別子と同じです。たとえば、foo_library というルールは通常 foo_library = rule(...) として宣言され、BUILD ファイルで foo_library(...) としてインスタンス化されます。

このパラメータを省略すると、宣言する .bzl モジュール内で、このルールに最初にバインドされる Starlark グローバル変数の名前がルールの名前に設定されます。したがって、名前が foo_library の場合は foo_library = rule(...) でこのパラメータを指定する必要はありません。

ルールの明示的な名前を指定しても、ルールをインスタンス化できる場所は変更されません。

select

unknown select(x, no_match_error='')

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

パラメータ

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

タグクラス

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

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

パラメータ

パラメータ 説明
attrs default = {}
このタグクラスのすべての属性を宣言する辞書。属性名から属性オブジェクトにマッピングされます(attr モジュールをご覧ください)。
doc default = ''
ドキュメント生成ツールで抽出できるタグクラスの説明。

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" の値は常に使用可能で、"//..." は常に「現在のリポジトリ内のすべてのパッケージ」として解釈されます。