BUILD ファイル

BUILD ファイルで使用できるメソッド。BUILD ファイルでも使用できる追加の 関数 とビルドルールについては、ビルド百科事典もご覧ください。

メンバー

depset

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

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

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

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

また、現時点では要素は不変である必要がありますが、この制限は将来緩和される予定です。

作成された depset の順序は、その transitive depset の順序と互換性がある必要があります。 "default" の順序は他のすべての順序と互換性がありますが、他のすべての順序はそれ自体とのみ互換性があります。

パラメータ

パラメータ 説明
direct シーケンス、または None。 デフォルトは None
depset の直接要素のリスト。
order 文字列。 デフォルトは "default"
新しい depset のトラバーサル戦略。使用可能な値については、こちらをご覧ください。
transitive depsetシーケンス、または None。デフォルトは None
要素が depset の間接要素になる depset のリスト。

existing_rule

unknown existing_rule(name)

このスレッドのパッケージでインスタンス化されたルールの属性を記述する不変の dict のようなオブジェクトを返します。その名前のルール インスタンスが存在しない場合は None を返します。

ここで、不変の dict のようなオブジェクトとは、dict のような反復処理、len(x)name in xx[name]x.get(name)x.items()x.keys()x.values() をサポートする、深く不変のオブジェクト x を意味します。

結果には、非公開のもの(名前が文字で始まらないもの)と、表現できない従来の属性タイプを除き、各属性のエントリが含まれます。また、dict には、ルール インスタンスの namekind'cc_binary' など)のエントリが含まれます。

結果の値は、次のように属性値を表します。

  • str、int、bool 型の属性はそのまま表されます。
  • ラベルは、同じパッケージ内のターゲットの場合は ':foo' 形式の文字列に、別のパッケージ内のターゲットの場合は '//pkg:name' 形式の文字列に変換されます。
  • リストはタプルとして表され、dict は新しい変更可能な dict に変換されます。要素は同じ方法で再帰的に変換されます。
  • select 値は、上記のように変換されたコンテンツとともに返されます。
  • ルールのインスタンス化時に値が指定されず、デフォルト値が計算される属性は、結果から除外されます(計算されたデフォルト値は、分析フェーズまで計算できません)。

可能であれば、この関数はルール ファイナライザ シンボリック マクロの実装関数でのみ使用してください。他のコンテキストでこの関数を使用することはおすすめしません。今後の Bazel リリースで無効になります。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。また、ルール属性値を内部形式から Starlark に変換する他の 2 つの変換(計算されたデフォルトで使用されるものと ctx.attr.foo で使用されるもの)とは微妙に異なることに注意してください。

パラメータ

パラメータ 説明
name 文字列。 必須
ターゲットの名前。

existing_rules

unknown existing_rules()

このスレッドのパッケージでインスタンス化されたルールを記述する不変の dict のようなオブジェクトを返します。dict のようなオブジェクトの各エントリは、ルール インスタンスの名前を existing_rule(name) によって返される結果にマッピングします。

ここで、不変の dict のようなオブジェクトとは、dict のような反復処理、len(x)name in xx[name]x.get(name)x.items()x.keys()x.values() をサポートする、深く不変のオブジェクト x を意味します。

可能であれば、この関数はルール ファイナライザ シンボリック マクロの実装関数でのみ使用してください。他のコンテキストでこの関数を使用することはおすすめしません。今後の Bazel リリースで無効になります。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。

exports_files

None exports_files(srcs, visibility=None, licenses=None)

他のパッケージにエクスポートされる、このパッケージに属するファイルのリストを指定します。

パラメータ

パラメータ 説明
srcs 文字列シーケンス。 必須
エクスポートするファイルのリスト。
visibility シーケンス、または None。 デフォルトは None
可視性宣言を指定できます。ファイルは、指定されたターゲットに表示されます。可視性が指定されていない場合、ファイルはすべてのパッケージに表示されます。
licenses 文字列シーケンス、または None。 デフォルトは None
。 指定するライセンス。

glob

sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

glob は、現在のパッケージ内のすべてのファイルの新しい変更可能な並べ替えられたリストを返します。
  • include 内の少なくとも 1 つのパターンに一致する。
  • exclude(デフォルトは [])内のどのパターンにも一致しない。
If the exclude_directories argument is enabled (set to 1), files of type directory will be omitted from the results (default 1).

パラメータ

パラメータ 説明
include [sequence] of [string]s; default is []
The list of glob patterns to include.
exclude 文字列シーケンス。デフォルトは[]
。除外する glob パターンのリスト。
exclude_directories int。 デフォルトは 1
ディレクトリを除外するかどうかを示すフラグ。
allow_empty デフォルトは unbound
glob パターンが何も一致しないことを許可するかどうか。`allow_empty` が False の場合、個々の include パターンは何かと一致する必要があり、最終的な結果は空でない必要があります(`exclude` パターンのマッチが除外された後)。

module_name

string module_name()

このパッケージが含まれるリポジトリに関連付けられた Bazel モジュールの名前。このパッケージが MODULE.bazel ではなく WORKSPACE で定義されたリポジトリからのものである場合、これは空になります。モジュール拡張機能によって生成されたリポジトリの場合、これは拡張機能をホストするモジュールの名前です。module_ctx.modules に表示される module.name フィールドと同じです。 None を返す場合があります。

module_version

string module_version()

このパッケージが含まれるリポジトリに関連付けられた Bazel モジュールのバージョン。このパッケージが MODULE.bazel ではなく WORKSPACE で定義されたリポジトリからのものである場合、これは空になります。モジュール拡張機能によって生成されたリポジトリの場合、これは拡張機能をホストするモジュールのバージョンです。module_ctx.modules に表示される module.version フィールドと同じです。None を返す場合があります。

