追跡

ルールまたはアスペクトの実装関数に渡されるコンテキスト オブジェクト。現在のターゲットの分析に必要な情報とメソッドにアクセスできます。

特に、実装関数は現在のターゲットのラベル、属性、構成、依存関係のプロバイダにアクセスできます。出力ファイルと、出力ファイルを生成するアクションを宣言するメソッドが含まれています。

コンテキスト オブジェクトは、基本的に実装関数の呼び出しの間だけ存在します。関連付けられた関数の外部でこれらのオブジェクトにアクセスしても意味はありません。詳細については、ルールページをご覧ください。

メンバー

actions

actions ctx.actions

出力ファイルと、出力ファイルを生成するアクションを宣言するメソッドが含まれています。

aspect_ids

list ctx.aspect_ids

ターゲットに適用されるすべてのアスペクトの ID のリスト。アスペクト実装関数でのみ使用できます。

attr

struct ctx.attr

属性のにアクセスする構造体。値はユーザーが指定します(指定しない場合はデフォルト値が使用されます)。構造体の属性とその値の型は、attrs ディクショナリに指定された rule 関数のキーと値に対応しています。使用例をご覧ください

bin_dir

root ctx.bin_dir

bin ディレクトリに対応するルート。

build_file_path

string ctx.build_file_path

非推奨: ctx.label.package + '/BUILD' を使用します。ソースルートからの相対パスで、このルールの BUILD ファイルへのパスを指定します。

build_setting_value

unknown ctx.build_setting_value

現在のターゲットで表されるビルド設定の値。`build_setting` 属性を設定するルールのインスタンスのコンテキストでない場合、これを読み取るとエラーになります。

configuration

configuration ctx.configuration

デフォルトの構成。詳細については、構成タイプをご覧ください。

coverage_instrumented

bool ctx.coverage_instrumented(target=None)

このルールのコンパイル アクションを実行するときにコード カバレッジ インストルメンテーションを生成するかどうかを返します。target が指定されている場合は、そのターゲットで指定されたルールを返します。(ルール以外のターゲットまたは Starlark ルールのターゲットが指定されている場合は、False を返します)。--instrumentation_filter と --instrument_test_targets の構成設定に基づいて、現在のルールのソース(ターゲットが指定されていない場合)またはターゲットのソースをインストルメント化するかどうかを確認します。これは、coverage_enabled とは異なります。構成では、実行全体でカバレッジ データの収集が有効になっているかどうかを示しますが、特定のターゲットをインストルメント化するかどうかは示しません。

パラメータ

パラメータ 説明
target ターゲット、または None。 デフォルトは None
ルールを指定するターゲット。指定しない場合、デフォルトは現在のルールになります。

created_actions

StarlarkValue ctx.created_actions()

_skylark_testableTrue に設定されているルールの場合、これは、現在のルールに対してこれまでに作成されたすべてのアクションを表す Actions プロバイダを返します。他のすべてのルールでは、None を返します。後続のアクションが作成されてもプロバイダは更新されないため、検査する場合はこの関数を再度呼び出す必要があります。

これは、ctx オブジェクトを受け取り、そのオブジェクトに対してアクションを作成するルール実装ヘルパー関数のテストを作成するのに役立ちます。

disabled_features

list ctx.disabled_features

このルールに対してユーザーが明示的に無効にした機能のセット。

exec_groups

ExecGroupCollection ctx.exec_groups

このルールで使用できる実行グループのコレクション。名前でインデックスが付けられます。ctx.exec_groups[name_of_group]. でアクセスします。

executable

struct ctx.executable

struct としてマークされた executable=True で定義された実行可能ファイルを含む label type attributes。構造体のフィールドは属性名に対応しています。構造体の各値は File または None です。ルールでオプションの属性が指定されていない場合、対応する構造体の値は None になります。ラベルタイプが executable=True としてマークされていない場合、対応する構造体フィールドは生成されません。使用例をご覧ください

expand_location

string ctx.expand_location(input, targets=[])

