Ekstra İşlem Kuralları

Sorun bildirin.3 2.02}332}12/}22}18}

Kurallar

action_listener

Kural kaynağını göster
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ı kendiliğinden çıkış sağlamaz. Bunun yerine, araç geliştiricilerinin işlemden extra_action öğesine eşleme sağlayarak derleme sistemine extra_action 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ği belirtildiğinde derleme, derleme grafiğine extra_action eklemek için belirtilen action_listener öğesini 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

Ad; gerekli

Bu hedef için benzersiz bir ad.

extra_actions

Etiket listesi; zorunlu

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

Dize listesi; zorunlu

Bu action_listener öğesinin dinlemesi gereken işlem anımsatıcılarının listesi, ör. [ "Javac" ].

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

extra_action

Kural kaynağını göster
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 öğelerini etkinleştirmeyle ilgili ayrıntılar için bkz. action_listener.

extra_action'ler komut satırı olarak çalışır. Komut satırı aracı, $(Extra_ACTION_FILE) biçiminde bir protokol arabelleği içeren ve gölgelediği orijinal işlemle ilgili ayrıntılı bilgi içeren bir dosyaya erişim sağlar. Ayrıca, orijinal işlemin erişebildiği tüm giriş dosyalarına da erişebilir. Protokol arabelleğinde depolanan veriler hakkında ayrıntılı bilgi için extra_actions_base.proto sayfasına bakın. Her proto dosyası bir ExtraActionInfo mesajı içerir.

Diğer tüm işlemlerde olduğu gibi ekstra işlemler de korumalı alana alınır ve buna uygun şekilde tasarlanmalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; gerekli

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

Dize; zorunlu

Çalıştırılacak komut.

Aşağıdaki farklılıklara sahip genrule cmd özelliği gibi:

  1. Buluşsal etiket genişletmesi yok. Yalnızca $(location ...) değerini kullanan etiketler genişletilir.

  2. out_templates özelliğinden oluşturulan çıkışların tüm tekrarlarının değiştirilmesi için dizeye ek bir aktarım uygulanır. $(output out_template) öğesinin tüm tekrarları, label ile belirtilen dosya 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

Dize listesi; varsayılan değer: []

extra_action komutuyla oluşturulan dosyalar için şablon listesi.

Şablonda aşağıdaki değişkenler kullanılabilir:

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

requires_action_output

Boole; varsayılan değer False

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

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

tools

Etiket listesi; varsayılan []

Bu kural için tool bağımlılıkları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 komutu çalıştırılmadan önce oluşturulmasını sağlar. Bu ön koşullar, derleme sırasında araç olarak çalışması gerektiğinden execyapılandırması 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ü olur.