ネイティブ ルールや他のパッケージ ヘルパー関数をサポートする組み込みモジュール。すべてのネイティブルールは、このモジュールの関数として表示されます(例: native.cc_library
)。ネイティブ モジュールは読み込みフェーズでのみ使用できます(つまり、マクロで使用でき、ルールの実装では使用できません)。属性は None
値を無視し、属性が設定されていないものとして扱います。
次の関数も使用できます。
メンバー
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- サブパッケージ
existing_rule
unknown native.existing_rule(name)
None
を返します。ここで、不変の dict に似たオブジェクトとは、辞書に似た反復処理(len(x)
、name in x
、x[name]
、x.get(name)
、x.items()
、x.keys()
、x.values()
をサポートする、高度に不変のオブジェクト x
)を意味します。
--noincompatible_existing_rules_immutable_view
フラグが設定されている場合は、同じ内容の新しい変更可能な辞書を返します。
結果には、非公開の属性(名前が文字で始まらない)と、表現できないレガシー属性タイプを除き、各属性のエントリが含まれます。さらに、この辞書には、ルール インスタンスの name
と kind
のエントリ('cc_binary'
など)が含まれています。
結果の値は、次のように属性値を表します。
- str、int、bool 型の属性はそのまま表されます。
- ラベルは、同じパッケージ内のターゲットの場合は
':foo'
の形式、異なるパッケージ内のターゲットの場合は'//pkg:name'
の形式の文字列に変換されます。 - リストはタプルとして表され、辞書は新しい可変辞書に変換されます。要素は同じ方法で再帰的に変換されます。
select
値は、上記のように内容が変換されて返されます。- ルールのインスタンス化時に値が指定されず、デフォルト値が計算された属性は結果から除外されます。(計算されたデフォルトは、分析フェーズまで計算できません)。
可能な限り、この関数は使用しないでください。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。また、内部形式から Starlark へのルール属性値の他の 2 つの変換とは微妙に異なることに注意してください。1 つは計算されたデフォルトで使用され、もう 1 つは ctx.attr.foo
で使用されます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
必須 ターゲットの名前。 |
existing_rules
unknown native.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
フラグが設定されている場合は、同じ内容の新しい変更可能な辞書を返します。
注: 可能であれば、この関数の使用は避けてください。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。さらに、 --noincompatible_existing_rules_immutable_view
フラグが設定されている場合、この関数は非常にコストが高くなる可能性があります(特にループ内で呼び出される場合はそうです)。
exports_files
None
native.exports_files(srcs, visibility=None, licenses=None)
パラメータ
パラメータ | 説明 |
---|---|
srcs
|
文字列のシーケンス。必須 エクスポートするファイルのリスト。 |
visibility
|
シーケンス、または None (デフォルトは None )可視性宣言を指定できます。指定したターゲットにはファイルが表示されます。公開設定を指定しない場合は、すべてのパッケージにファイルが表示されます。 |
licenses
|
文字列のシーケンス。または None 。デフォルトは None 指定するライセンス。 |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
include
の少なくとも 1 つのパターンと一致します。exclude
(デフォルト[]
)のどのパターンにも一致しません。
exclude_directories
引数が有効(1
に設定)の場合、ディレクトリ型のファイルは結果から除外されます(デフォルトは 1
)。
パラメータ
パラメータ | 説明 |
---|---|
include
|
文字列のシーケンス。デフォルトは [] 含める glob パターンのリスト。 |
exclude
|
文字列のシーケンス。デフォルトは [] 除外する glob パターンのリスト。 |
exclude_directories
|
デフォルトは 1 です。ディレクトリを除外するかどうかのフラグ。 |
allow_empty
|
デフォルトは unbound です。glob パターンが何も一致しないことを許可するかどうかを指定します。「allow_empty」が False の場合、各個別の含めるパターンが何かに一致する必要があり、また最終的な結果が空でないこと(「除外」パターンの一致が除外された後)も必要です。 |
module_name
string native.module_name()
module_ctx.modules
の module.name
フィールドと同じです。
None
を返す場合があります。module_version
string native.module_version()
module_ctx.modules
の module.version
フィールドと同じです。
None
を返す場合があります。package_group
None
native.package_group(name, packages=[], includes=[])
visibility
属性で参照できます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
必須 このルールの一意の名前。 |
packages
|
文字列のシーケンス。デフォルトは [] 。このグループ内のパッケージの完全な列挙。 |
includes
|
文字列のシーケンス。デフォルトは [] 。このパッケージ グループに含まれる他のパッケージ グループ。 |
package_name
string native.package_name()
some/package/BUILD
では、値は some/package
になります。ビルド ファイルが .bzl ファイルで定義された関数を呼び出す場合、package_name()
は呼び出し元の BUILD ファイル パッケージと一致します。
package_relative_label
Label native.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 オブジェクトが渡された場合は、そのまま返されます。 |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis
を設定することで、試験運用版として有効にできます。非推奨代わりに
repo_name
を使用することをおすすめします。この文字列には不要な先頭のアットマークが含まれていませんが、それ以外は同じ動作をします。現在評価中のパッケージを含むリポジトリの正規名。先頭に 1 つのアットマーク(@
)が付いています。たとえば、WORKSPACE スタンザ local_repository(name='local', path=...)
によって呼び出されたパッケージでは、@local
に設定されます。メイン リポジトリのパッケージでは、@
に設定されます。
サブパッケージ
sequence native.subpackages(include, exclude=[], allow_empty=False)
パラメータ
パラメータ | 説明 |
---|---|
include
|
文字列のシーケンス。必須 サブパッケージ スキャンに含める glob パターンのリスト。 |
exclude
|
文字列のシーケンス。デフォルトは [] 。サブパッケージ スキャンから除外する glob パターンのリスト。 |
allow_empty
|
デフォルトは False です。呼び出しから空のリストが返された場合に失敗するかどうか。デフォルトでは、空のリストは、subpackages() の呼び出しが不要な BUILD ファイルでエラーが発生する可能性があることを示します。true に設定すると、その場合、この関数は成功します。 |