指定された文字列内のすべての $(location ...) テンプレートを、$(location //x) をターゲット //x の出力ファイルのパスに置き換えることで展開します。展開は、このルールの直接依存関係を指すラベル、またはオプション引数 targets で明示的にリストされているラベルに対してのみ機能します。

$(location ...) 参照されるターゲットに複数の出力がある場合、はエラーになります。この場合は、出力パスのスペース区切りリストを生成する $(locations ...) を使用してください。単一の出力ファイルにも安全に使用できます。

この関数は、ユーザーが BUILD ファイルでコマンドを指定できるようにする場合に便利です(genrule など)。それ以外の場合は、ラベルを直接操作する方がよいことがよくあります。

パラメータ

パラメータ 説明
input 文字列。 必須
展開する文字列。
targets [sequence] of [Targets]; default is []
List of targets for additional lookup information. これらは次のように展開されます。DefaultInfo.files に単一のファイルを含むターゲットは、そのファイルに展開されます。他のターゲットは、DefaultInfo.executable ファイルに展開されます(設定されていて、--incompatible_locations_prefers_executable が有効になっている場合)。それ以外の場合は、DefaultInfo.files に展開されます。
None を返すことがあります。

expand_make_variables

string ctx.expand_make_variables(attribute_name, command, additional_substitutions)

非推奨。代わりに ctx.var を使用して変数にアクセスしてください。
「Make 変数」へのすべての参照を展開した後の文字列を返します。変数は $(VAR_NAME) の形式にする必要があります。また、$$VAR_NAME expands to $VAR_NAME. Examples:
ctx.expand_make_variables("cmd", "$(MY_VAR)", {"MY_VAR": "Hi"})  # == "Hi"
ctx.expand_make_variables("cmd", "$$PWD", {})  # == "$PWD"
Additional variables may come from other places, such as configurations. Note that this function is experimental.
                  
      

Parameters

Parameter Description
attribute_name string; required
The attribute name. Used for error reporting.
command string; required
The expression to expand. It can contain references to "Make variables".
additional_substitutions dict; required
Additional substitutions to make beyond the default make variables.

features

list ctx.features

The set of features that are explicitly enabled by the user for this rule. See example of use.

file

struct ctx.file

A struct containing files defined in label type attributes marked as allow_single_file. The struct fields correspond to the attribute names. The struct value is always a File or None. If an optional attribute is not specified in the rule then the corresponding struct value is None. If a label type is not marked as allow_single_file, no corresponding struct field is generated. It is a shortcut for:
list(ctx.attr.<ATTR>.files)[0]
In other words, use file to access the (singular) default output of a dependency. See example of use.

files

struct ctx.files

A struct containing files defined in label or label list type attributes. The struct fields correspond to the attribute names. The struct values are list of Files. It is a shortcut for:
[f for t in ctx.attr.<ATTR> for f in t.files]
In other words, use files to access the default outputs of a dependency. See example of use.

fragments

fragments ctx.fragments

Allows access to configuration fragments in target configuration.

genfiles_dir

root ctx.genfiles_dir

The root corresponding to genfiles directory.

info_file

File ctx.info_file

The file that is used to hold the non-volatile workspace status for the current build request. See documentation for --workspace_status_command for more information.

label

Label ctx.label

The label of the target currently being analyzed.

outputs

structure ctx.outputs

A pseudo-struct containing all the predeclared output files, represented by File objects. See the Rules page for more information and examples.

This field does not exist on aspect contexts, since aspects do not have predeclared outputs.

The fields of this object are defined as follows. It is an error if two outputs produce the same field name or have the same label.

  • If the rule declares an outputs dict, then for every entry in the dict, there is a field whose name is the key and whose value is the corresponding File.
  • For every attribute of type attr.output that the rule declares, there is a field whose name is the attribute's name. If the target specified a label for that attribute, then the field value is the corresponding File; otherwise the field value is None.
  • For every attribute of type attr.output_list that the rule declares, there is a field whose name is the attribute's name. The field value is a list of File objects corresponding to the labels given for that attribute in the target, or an empty list if the attribute was not specified in the target.
  • (Deprecated) If the rule is marked executable or test, there is a field named "executable", which is the default executable. It is recommended that instead of using this, you pass another file (either predeclared or not) to the executable arg of DefaultInfo.

package_relative_label

Label ctx.package_relative_label(input)

Converts the input string into a Label object, in the context of the package of the target currently being analyzed. If the input is already a Label, it is returned unchanged.

The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of the rule and accessing the corresponding Label() is that Label() uses the context of the package of the .bzl file that called it, not the package of the target currently being analyzed. This function has the same behavior as native.package_relative_label(), which cannot be used in a rule or aspect implementation function.

パラメータ

パラメータ 説明
input 文字列、またはラベル。 必須
入力ラベル文字列またはラベル オブジェクト。ラベル オブジェクトが渡された場合は、そのまま返されます。

resolve_command

tuple ctx.resolve_command(*, command='', attribute=None, expand_locations=False, make_variables=None, tools=[], label_dict={}, execution_requirements={})

__(試験運用版)解決された入力のリストと、解決されたコマンドの argv リストのタプル (inputs, command, empty list) を返します。どちらも ctx.action メソッドの同じ名前の引数として渡すのに適しています。
__Windows ユーザー向けの注意: このメソッドには Bash(MSYS2)が必要です。代わりに resolve_tools() の使用を検討してください(ニーズに合っている場合)。下位互換性を維持するため、空のリストはタプルの 3 番目のメンバーとして返されます。

パラメータ

パラメータ 説明
command 文字列。 デフォルトは ''
解決するコマンド。
attribute 文字列、または None。 デフォルトは None
エラーを発行する関連付けられた属性の名前。または None。
expand_locations ブール値。 デフォルトは False
$(location) 変数を展開するかどうか。詳細については、ctx.expand_location() をご覧ください。
make_variables ディクショナリ、または None。 デフォルトは None
展開する Make 変数。または None。
tools ターゲットシーケンス。 デフォルトは[]
ツールのリスト(ターゲットのリスト)。
label_dict ディクショナリ。 デフォルトは {}
解決されたラベルと対応するファイルのリストのディクショナリ(ラベル : ファイルのリストのディクショナリ)。
execution_requirements ディクショナリ。 デフォルトは {}
このコマンドを解決するアクションをスケジュールするための情報。便利なキーについては、タグをご覧ください。

resolve_tools

tuple ctx.resolve_tools(*, tools=[])

ツールの実行に必要な解決済み入力の depset のタプル (inputs, empty list) を返します。これは、ctx.actions.run メソッドと ctx.actions.run_shell メソッドの同じ名前の引数として渡すのに適しています。

ctx.resolve_command とは異なり、このメソッドではマシンに Bash をインストールする必要がないため、Windows でビルドされたルールに適しています。下位互換性を維持するため、空のリストはタプルの一部として返されます。

パラメータ

パラメータ 説明
tools ターゲットシーケンス。 デフォルトは[]
ツールのリスト(ターゲットのリスト)。

rule

rule_attributes ctx.rule

アスペクトが適用されるルールのルール属性記述子。アスペクト実装関数でのみ使用できます。

runfiles

runfiles ctx.runfiles(files=[], transitive_files=None, collect_data=False, collect_default=False, symlinks={}, root_symlinks={})

runfiles オブジェクトを作成します。

パラメータ

パラメータ 説明
files [sequence] of [File]s; default is []
The list of files to be added to the runfiles.
transitive_files Filedepset、または None。デフォルトは None
。runfiles に追加するファイルの(推移的な)セット。depset は default 順序を使用する必要があります(名前のとおり、デフォルトです)。
collect_data ブール値; デフォルトは False
このパラメータの使用はおすすめしません。runfiles ガイドをご覧ください

srcs、data、deps 属性の依存関係からデータ runfiles を収集するかどうか。

collect_default ブール値; デフォルトは False
このパラメータの使用はおすすめしません。runfiles ガイドをご覧ください

srcs、data、deps 属性の依存関係からデフォルトの runfiles を収集するかどうか。

ディクショナリ、または SymlinkEntrySymlinkEntry。 デフォルトは {}
SymlinkEntry の depset、または runfiles に追加するシンボリック リンクのマップ。シンボリック リンクは常にメイン ワークスペースの runfiles ディレクトリ(<runfiles_root>/_main/<symlink_path>)に追加されます。現在のターゲットのリポジトリに対応するディレクトリには追加されません。**ルールのガイドのRunfiles シンボリック リンクをご覧ください。
ディクショナリ、または SymlinkEntrySymlinkEntry。 デフォルトは {}
SymlinkEntry の depset、または runfiles に追加するシンボリック リンクのマップ。ルールのガイドのRunfiles シンボリック リンクをご覧ください。

split_attr

struct ctx.split_attr

分割構成の属性の値にアクセスする構造体。属性がラベルリストの場合、split_attr の値は、分割のキー(文字列)から分割のそのブランチの ConfiguredTargets のリストへのディクショナリです。属性がラベルの場合、split_attr の値は、分割のキー(文字列)から単一の ConfiguredTargets へのディクショナリです。分割構成の属性は attr 構造体にも表示されますが、その値は分割のすべてのブランチがマージされた単一のリストになります。

super

unknown ctx.super()

試験運用版: 親の実装関数を呼び出し、そのプロバイダを返します。

target_platform_has_constraint

bool ctx.target_platform_has_constraint(constraintValue)

指定された制約値が現在のターゲット プラットフォームの一部である場合は true を返します。

パラメータ

パラメータ 説明
constraintValue ConstraintValueInfo。 必須
ターゲット プラットフォームに対してチェックする制約値。

toolchains

ToolchainContext ctx.toolchains

このルールのデフォルトの実行グループのツールチェーン。

var

dict ctx.var

構成変数のディクショナリ(文字列から文字列)。

version_file

File ctx.version_file

現在のビルド リクエストの一時的なワークスペース ステータスを保持するために使用されるファイル。詳細については、--workspace_status_command のドキュメントをご覧ください。

workspace_name

string ctx.workspace_name

ワークスペースの名前。これは、メイン リポジトリの実行ルート名と runfiles 接頭辞です。--enable_bzlmod がオンの場合、これは固定文字列 _main です。それ以外の場合は、WORKSPACE ファイルで定義されているワークスペース名です。