パッケージ

unknown package(**kwargs)

パッケージ内のすべてのルールに適用されるメタデータを宣言します。パッケージ(BUILD ファイル)内で呼び出すことができるのは 1 回のみです。呼び出す場合は、BUILD ファイルの最初の呼び出しにする必要があります(load() ステートメントの直後)。

パラメータ

パラメータ 説明
kwargs 必須
適用可能な引数については、ビルド百科事典の package() 関数をご覧ください。

package_default_visibility

List package_default_visibility()

評価対象のパッケージのデフォルトの可視性を返します。これは、パッケージ自体を含むように拡張された package()default_visibility パラメータの値です。

package_group

None package_group(*, name, packages=[], includes=[])

この関数は、パッケージのセットを定義し、グループにラベルを割り当てます。ラベルは visibility 属性で参照できます。

パラメータ

パラメータ 説明
name 文字列。 必須
このルールの一意の名前。
packages 文字列シーケンス。デフォルトは[]
。このグループ内のパッケージの完全な列挙。
includes 文字列シーケンス。デフォルトは[]
。このグループに含まれる他のパッケージ グループ。

package_name

string package_name()

評価対象のパッケージの名前(リポジトリ名を除く)。たとえば、BUILD ファイル some/package/BUILD では、値は some/package になります。BUILD ファイルが .bzl ファイルで定義された関数を呼び出す場合、package_name() は呼び出し元の BUILD ファイル パッケージと一致します。ルート パッケージの場合、値は常に空の文字列になります。

package_relative_label

Label package_relative_label(input)

現在初期化されているパッケージ(現在のマクロが実行されている BUILD ファイル)のコンテキストで、入力文字列を Label オブジェクトに変換します。入力がすでに Label の場合は、変更されずに返されます。

この関数は、BUILD ファイルと、直接または間接的に呼び出すマクロを評価している間のみ呼び出すことができます。ルール実装関数などでは呼び出すことはできません。

この関数の結果は、BUILD ファイルで宣言されたターゲットのラベル値属性に指定された文字列を渡すことで生成される Label 値と同じです。

使用上の注意: この関数と Label() の違いは、Label()BUILD ファイルのパッケージではなく、呼び出し元の .bzl ファイルのパッケージのコンテキストを使用することです。コンパイラなど、マクロにハードコードされた固定ターゲットを参照する必要がある場合は、Label() を使用します。BUILD ファイルから提供されたラベル文字列を Label オブジェクトに正規化する必要がある場合は、package_relative_label() を使用します。(BUILD ファイルまたは呼び出し元の .bzl ファイル以外のパッケージのコンテキストで文字列を Label に変換する方法はありません。そのため、外部マクロでは、ラベル文字列ではなく Label オブジェクトを内部マクロに渡すことをおすすめします。)ctx.package_relative_label() は、ルールまたはアスペクトの実装関数内で同じ機能を提供します。

パラメータ

パラメータ 説明
input 文字列、または Label。 必須
入力ラベル文字列または Label オブジェクト。Label オブジェクトが渡された場合は、そのまま返されます。

repo_name

string repo_name()

現在評価されているパッケージを含むリポジトリの正規名(先頭に @ 記号は付きません)。

repository_name

string repository_name()

試験運用 。この API は試験運用版であり、随時変更される可能性があります。依存しないでください。--+incompatible_enable_deprecated_label_apis
非推奨。 を設定すると、試験運用版として有効になる場合があります。代わりに repo_name を使用することをおすすめします。repo_name には不要な先頭の @ 記号は含まれませんが、それ以外は同じように動作します。

現在評価されているパッケージを含むリポジトリの正規名(先頭に 1 つの @ 記号(@)が付いています)。たとえば、WORKSPACE スタンザ local_repository(name='local', path=...) によって呼び出されるパッケージでは、@local に設定されます。メイン リポジトリのパッケージでは、@ に設定されます。

select

unknown select(x, no_match_error='')

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

パラメータ

パラメータ 説明
x dict。 必須
構成条件を値にマッピングする dict。各キーは、config_setting または constraint_value インスタンスを識別する Label またはラベル文字列です。文字列の代わりに Label を使用する場合については、マクロに関するドキュメントをご覧ください。--incompatible_resolve_select_keys_eagerly が有効になっている場合、キーは Label の呼び出しを含むファイルのパッケージを基準とした select オブジェクトに解決されます。
no_match_error 文字列。 デフォルトは ''
条件が一致しない場合に報告するカスタムエラー(省略可)。

サブパッケージ

sequence subpackages(*, include, exclude=[], allow_empty=False)

ファイル システム ディレクトリの深さに関係なく、現在のパッケージのすべての直接サブパッケージの新しい変更可能なリストを返します。返されるリストは並べ替えられ、現在のパッケージを基準としたサブパッケージの名前が含まれます。この関数を直接呼び出すのではなく、bazel_skylib.subpackages モジュールのメソッドを使用することをおすすめします。

パラメータ

パラメータ 説明
include 文字列シーケンス。 必須
サブパッケージ スキャンに含める glob パターンのリスト。
exclude [sequence] of [string]s; default is []
The list of glob patterns to exclude from subpackages scan.
allow_empty bool。 デフォルトは False
呼び出しが空のリストを返した場合に失敗するかどうか。デフォルトでは、空のリストは、subpackages() の呼び出しが不要な BUILD ファイルでエラーが発生する可能性があることを示します。 true に設定すると、この関数はその場合に成功します。