先住民

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

ネイティブ ルールや他のパッケージ ヘルパー関数をサポートする組み込みモジュール。すべてのネイティブルールは、このモジュールの関数として表示されます(例: native.cc_library)。ネイティブ モジュールは読み込みフェーズでのみ使用できます(つまり、マクロで使用でき、ルールの実装では使用できません)。属性は None 値を無視し、属性が設定されていないものとして扱います。
次の関数も使用できます。

メンバー

existing_rule

unknown native.existing_rule(name)

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

ここで、不変の dict に似たオブジェクトとは、辞書に似た反復処理(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 native.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 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)

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 native.module_name()

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

module_version

string native.module_version()

このパッケージが含まれているリポジトリに関連付けられている Bazel モジュールのバージョン。このパッケージが MODULE.bazel ではなく WORKSPACE で定義されたリポジトリのものである場合、これは空になります。モジュール拡張機能によって生成されたリポジトリの場合、これは拡張機能をホストするモジュールのバージョンです。これは、module_ctx.modulesmodule.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()

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