特に、実装関数は現在のターゲットのラベル、属性、構成、依存関係のプロバイダにアクセスできます。出力ファイルと、出力ファイルを生成するアクションを宣言するメソッドが含まれています。
コンテキスト オブジェクトは、基本的に実装関数の呼び出しの間だけ存在します。関連付けられた関数の外部でこれらのオブジェクトにアクセスしても意味はありません。詳細については、ルールページをご覧ください。
メンバー
- actions
- aspect_ids
- attr
- bin_dir
- build_file_path
- build_setting_value
- configuration
- coverage_instrumented
- created_actions
- disabled_features
- exec_groups
- executable
- expand_location
- expand_make_variables
- features
- file
- files
- fragments
- genfiles_dir
- info_file
- label
- outputs
- package_relative_label
- resolve_command
- resolve_tools
- rule
- runfiles
- split_attr
- super
- target_platform_has_constraint
- toolchains
- var
- version_file
- workspace_name
actions
actions ctx.actions
aspect_ids
list ctx.aspect_ids
attr
struct ctx.attr
attrs ディクショナリに指定された rule 関数のキーと値に対応しています。使用例をご覧ください。
bin_dir
root ctx.bin_dir
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()
True に設定されているルールの場合、これは、現在のルールに対してこれまでに作成されたすべてのアクションを表す 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)
「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
file
struct ctx.file
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]
file to access the (singular) default output of a dependency. See example of use.
files
struct ctx.files
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]
files to access the default outputs of a dependency. See example of use.
fragments
fragments ctx.fragments
genfiles_dir
root ctx.genfiles_dir
info_file
File ctx.info_file
label
Label ctx.label
outputs
structure ctx.outputs
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
outputsdict, then for every entry in the dict, there is a field whose name is the key and whose value is the correspondingFile. - For every attribute of type
attr.outputthat 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 correspondingFile; otherwise the field value isNone. - For every attribute of type
attr.output_listthat the rule declares, there is a field whose name is the attribute's name. The field value is a list ofFileobjects 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
executableortest, 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 theexecutablearg ofDefaultInfo.
package_relative_label
Label ctx.package_relative_label(input)
Label, it is returned unchanged.The result of this function is the same is that 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() 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={})
(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=[])
(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={})
パラメータ
| パラメータ | 説明 |
|---|---|
files
|
[sequence] of [File]s; default is []The list of files to be added to the runfiles. |
transitive_files
|
File の depset、または None。デフォルトは None。runfiles に追加するファイルの(推移的な)セット。depset は default 順序を使用する必要があります(名前のとおり、デフォルトです)。
|
collect_data
|
ブール値;
デフォルトは Falseこのパラメータの使用はおすすめしません。runfiles ガイドをご覧ください。 srcs、data、deps 属性の依存関係からデータ runfiles を収集するかどうか。 |
collect_default
|
ブール値;
デフォルトは Falseこのパラメータの使用はおすすめしません。runfiles ガイドをご覧ください。 srcs、data、deps 属性の依存関係からデフォルトの runfiles を収集するかどうか。 |
symlinks
|
ディクショナリ、または SymlinkEntry の SymlinkEntry。
デフォルトは {}SymlinkEntry の depset、または runfiles に追加するシンボリック リンクのマップ。シンボリック リンクは常にメイン ワークスペースの runfiles ディレクトリ( <runfiles_root>/_main/<symlink_path>)に追加されます。現在のターゲットのリポジトリに対応するディレクトリには追加されません。**ルールのガイドのRunfiles シンボリック リンクをご覧ください。
|
root_symlinks
|
ディクショナリ、または SymlinkEntry の SymlinkEntry。
デフォルトは {}SymlinkEntry の depset、または runfiles に追加するシンボリック リンクのマップ。ルールのガイドのRunfiles シンボリック リンクをご覧ください。 |
split_attr
struct ctx.split_attr
super
unknown ctx.super()
target_platform_has_constraint
bool ctx.target_platform_has_constraint(constraintValue)
パラメータ
| パラメータ | 説明 |
|---|---|
constraintValue
|
ConstraintValueInfo。
必須 ターゲット プラットフォームに対してチェックする制約値。 |
toolchains
ToolchainContext ctx.toolchains
var
dict ctx.var
version_file
File ctx.version_file
workspace_name
string ctx.workspace_name
--enable_bzlmod がオンの場合、これは固定文字列 _main です。それ以外の場合は、WORKSPACE ファイルで定義されているワークスペース名です。