Aturan Tindakan Tambahan

Aturan

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)

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

Aturan action_listener tidak menghasilkan output apa pun itu sendiri. Sebaliknya, hal ini memungkinkan pengembang alat untuk memasukkan extra_action ke dalam sistem build, dengan menyediakan pemetaan dari tindakan ke extra_action .

Argumen aturan ini memetakan mnemonik aksi 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

Name; required

Nama unik untuk target ini.

extra_actions

List of labels; required

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

List of strings; required

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

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

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)

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

Aturan extra_action tidak menghasilkan output yang berarti dan jika ditetapkan sebagai target build reguler. Sebaliknya, hal ini memungkinkan pengembang alat untuk menyisipkan tindakan tambahan ke dalam grafik build yang membayangi tindakan yang ada.

Lihat action_listener untuk mengetahui detailnya tentang cara mengaktifkan extra_action.

extra_action dijalankan sebagai command line. Alat command line mendapatkan akses ke file yang berisi buffering protokol sebagai $(EXTRA_ACTION_FILE) dengan informasi detail tentang tindakan awal yang dibayangi. Fungsi ini juga memiliki akses ke semua file input yang dapat diakses oleh tindakan asli. Lihat extra_actions_base.proto untuk detail tentang data yang disimpan di dalam penyangga protokol. Setiap file proto berisi pesan ExtraActionInfo.

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

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

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

String; required

Perintah yang akan dijalankan.

Seperti atribut genrule cmd dengan hal berikut perbedaan:

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

  2. Penerusan tambahan diterapkan ke string untuk menggantikan semua kemunculan output yang dibuat dari out_templates . Semua kemunculan $(output out_template) diganti dengan jalur ke file yang dilambangkan dengan label.

    Mis. out_template $(ACTION_ID).analysis dapat dicocokkan dengan $(output $(ACTION_ID).analysis).

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

out_templates

List of strings; optional

Daftar template untuk file yang dibuat oleh perintah extra_action.

Template dapat menggunakan variabel berikut:

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

requires_action_output

Boolean; optional; default is False

Menunjukkan bahwa extra_action ini memerlukan output dari tindakan asli yang akan ada sebagai input untuk extra_action ini.

Jika true (benar) (default salah), extra_action dapat mengasumsikan bahwa output tindakan asli tersedia sebagai bagian dari inputnya.

tools

List of labels; optional

Daftar dependensi tool untuk aturan ini.

Lihat definisi dependensi untuk mengetahui informasi selengkapnya tidak akurat atau tidak sesuai.

Sistem build memastikan prasyarat ini dibuat sebelum menjalankan Perintah extra_action; kunci dibuat menggunakan hostkonfigurasi, karena harus berjalan sebagai alat selama proses build. Jalur seseorang tools target //x:y dapat diperoleh menggunakan $(location //x:y).

Semua alat dan dependensi datanya digabungkan ke dalam satu hierarki di mana perintah dapat menggunakan jalur relatif. Direktori kerja akan menjadi akar dari pohon terpadu tersebut.