追加のアクション ルール

問題を報告 ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ルール

action_listener

ルールのソースを表示
action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

警告: 追加のアクションは非推奨となりました。使用 アスペクト してください。

action_listener ルール自体は出力を生成しません。 代わりに、ツール開発者が extra_action をビルドシステムに追加する。 アクションから extra_action へのマッピングを提供することで、

このルールの引数は、アクション ニーモニックを extra_action ルール。

オプション を指定する --experimental_action_listener=<label>, ビルドは指定された action_listener を使用して、 extra_action をビルドグラフに追加します。

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

引数

属性
name

名前:必須

このターゲットの一意の名前。

extra_actions

ラベルのリスト。必須

extra_action ターゲットのリスト この action_listener がビルドグラフに追加されます。 例:[ "//my/tools:analyzer" ]
mnemonics

文字列のリスト。必須

この action_listener がリッスンするアクション ニーモニックのリスト たとえば[ "Javac" ]

ニーモニックは公開インターフェースではありません。 ニーモニックとそのアクションが変わらない保証はありません。

extra_action

ルールのソースを表示
extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

警告: 追加のアクションは非推奨となりました。使用 アスペクト してください。

extra_action ルールから意味のある出力が生成されない 通常のビルド ターゲットとして指定した場合。代わりにツール開発者が を使用して、既存のアクションをシャドウする追加のアクションをビルドグラフに挿入します。

詳しくは、action_listener をご覧ください。 extra_action を有効にする方法についてご覧ください。

extra_action はコマンドラインとして実行されます。コマンドライン ツールは、 $(EXTRA_ACTION_FILE) としてプロトコル バッファを含むファイルへのアクセス シャドーイングしている元のアクションの詳細情報を 提供できます また、元のアクションがアクセスできるすべての入力ファイルにもアクセスできます。 extra_actions_base.proto をご覧ください。 をご覧ください。各 proto ファイルは、 ExtraActionInfo メッセージが含まれています。

他のすべてのアクションと同様に、追加のアクションもサンドボックス化されているため、これに対処できるように設計する必要があります。

引数

属性
name

名前:必須

このターゲットの一意の名前。

このルールは、extra_actions 引数の label で参照できます。 ルールの数: action_listener
cmd

String;必須

実行するコマンド。

genrule cmd 属性のように、次のように設定します。 違いがあります。

  1. ヒューリスティックなラベルの拡張なし。$(location ...) を使用しているラベルのみが展開されます。

  2. 追加のパスが文字列に適用され、すべてのリクエストが out_templates から作成された出力のオカレンス 属性です。$(output out_template) のすべての一致 label で示されるファイルのパスに置き換えられます。

    例:out_template $(ACTION_ID).analysis $(output $(ACTION_ID).analysis) と一致することがあります。

    実際には、これは $(location) と同じ置換です。 スコープは異なります

out_templates

文字列のリスト。デフォルトは [] です。

extra_action コマンドで生成されたファイルのテンプレートのリスト。

テンプレートでは、次の変数を使用できます。

  • $(ACTION_ID)、この extra_action を一意に識別する ID。 一意の出力ファイルを生成するために使用します。

requires_action_output

ブール値デフォルトは False です。

この extra_action では、 この extra_action への入力として存在する元のアクション。

true(デフォルトは false)の場合、extra_action は 入力の一部として使用できます。

tools

ラベルのリスト。デフォルトは [] です

このルールの tool 依存関係のリスト。

詳細については、依存関係の定義をご覧ください。 情報です。

ビルドシステムは、コマンドラインを実行する前に、 extra_action コマンド使用されるのは exec 構成、 ビルド中にツールとして実行する必要があるためです。個人の道筋は tools のターゲット //x:y は、次を使用して取得できます。 $(location //x:y)

すべてのツールとそのデータ依存関係が 1 つのツリーに統合される 相対パスを使用できます。作業ディレクトリが ルートノードになります