BUILD ファイル

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

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

メンバー

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 をご覧ください。

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

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

パラメータ

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

existing_rule

unknown existing_rule(name)

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

ここで、変更不可の辞書型オブジェクトとは、辞書型の反復処理(len(x)name in xx[name]x.get(name)x.items()x.keys()x.values())をサポートする、変更不可のオブジェクト x を意味します。

--noincompatible_existing_rules_immutable_view フラグが設定されている場合は、同じ内容の新しい変更可能な辞書を返します。

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

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

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

可能な限り、この関数は使用しないでください。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。また、内部形式から Starlark へのルール属性値の他の 2 つの変換とは微妙に異なることに注意してください。1 つは計算されたデフォルトで使用され、もう 1 つは 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 文字列シーケンス。必須
エクスポートするファイルのリスト。
visibility sequence: または None: デフォルトは None です。
可視性の宣言を指定できます。指定したターゲットにはファイルが表示されます。公開設定を指定しない場合は、すべてのパッケージにファイルが表示されます。
licenses 文字列シーケンス。または 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
glob パターンで何も一致しないようにするかどうか。「allow_empty」が False の場合、各個別の含めるパターンが何かに一致する必要があり、また最終的な結果が空でないこと(「除外」パターンの一致が除外された後)も必要です。

module_name

string module_name()

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

module_version

string module_version()

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

package_group

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

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

パラメータ

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

package_name

string package_name()

評価対象のパッケージの名前(リポジトリ名なし)。たとえば、BUILD ファイル some/package/BUILD では、その値は some/package になります。ビルド ファイルが .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 に変換する方法はありません。そのため、外部マクロは、ラベル文字列ではなく、常にラベル オブジェクトを内部マクロに渡す必要があります)。

パラメータ

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

repo_name

string repo_name()

現在評価中のパッケージを含むリポジトリの正規名(先頭にアットマークなし)。

repository_name

string repository_name()

試験運用版。この API は試験運用版であり、いつでも変更される可能性があります。これに依存しないでください。--+incompatible_enable_deprecated_label_apis
を設定することで、試験運用版として有効にできます。非推奨代わりに repo_name を使用することをおすすめします。この文字列には不要な先頭のアットマークが含まれていませんが、それ以外は同じ動作をします。

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

選択

unknown select(x, no_match_error='')

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

パラメータ

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

サブパッケージ

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

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

パラメータ

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