BUILD ファイル

問題を報告 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

メンバー

depset

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

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

deps のすべての要素(直接および間接)は、式 type(x) で取得される同じ型でなければなりません。

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

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

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

パラメータ

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

existing_rule

unknown existing_rule(name)

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

ここで、不変の辞書のようなオブジェクトとは、辞書のようなイテレーション、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' 形式の文字列に変換されます。
  • リストはタプルとして表され、辞書は新しい可変辞書に変換されます。要素も同様に再帰的に変換されます。
  • select 値は、上記のように変換されたコンテンツとともに返されます。
  • ルールのインスタンス化時に値が指定されず、デフォルト値が計算された属性は、結果から除外されます。(計算されたデフォルトは、分析フェーズまで計算できません)。

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

パラメータ

パラメータ 説明
name string; 必須
ターゲットの名前。

existing_rules

unknown existing_rules()

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

ここで、不変の辞書のようなオブジェクトとは、辞書のようなイテレーション、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 stringsequence。必須
エクスポートするファイルのリスト。
visibility sequence、または None。デフォルトは None
です。 可視性宣言を指定できます。ファイルは、指定したターゲットに表示されます。可視性を指定しない場合、ファイルはすべてのパッケージから見えるようになります。
licenses stringsequence、または None。デフォルトは None
です。指定するライセンス。

glob

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

Glob は、現在のパッケージ内のすべてのファイルについて、新しい、変更可能な、並べ替えられたリストを返します。
  • include の少なくとも 1 つのパターンに一致します。
  • exclude のどのパターンにも一致しません(デフォルトは [])。
exclude_directories 引数が有効(1 に設定)の場合、ディレクトリ タイプのファイルは結果から除外されます(デフォルトは 1)。

パラメータ

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

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 必須
該当する引数については、Build Encyclopedia の package() 関数を参照してください。

package_default_visibility

List package_default_visibility()

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

package_group

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

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

パラメータ

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

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 オブジェクトを内部マクロに渡すことを優先する必要があります)。

パラメータ

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

repo_name

string repo_name()

現在評価中のパッケージを含むリポジトリの正規名。先頭の @ 記号は含まれません。

repository_name

string repository_name()

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

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

選択

unknown select(x, no_match_error='')

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

パラメータ

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

サブパッケージ

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

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

パラメータ

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