Aturan Tindakan Tambahan

Aturan

action_listener

Lihat sumber aturan
action_listener(name, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, package_metadata, restricted_to, tags, target_compatible_with, testonly, visibility)

PERINGATAN: Tindakan tambahan tidak digunakan lagi. Gunakan aspek sebagai gantinya.

Aturan action_listener tidak menghasilkan output apa pun. Sebagai gantinya, aturan ini memungkinkan developer alat menyisipkan extra_action ke dalam sistem build, dengan menyediakan pemetaan dari tindakan ke extra_action .

Argumen aturan ini memetakan mnemonik tindakan ke extra_action aturan.

Dengan menentukan opsi --experimental_action_listener=<label>, build akan menggunakan action_listener yang ditentukan untuk menyisipkan extra_action ke dalam grafik build.

Contoh

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)",
)

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

extra_actions

Daftar label; wajib

Daftar target extra_action yang harus ditambahkan action_listener ini ke grafik build. Misalnya, [ "//my/tools:analyzer" ].
mnemonics

Daftar string; wajib

Daftar mnemonik tindakan yang harus diproses oleh action_listener ini, misalnya [ "Javac" ].

Mnemonik bukan antarmuka publik. Tidak ada jaminan bahwa mnemonik dan tindakannya tidak akan berubah.

extra_action

Lihat sumber aturan
extra_action(name, data, aspect_hints, cmd, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, licenses, out_templates, package_metadata, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

PERINGATAN: Tindakan tambahan tidak digunakan lagi. Gunakan aspek sebagai gantinya.

Aturan extra_action tidak menghasilkan output yang berarti jika ditentukan sebagai target build reguler. Sebagai gantinya, aturan ini memungkinkan developer alat menyisipkan tindakan tambahan ke dalam grafik build yang menutupi tindakan yang ada.

Lihat action_listener untuk mengetahui detail cara mengaktifkan extra_actions.

extra_action berjalan sebagai command line. Alat command line mendapatkan akses ke file yang berisi buffer protokol sebagai $(EXTRA_ACTION_FILE) dengan informasi mendetail tentang tindakan asli yang ditutupinya. Alat ini juga memiliki akses ke semua file input yang dapat diakses oleh tindakan asli. Lihat extra_actions_base.proto untuk mengetahui detail data yang disimpan di dalam buffer protokol. Setiap file proto berisi pesan ExtraActionInfo.

Sama seperti semua tindakan lainnya, tindakan tambahan di-sandbox, dan harus dirancang untuk menanganinya.

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

Anda dapat merujuk ke aturan ini berdasarkan label dalam argumen extra_actions dari action_listener aturan.
cmd

String; wajib

Perintah yang akan dijalankan.

Seperti atribut cmd genrule dengan perbedaan berikut:

  1. Tidak ada perluasan label heuristik. Hanya label yang menggunakan $(location ...) yang diperluas.

  2. Pass tambahan diterapkan ke string untuk mengganti semua kemunculan output yang dibuat dari atribut out_templates. Semua kemunculan $(output out_template) diganti dengan jalur ke file yang ditandai dengan label.

    Misalnya, out_template $(ACTION_ID).analysis dapat dicocokkan dengan $(output $(ACTION_ID).analysis).

    Pada dasarnya, ini adalah substitusi yang sama dengan $(location) tetapi dengan cakupan yang berbeda.

out_templates

Daftar string; default-nya adalah []

Daftar template untuk file yang dihasilkan oleh perintah extra_action.

Template dapat menggunakan variabel berikut:

  • $(ACTION_ID), ID yang secara unik mengidentifikasi extra_action ini. Digunakan untuk menghasilkan file output unik.

requires_action_output

Boolean; default-nya adalah False

Menunjukkan bahwa extra_action ini memerlukan output tindakan asli untuk ada sebagai input ke extra_action ini.

Jika benar (default-nya salah), extra_action dapat mengasumsikan bahwa the original action outputs are available as part of its inputnya.

tools

Daftar label; default-nya adalah []

Daftar dependensi tool untuk aturan ini.

Lihat definisi dependensi untuk mengetahui informasi selengkapnya.

Sistem build memastikan prasyarat ini dibuat sebelum menjalankan perintah extra_action ; prasyarat ini dibuat menggunakan konfigurasi exec, karena harus dijalankan sebagai alat selama build itu sendiri. Jalur target individual tools //x:y dapat diperoleh menggunakan $(location //x:y).

Semua alat dan dependensi datanya dikonsolidasikan ke dalam satu pohon yang di dalamnya perintah dapat menggunakan jalur relatif. Direktori kerja akan menjadi root pohon terpadu tersebut.