BUILD ファイルで使用できるメソッド。追加の関数とビルドルールについては、Build Encyclopedia もご覧ください。これらは BUILD ファイルでも使用できます。
メンバー
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- 選択
- サブパッケージ
depset
depset depset(direct=None, order="default", *, transitive=None)depset を作成します。
direct
パラメータは depset の直接要素のリストであり、transitive
パラメータは、作成された depset の間接要素となる depset のリストです。depset がリストに変換されるときに返される要素の順序は、order
パラメータで指定します。詳細については、Depset の概要をご覧ください。depset のすべての要素(直接的および間接的)は、式 type(x)
によって取得されるものと同じ型である必要があります。
ハッシュベースのセットを使用してイテレーション中に重複を排除するため、depset のすべての要素をハッシュ可能にする必要があります。ただし、現在のところ、この不変条件は、すべてのコンストラクタで一貫してチェックされるわけではありません。整合性チェックを有効にするには、--compatible_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
を返します。ここで、不変の dict に似たオブジェクトとは、辞書に似た反復処理(len(x)
、name in x
、x[name]
、x.get(name)
、x.items()
、x.keys()
、x.values()
をサポートする、高度に不変のオブジェクト x
)を意味します。
結果には、非公開の属性(名前が文字で始まらない)と、表現できないレガシー属性タイプを除き、各属性のエントリが含まれます。さらに、この辞書には、ルール インスタンスの name
と kind
のエントリ('cc_binary'
など)が含まれています。
結果の値は、次のように属性値を表します。
- str、int、bool タイプの属性はそのまま表現されます。
- ラベルは、同じパッケージ内のターゲットの場合は
':foo'
の形式、別のパッケージ内のターゲットの場合は'//pkg:name'
の形式に変換されます。 - リストはタプルとして表され、辞書は新しい可変辞書に変換されます。これらの要素は、同じ方法で再帰的に変換されます。
select
値は、上記のように内容が変換されて返されます。- ルールのインスタンス化時に値が指定されず、デフォルト値が計算された属性は結果から除外されます。(計算されたデフォルトは、分析フェーズまで計算できません)。
可能であれば、この関数はルール ファイナライザのシンボリック マクロの実装関数でのみ使用してください。他のコンテキストでのこの機能の使用は推奨されません。今後の Bazel リリースで無効になります。BUILD
ファイルは脆弱で、順序に依存します。また、内部形式から Starlark へのルール属性値の他の 2 つの変換とは微妙に異なることに注意してください。1 つは計算されたデフォルトで使用され、もう 1 つは ctx.attr.foo
で使用されます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
string;
必須 ターゲットの名前。 |
existing_rules
unknown existing_rules()このスレッドのパッケージでこれまでにインスタンス化されたルールを記述する不変の辞書型オブジェクトを返します。辞書型オブジェクトの各エントリは、ルール インスタンスの名前を
existing_rule(name)
によって返される結果にマッピングします。ここで、不変の dict に似たオブジェクトとは、辞書に似た反復処理(len(x)
、name in x
、x[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
(デフォルト[]
)のどのパターンにも一致しません。
exclude_directories
引数が有効(1
に設定)の場合、ディレクトリ型のファイルは結果から除外されます(デフォルトは 1
)。
パラメータ
パラメータ | 説明 |
---|---|
include
|
文字列のシーケンス。デフォルトは [] 。含める glob パターンのリスト。 |
exclude
|
文字列のシーケンス。
デフォルトは [] 除外する glob パターンのリスト。 |
exclude_directories
|
int;
デフォルトは 1 です ディレクトリを除外するかどうかのフラグ。 |
allow_empty
|
デフォルトは unbound glob パターンで何も一致しないようにするかどうか。「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
|
string;
必須 このルールの一意の名前。 |
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
に変換する方法はありません。そのため、外部マクロは、ラベル文字列ではなく、常にラベル オブジェクトを内部マクロに渡す必要があります)。
パラメータ
パラメータ | 説明 |
---|---|
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
|
dict;
必須 構成条件を値にマッピングする辞書。各キーは、config_setting または constraint_value インスタンスを識別するラベルまたはラベル文字列です。文字列の代わりにラベルを使用するタイミングについては、マクロに関するドキュメントをご覧ください。 |
no_match_error
|
文字列。デフォルトは '' 。条件が一致しなかった場合に報告するカスタム エラー(省略可)。 |
サブパッケージ
sequence subpackages(include, exclude=[], allow_empty=False)ファイル システムのディレクトリの深さに関係なく、現在のパッケージのすべての直接サブパッケージの新しい変更可能なリストを返します。返されたリストが並べ替えられ、現在のパッケージに関連するサブパッケージの名前が含まれます。この関数を直接呼び出すのではなく、bazel_skylib.subpackages モジュールのメソッドを使用することをおすすめします。
パラメータ
パラメータ | 説明 |
---|---|
include
|
文字列のシーケンス。
必須 サブパッケージ スキャンに含める glob パターンのリスト。 |
exclude
|
文字列のシーケンス。
デフォルトは [] サブパッケージ スキャンから除外する glob パターンのリスト。 |
allow_empty
|
bool;
デフォルトは False 呼び出しが空のリストを返した場合に失敗するかどうか。デフォルトでは、空のリストは、subpackages() の呼び出しが不要な BUILD ファイルでエラーが発生する可能性があることを示します。true に設定すると、その場合、この関数は成功します。 |