追跡

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

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

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

メンバー

actions

actions ctx.actions

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

aspect_ids

list ctx.aspect_ids

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

attr

struct ctx.attr

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

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 ctx.configuration

現在のターゲットのビルド構成。詳細については、Starlark 構成タイプ構成に関するドキュメントをご覧ください。

coverage_instrumented

bool ctx.coverage_instrumented(target=None)

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

実行可能ファイル

struct ctx.executable

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

expand_location

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

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

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

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

パラメータ

パラメータ 説明
input string; 必須
展開する文字列。
targets Targetシーケンス。デフォルトは []
です。 追加のルックアップ情報のターゲットのリスト。これらは次のように展開されます。DefaultInfo.files に単一のファイルを含むターゲットは、そのファイルに展開されます。他のターゲットは、設定されていて --incompatible_locations_prefers_executable が有効になっている場合は DefaultInfo.executable ファイルに展開され、それ以外の場合は DefaultInfo.files に展開されます。
None を返すことがあります。

expand_make_variables

string ctx.expand_make_variables(attribute_name, command, additional_substitutions)

非推奨。代わりに ctx.var を使用して変数にアクセスします。
「変数の作成」へのすべての参照を展開した後に文字列を返します。変数は $(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() は、Label() が呼び出し元の .bzl ファイルのパッケージのコンテキストを使用し、現在分析中のターゲットのパッケージを使用しないことです。この関数は native.package_relative_label() と同じ動作をしますが、ルールまたはアスペクト実装関数では使用できません。

パラメータ

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

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 string; デフォルトは ''
解決するコマンド。
attribute string; または None; デフォルトは None
エラーを発行する関連付けられた属性の名前。または None。
expand_locations bool; デフォルトは False
$(location) 変数を展開しますか?詳細については、ctx.expand_location() をご覧ください。
make_variables dict。または None。デフォルトは None
です。展開する変数を作成します。None にすることもできます。
tools Targetシーケンス。デフォルトは []
ツールのリスト(ターゲットのリスト)。
label_dict dict; デフォルトは {}
解決されたラベルと対応するファイルのリストのディクショナリ(Label : list of Files のディクショナリ)。
execution_requirements dict。デフォルトは {}
です。このコマンドを解決するアクションのスケジュール設定に関する情報。便利なキーについては、タグをご覧ください。

resolve_tools

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

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

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

パラメータ

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

ルール

rule_attributes ctx.rule

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

runfiles

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

ランファイル オブジェクトを作成します。

パラメータ

パラメータ 説明
files Filesequence。デフォルトは []
です。 ランファイルに追加するファイルのリスト。
transitive_files Filedepset。または None。デフォルトは None
ランファイルに追加される(推移的な)ファイルのセット。deps は default 順序を使用する必要があります(名前のとおり、これがデフォルトです)。
collect_data bool; デフォルトは False
このパラメータの使用は推奨されません。runfiles ガイドをご覧ください。

srcs、data、deps 属性の依存関係からデータ実行ファイルを収集するかどうか。

collect_default bool; デフォルトは False
このパラメータの使用は推奨されません。runfiles ガイドをご覧ください。

srcs、data、deps 属性の依存関係からデフォルトのランファイルを取得するかどうか。

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

split_attr

struct ctx.split_attr

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

super

unknown ctx.super()

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

target_platform_has_constraint

bool ctx.target_platform_has_constraint(constraintValue)

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

パラメータ

パラメータ 説明
constraintValue ConstraintValueInfo; 必須
ターゲット プラットフォームを照合する制約値。

ツールチェーンへの統合

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 ファイルで定義されているワークスペース名です。