BUILD ファイル

問題を報告する Nightly · 8.4 · 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 デフォルトは "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 を意味します。

--noincompatible_existing_rules_immutable_view フラグが設定されている場合、代わりに同じ内容の新しいミュータブルな辞書を返します。

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

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

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

可能な限り、この関数の使用は避けてください。これにより、BUILD ファイルが脆弱になり、順序依存になります。また、ルール属性値を内部形式から Starlark に変換する他の 2 つの変換(計算されたデフォルトで使用されるものと ctx.attr.foo で使用されるもの)とは微妙に異なることに注意してください。

パラメータ

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

existing_rules

unknown existing_rules()

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

ここで、不変の辞書のようなオブジェクトとは、辞書のようなイテレーション、len(x)name in xx[name]x.get(name)x.items()x.keys()x.values() をサポートする、深く不変のオブジェクト x を意味します。

--noincompatible_existing_rules_immutable_view フラグが設定されている場合、代わりに同じ内容の新しいミュータブルな辞書を返します。

注: 可能であれば、この関数の使用は避けてください。これにより、BUILD ファイルが脆弱になり、順序依存になります。さらに、 --noincompatible_existing_rules_immutable_view フラグが設定されている場合、この関数は非常にコストがかかる可能性があります(特にループ内で呼び出された場合)。

exports_files

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

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

パラメータ

パラメータ 説明
srcs stringシーケンス。必須
エクスポートするファイルのリスト。
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 デフォルトは 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 を返すことがあります。

package_group

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

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

パラメータ

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

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

サブパッケージ

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

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

パラメータ

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