メンバー
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- select
- サブパッケージ
依存関係
depset depset(direct=None, order="default", *, transitive=None)depset を作成します。
direct
パラメータは、依存関係セットの直接要素のリストです。transitive
パラメータは、その要素が、作成されたデプセットの間接要素になるデプセットのリストです。depset をリストに変換したときに要素が返される順序は、order
パラメータで指定されます。詳細については、依存関係の概要をご覧ください。依存関係のすべての要素(直接的および間接的)は、式 type(x)
で取得される同じ型でなければなりません。
反復処理において重複を排除するためにハッシュベースのセットが使用されるため、depset のすべての要素をハッシュ可能にする必要があります。ただし、この不変条件は現在、すべてのコンストラクタで一貫してチェックされているわけではありません。整合性チェックを有効にするには、--compatible_always_check_depset_elements フラグを使用します。これは今後のリリースでのデフォルトの動作になります。問題 10313 をご覧ください。
また、現時点では要素を変更できない必要がありますが、今後この制限は緩和される予定です。
作成された依存関係の順序は、transitive
依存関係の順序と互換性が必要です。"default"
の注文は他の注文と互換性があり、他のすべての注文はご自身にのみ対応しています。
パラメータ
パラメータ | 説明 |
---|---|
direct
|
sequence; または None 。デフォルトは None 依存関係の direct 要素のリスト。 |
order
|
デフォルトは "default" です。新しいデプセットの走査戦略。設定可能な値については、こちらをご覧ください。 |
transitive
|
depset のシーケンスまたは None 。デフォルトは None 。その要素が depset の間接要素になる依存関係のリスト。 |
existing_rule
unknown existing_rule(name)このスレッドのパッケージ内でインスタンス化されたルールの属性を表す不変の dict 形式のオブジェクトを返します。その名前のルール インスタンスが存在しない場合は
None
を返します。ここで、不変の辞書型のオブジェクトとは、辞書型の反復処理、len(x)
、name in x
、x[name]
、x.get(name)
、x.items()
、x.keys()
、x.values()
をサポートする高度に不変のオブジェクト x
です。
--noincompatible_existing_rules_immutable_view
フラグが設定されている場合、代わりに同じ内容の新しい可変の dict が返されます。
結果には、各属性のエントリが含まれます。ただし、非公開の属性(名前が文字で始まらない)と、表現できない以前の属性の型はいくつかあります。また、辞書にはルール インスタンスの name
と kind
のエントリが含まれます(例: 'cc_binary'
)。
結果の値は、属性値を次のように表します。
- str、int、bool 型の属性はそのまま表されます。
- ラベルは、同じパッケージ内のターゲットの場合は
':foo'
の形式、別のパッケージ内のターゲットの場合は'//pkg:name'
という形式の文字列に変換されます。 - リストはタプルとして表現され、辞書は新しい変更可能な辞書に変換されます。これらの要素は同じ方法で再帰的に変換されます。
select
値は、上記のように変換された内容で返されます。- ルールのインスタンス化時に値が指定されず、デフォルト値が計算される属性は結果から除外されます。(計算済みデフォルト値は、分析フェーズまで計算できません)。
可能であれば、この関数の使用は避けてください。これにより、BUILD ファイルが不安定になり、順序に依存しなくなります。また、内部形式から Starlark へのルール属性値の 2 つの変換(1 つは計算済みデフォルトに使用され、もう 1 つは ctx.attr.foo
で使用される)とは微妙に異なる点にも注意してください。
パラメータ
パラメータ | 説明 |
---|---|
name
|
required ターゲットの名前。 |
existing_rules
unknown existing_rules()このスレッドのパッケージでこれまでにインスタンス化されたルールを記述する不変の辞書に似たオブジェクトを返します。辞書型のオブジェクトの各エントリは、ルール インスタンスの名前を
existing_rule(name)
によって返される結果にマッピングします。ここで、不変の辞書型のオブジェクトとは、辞書型の反復処理、len(x)
、name in x
、x[name]
、x.get(name)
、x.items()
、x.keys()
、x.values()
をサポートする高度に不変のオブジェクト x
です。
--noincompatible_existing_rules_immutable_view
フラグが設定されている場合、代わりに同じ内容の新しい可変の dict が返されます。
注: 可能であれば、この関数の使用は避けてください。これにより、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 の場合、個々の include パターンが 1 つに一致する必要があり、最終結果も(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
を返す場合があります。package_group
None
package_group(name, packages=[], includes=[])
この関数は一連のパッケージを定義し、グループにラベルを割り当てます。ラベルは visibility
属性で参照できます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
required このルールの一意の名前。 |
packages
|
文字列のシーケンス(デフォルトは [] )。このグループ内のパッケージの完全な列挙。 |
includes
|
文字列のシーケンス。デフォルトは [] です。このパッケージに含まれる他のパッケージ グループ。 |
package_name
string package_name()評価されるパッケージの名前。たとえば、BUILD ファイル
some/package/BUILD
では、値は some/package
になります。BUILD ファイルが .bzl ファイルで定義された関数を呼び出す場合、package_name()
は呼び出し元の BUILD ファイル パッケージと一致します。この関数は、サポートが終了した変数 PACKAGE_NAME
と同等です。
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 オブジェクトがそのまま返されます。 |
repository_name
string repository_name()ルールまたはビルド拡張機能の呼び出し元のリポジトリの名前。たとえば、WORKSPACE スタンザ
local_repository(name='local', path=...)
によって存在が呼び出されるパッケージでは、@local
に設定されます。メイン リポジトリのパッケージでは、@
に設定されます。この関数は、サポートが終了した変数 REPOSITORY_NAME
と同等です。
select
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 に設定すると、そのような場合にこの関数は成功します。 |