Aturan Tindakan Tambahan

Laporkan masalah Lihat sumber Malam

Aturan

action_listener

Lihat sumber aturan
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. Sebagai gantinya, gunakan aspects.

Aturan action_listener tidak menghasilkan output apa pun itu sendiri. Sebaliknya, solusi 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 aturan extra_action.

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 diisi

Nama unik untuk target ini.

extra_actions

Daftar label; wajib diisi

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

Daftar string; wajib diisi

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

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

extra_action

Lihat sumber aturan
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. Sebagai gantinya, gunakan aspects.

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

Lihat action_listener untuk mengetahui detail tentang cara mengaktifkan extra_action.

extra_action dijalankan sebagai command line. Alat command line ini mendapatkan akses ke file yang berisi buffering protokol sebagai $(EXTRA_ACTION_FILE) dengan informasi mendetail tentang tindakan asli yang dibayangi olehnya. Fungsi ini juga memiliki akses ke semua file input yang dapat diakses oleh tindakan asli. Lihat extra_actions_base.proto untuk mengetahui detail tentang data yang disimpan di dalam buffering 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

Nama; wajib diisi

Nama unik untuk target ini.

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

String; wajib diisi

Perintah yang akan dijalankan.

Seperti atribut genrule cmd yang memiliki perbedaan berikut:

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

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

    Misalnya, 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

Daftar string; defaultnya adalah []

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; defaultnya adalah False

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

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

tools

Daftar label; defaultnya adalah []

Daftar dependensi tool untuk aturan ini.

Lihat definisi dependensi untuk informasi selengkapnya.

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

Semua alat dan dependensi datanya digabungkan menjadi satu hierarki, tempat perintah dapat menggunakan jalur relatif. Direktori kerja akan menjadi root dari pohon terpadu tersebut.