先住民

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

メンバー

existing_rule

unknown native.existing_rule(name)

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

ここで、不変の dict のようなオブジェクトとは、dict のような反復処理、len(x)name in xx[name]x.get(name)x.items()x.keys()x.values() をサポートする、深く不変のオブジェクト x を意味します。

結果には、非公開のもの(名前が文字で始まらないもの)と、表現できない従来の属性タイプを除き、各属性のエントリが含まれます。また、dict には、ルール インスタンスの namekind'cc_binary' など)のエントリが含まれます。

結果の値は、次のように属性値を表します。

  • str、int、bool 型の属性はそのまま表されます。
  • ラベルは、同じパッケージ内のターゲットの場合は ':foo' 形式の文字列に、別のパッケージ内のターゲットの場合は '//pkg:name' 形式の文字列に変換されます。
  • リストはタプルとして表され、dict は新しい変更可能な dict に変換されます。要素は同じ方法で再帰的に変換されます。
  • select 値は、上記のように変換されたコンテンツとともに返されます。
  • ルールのインスタンス化時に値が指定されず、デフォルト値が計算される属性は、結果から除外されます(計算されたデフォルトは、分析フェーズまで計算できません)。

可能であれば、この関数はルール ファイナライザ シンボリック マクロの実装関数でのみ使用してください。他のコンテキストでこの関数を使用することはおすすめしません。将来の Bazel リリースで無効になります。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。また、ルール属性値を内部形式から Starlark に変換する他の 2 つの変換(計算されたデフォルトで使用されるものと ctx.attr.foo で使用されるもの)とは微妙に異なることに注意してください。

パラメータ

パラメータ 説明
name 文字列。 必須
ターゲットの名前。

existing_rules

unknown native.existing_rules()

このスレッドのパッケージでインスタンス化されたルールを記述する不変の dict のようなオブジェクトを返します。dict のようなオブジェクトの各エントリは、ルール インスタンスの名前を existing_rule(name) によって返される結果にマッピングします。

ここで、不変の dict のようなオブジェクトとは、dict のような反復処理、len(x)name in xx[name]x.get(name)x.items()x.keys()x.values() をサポートする、深く不変のオブジェクト x を意味します。

可能であれば、この関数はルール ファイナライザ シンボリック マクロの実装関数でのみ使用してください。他のコンテキストでこの関数を使用することはおすすめしません。将来の Bazel リリースで無効になります。これにより、BUILD ファイルが脆弱になり、順序に依存するようになります。

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(デフォルト [])内のどのパターンにも一致しない。
If the exclude_directories argument is enabled (set to 1), files of type directory will be omitted from the results (default 1).

パラメータ

パラメータ 説明
include [sequence] of [string]s; default is []
The list of glob patterns to include.
exclude 文字列シーケンス。デフォルトは[]
。除外する glob パターンのリスト。
exclude_directories int。 デフォルトは 1
ディレクトリを除外するかどうかを示すフラグ。
allow_empty デフォルトは 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_default_visibility

List native.package_default_visibility()

評価対象のパッケージのデフォルトの可視性を返します。これは、パッケージ自体を含むように拡張された default_visibilitypackage() パラメータの値です。

package_group

None native.package_group(*, name, packages=[], includes=[])

この関数は、パッケージのセットを定義し、グループにラベルを割り当てます。ラベルは visibility 属性で参照できます。

パラメータ

パラメータ 説明
name 文字列。 必須
このルールの一意の名前。
packages 文字列シーケンス。デフォルトは[]
。このグループ内のパッケージの完全な列挙。
includes 文字列シーケンス。デフォルトは[]
。このグループに含まれる他のパッケージ グループ。

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 に変換する方法はありません。そのため、外部マクロでは、ラベル文字列ではなく Label オブジェクトを内部マクロに渡すことをおすすめします)。

パラメータ

パラメータ 説明
input 文字列、または Label。 必須
入力ラベル文字列または 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 に設定されます。メイン リポジトリのパッケージでは、@ に設定されます。

subpackages

sequence native.subpackages(*, include, exclude=[], allow_empty=False)

ファイル システム ディレクトリの深さに関係なく、現在のパッケージのすべての直接サブパッケージの新しい変更可能なリストを返します。返されるリストは並べ替えられ、現在のパッケージに対するサブパッケージの名前が含まれます。この関数を直接呼び出すのではなく、bazel_skylib.subpackages モジュールのメソッドを使用することをおすすめします。

パラメータ

パラメータ 説明
include 文字列シーケンス。 必須
サブパッケージ スキャンに含める glob パターンのリスト。
exclude [sequence] of [string]s; default is []
The list of glob patterns to exclude from subpackages scan.
allow_empty bool。 デフォルトは False
呼び出しが空のリストを返した場合に失敗するかどうか。デフォルトでは、空のリストは、subpackages() の呼び出しが不要な BUILD ファイルでエラーが発生する可能性があることを示します。true に設定すると、この関数はその場合に成功します。