Ekstra İşlem Kuralları

Kurallar

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)

UYARI: Ekstra işlemler kullanımdan kaldırılmıştır. Bunun yerine yönleri kullanın.

action_listener kuralı herhangi bir çıkış oluşturmaz. Bunun yerine, araç geliştiricilerinin işlemden extra_action öğesine bir eşleme sağlayarak extra_action öğelerini derleme sistemine eklemelerine olanak tanır.

Bu kuralın bağımsız değişkenleri, işlem hatırlatıcılarını extra_action kurallarıyla eşler.

--experimental_action_listener=<label> seçeneğini belirttiğinizde derleme, derleme grafiğine extra_action eklemek için belirtilen action_listener kodunu kullanır.

Örnek

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

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

extra_actions

List of labels; required

Bu action_listener öğesinin derleme grafiğine eklemesi gereken extra_action hedeflerin listesi. Ör. [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Bu action_listener kullanıcısının dinlemesi gereken eylem anımsatıcılarının listesi, ör. [ "Javac" ].

Anımsatıcılar herkese açık bir arayüz değildir. Hatırlatıcıların ve eylemlerinin değişmeyeceğinin garantisi yoktur.

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)

UYARI: Ekstra işlemler kullanımdan kaldırılmıştır. Bunun yerine yönleri kullanın.

extra_action kuralı, normal derleme hedefi olarak belirtildiğinde anlamlı bir çıkış üretmez. Bunun yerine, araç geliştiricilerinin derleme grafiğine mevcut işlemleri gölgeleyen ek işlemler eklemelerine olanak tanır.

extra_action etkinleştirmelerinin nasıl yapılacağıyla ilgili ayrıntılar için action_listener adresine bakın.

extra_action komut satırı olarak çalışır. Komut satırı aracı, gölgelediği orijinal işlemle ilgili ayrıntılı bilgilerin yer aldığı $(EXTRA_ACTION_FILE) protokol arabelleği içeren bir dosyaya erişim elde eder. Ayrıca, orijinal işlemin erişebildiği tüm giriş dosyalarına da erişebilir. Protokol arabelleğinde depolanan verilerle ilgili ayrıntılar için extra_actions_base.proto bölümüne bakın. Her proto dosyası bir ExtraActionInfo mesajı içerir.

Diğer tüm işlemler gibi ekstra işlemler de korumalı alana alınır ve bunu halledecek şekilde tasarlanmalıdır.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

Bu kurala, action_listener kurallarının extra_actions bağımsız değişkeninde label tarafından başvurabilirsiniz.
cmd

String; required

Çalıştırılacak komut.

Aşağıdaki farklılıklarla birlikte genrule cmd özelliğinde olduğu gibi:

  1. Sezgisel etiket genişletmesi yok. Yalnızca $(location ...) kullanan etiketler genişletilir.

  2. out_templates özelliğinden oluşturulan çıkışların tüm tekrarlarını değiştirmek için dizeye ek bir geçiş uygulanır. Tüm $(output out_template) geçtiği yerler, dosyanın label ile belirtilen yoluyla değiştirilir.

    Ör. out_template $(ACTION_ID).analysis, $(output $(ACTION_ID).analysis) ile eşleştirilebilir.

    Aslında bu, $(location) ile aynı ikamedir ancak farklı bir kapsama sahiptir.

out_templates

List of strings; optional

extra_action komutuyla oluşturulan dosyalar için şablonların listesidir.

Şablon aşağıdaki değişkenleri kullanabilir:

  • $(ACTION_ID), bu extra_action öğesini benzersiz şekilde tanımlayan bir kimliktir. Benzersiz bir çıkış dosyası oluşturmak için kullanılır.

requires_action_output

Boolean; optional; default is False

Bu extra_action öğesinin, orijinal işlem çıkışının bu extra_action için giriş olarak olmasını gerektirdiğini belirtir.

True (varsayılan false) değerine ayarlandığında, extra_action, girişlerin bir parçası olarak orijinal işlem çıkışlarının kullanılabileceğini varsayabilir.

tools

List of labels; optional

Bu kural için tool bağımlılıklarının listesi.

Daha fazla bilgi için bağımlılıkların tanımına bakın.

Derleme sistemi, bu ön koşulların extra_action komutunu çalıştırmadan önce oluşturulmasını sağlar. Bu ön koşullar, derleme sırasında araç olarak çalışmaları gerektiğinden hostyapılandırma kullanılarak oluşturulur. Tek bir tools hedefinin //x:y yolu, $(location //x:y) kullanılarak elde edilebilir.

Tüm araçlar ve bunların veri bağımlılıkları, komutun göreli yolları kullanabileceği tek bir ağaçta birleştirilir. Çalışma dizini bu birleştirilmiş ağacın kökü olacaktır.