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
を返します。ここで、不変の辞書のようなオブジェクトとは、辞書のような反復処理、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 へのルール属性値の変換とは、微妙に異なる点にも注意してください。1 つは計算済みデフォルトに使用され、もう 1 つは ctx.attr.foo
で使用されます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
required ターゲットの名前。 |
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
フラグが設定されている場合、代わりに同じ内容の新しい可変の dict を返します。
注: 可能であれば、この関数の使用は避けてください。これにより、BUILD ファイルが不安定になり、順序に依存することになります。さらに、 --noincompatible_existing_rules_immutable_view
フラグが設定されていると、この関数は特にループ内で呼び出されると、非常に高コストになる可能性があります。
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)このパッケージに属し、他のパッケージにエクスポートされるファイルのリストを指定します。
パラメータ
パラメータ | 説明 |
---|---|
srcs
|
sequence of strings (必須)エクスポートするファイルのリスト。 |
visibility
|
sequence; or None ;
default = None可視性の宣言を指定できます。ファイルは、指定したターゲットに表示されます。公開設定が指定されていない場合、ファイルはすべてのパッケージに表示されます。 |
licenses
|
sequence of strings; or None ;
default = None指定するライセンス。 |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob は、現在のパッケージ内のすべてのファイルのリストのうち、次のような新しい可変の並べ替え済みリストを返します。
include
の少なくとも 1 つのパターンと一致します。exclude
のどのパターンとも一致しない(デフォルト[]
)。
exclude_directories
引数が有効な場合(1
に設定した場合)、ディレクトリ タイプのファイルは結果から除外されます(デフォルト: 1
)。
パラメータ
パラメータ | 説明 |
---|---|
include
|
sequence of strings ;
default = []含める glob パターンのリスト。 |
exclude
|
sequence of strings ;
default = []除外する glob パターンのリスト。 |
exclude_directories
|
default = 1 ディレクトリを除外するかどうかのフラグ。 |
allow_empty
|
default = unbound glob パターンが何も一致しないことを許可するかどうか。「allow_empty」が False の場合、個々の include パターンが一致し、最終結果が空でない必要があります(「exclude」パターンの一致が除外された後)。 |
module_name
string native.module_name()このパッケージが存在するリポジトリに関連付けられている Bazel モジュールの名前。このパッケージが MODULE.bazel ではなく WORKSPACE で定義されたリポジトリにある場合は空です。モジュール拡張機能によって生成されたリポジトリの場合、これは拡張機能をホストするモジュールの名前です。これは、
module_ctx.modules
の module.name
フィールドと同じです。
None
を返す場合があります。module_version
string native.module_version()このパッケージが存在するリポジトリに関連付けられている Bazel モジュールのバージョン。このパッケージが MODULE.bazel ではなく WORKSPACE で定義されたリポジトリにある場合は空です。モジュール拡張機能によって生成されたリポジトリの場合、これは拡張機能をホストするモジュールのバージョンです。これは、
module_ctx.modules
の module.version
フィールドと同じです。
None
を返す場合があります。package_group
None native.package_group(name, packages=[], includes=[])この関数は一連のパッケージを定義し、グループにラベルを割り当てます。ラベルは
visibility
属性で参照できます。
パラメータ
パラメータ | 説明 |
---|---|
name
|
必須 このルールの一意の名前。 |
packages
|
sequence of strings ;
default = []このグループ内のパッケージの完全な列挙。 |
includes
|
sequence of strings ;
default = []これに含まれる他のパッケージ グループ。 |
package_name
string native.package_name()評価対象のパッケージの名前(リポジトリ名なし)。たとえば、BUILD ファイル
some/package/BUILD
では、値は some/package
になります。BUILD ファイルが .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; or Label (必須)入力ラベル文字列またはラベル オブジェクト。ラベル オブジェクトが渡された場合は、そのまま返されます。 |
repo_name
string native.repo_name()現在評価されているパッケージを含むリポジトリの正規名。先頭にアットマークは付けません。
repository_name
string native.repository_name()試験運用版。この API は試験運用版であり、いつでも変更される可能性があります。これに頼らないでください。試験運用版で有効にするには、
--+incompatible_enable_deprecated_label_apis
非推奨を設定します。代わりに
repo_name
を使用することをおすすめします。先頭に偽のアットマークは含まれませんが、それ以外の場合は同じように動作します。現在評価されているパッケージを含むリポジトリの正規名。先頭に 1 つのアットマーク(@
)を付けます。たとえば、WORKSPACE スタンザ local_repository(name='local', path=...)
によって存在するように呼び出されるパッケージでは、@local
に設定されます。メイン リポジトリのパッケージでは、@
に設定されます。
サブパッケージ
sequence native.subpackages(include, exclude=[], allow_empty=False)ファイル システム ディレクトリの深さに関係なく、現在のパッケージのすべての直接サブパッケージの新しい変更可能なリストを返します。返されるリストは並べ替えられ、現在のパッケージを基準とするサブパッケージの名前を含みます。この関数を直接呼び出すよりも、bazel_skylib.subpackages モジュールのメソッドを使用することをおすすめします。
パラメータ
パラメータ | 説明 |
---|---|
include
|
sequence of strings 、必須サブパッケージ スキャンに含める glob パターンのリスト。 |
exclude
|
sequence of strings ;
default = []サブパッケージ スキャンから除外する glob パターンのリスト。 |
allow_empty
|
default = False 呼び出しが空のリストを返した場合に失敗するかどうか。デフォルトでは、空のリストは、subpackages() の呼び出しが不要な BUILD ファイルの潜在的なエラーを示します。true に設定すると、この関数が成功します。 |