先住民

ネイティブ ルールやその他のパッケージ ヘルパー関数をサポートする組み込みモジュール。すべてのネイティブ ルールは、このモジュールの関数として記述されます。たとえば、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) によって返される結果にマッピングします。

ここで、不変の dict に似たオブジェクトとは、辞書に似た反復処理(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 sequence of strings、 必須
エクスポートするファイルのリスト。
visibility sequence; or None、 デフォルト = None
公開設定を指定できます。ファイルは、指定したターゲットに表示されます。公開設定が指定されていない場合、ファイルはすべてのパッケージに表示されます。
licenses sequence of strings; or None、 デフォルト = 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、 デフォルト = []
含める glob パターンのリスト。
exclude sequence of strings、 デフォルト = []
除外する glob パターンのリスト。
exclude_directories デフォルト = 1
ディレクトリを除外するかどうかのフラグ。
allow_empty デフォルト = バインドなし
glob パターンが何も一致しないことを許可するかどうか。`allow_empty` が False の場合は、個々のインクルード パターンがなんらかの値に一致する必要があり、最終的な結果は(`exclude` パターンの一致が除外された後)空でない必要があります。

package_group

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

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

パラメータ

パラメータ 説明
name 必須
このルールの一意の名前。
packages sequence of strings、 デフォルト = []
このグループ内のパッケージの完全な列挙。
includes sequence of strings、 デフォルト = []
これに含まれる他のパッケージ グループ。

package_name

string native.package_name()

評価対象のパッケージの名前。たとえば、ビルド ファイル some/package/BUILD では、値は some/package になります。BUILD ファイルが .bzl ファイルで定義された関数を呼び出す場合、package_name() は呼び出し元の BUILD ファイル パッケージと一致します。この関数は非推奨の変数 PACKAGE_NAME と同等です。

repository_name

string native.repository_name()

ルールまたはビルド拡張機能の呼び出し元リポジトリの名前。たとえば、WORKSPACE スタンザ local_repository(name='local', path=...) によって呼び出されたパッケージでは、@local に設定されます。メイン リポジトリのパッケージでは、@ に設定されます。この関数は非推奨の変数 REPOSITORY_NAME と同等です。

サブパッケージ

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

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

パラメータ

パラメータ 説明
include sequence of strings、 必須
サブパッケージ スキャンに含める glob パターンのリスト。
exclude sequence of strings、 デフォルト = []
サブパッケージ スキャンから除外する glob パターンのリスト。
allow_empty デフォルト = False
呼び出しが空のリストを返した場合に失敗するかどうか。デフォルトでは、空のリストは BUILD ファイルで潜在的に、subpackages() の呼び出しが過剰であることを示しています。true に設定すると、この関数が成功する可能性があります。