Ekstra İşlem Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Kurallar

action_listener

Kural kaynağını görüntüle
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: Ek işlemlerin desteği sonlandırıldı. Bunun yerine yönler seçeneğini kullanın.

action_listener kuralı kendi başına herhangi bir çıkış üretmez. Bunun yerine, araç geliştiricilerin işlemden extra_action 'a eşleme sağlayarak derleme sistemine extra_action eklemelerine olanak tanır.

Bu kuralın bağımsız değişkenleri, işlem anımsamalarını extra_action kurallarıyla eşler.

--experimental_action_listener=<label> seçeneğini belirterek, derleme, extra_action'leri derleme grafiğine eklemek için belirtilen action_listener'ı 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; zorunlu

Bu hedef için benzersiz bir ad.

extra_actions

Etiketler listesi; zorunlu

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

Dize listesi; zorunlu

Bu action_listener'ün dinlemesi gereken işlem anımsatıcılarının listesi (ör. [ "Javac" ]).

Hatırlatıcılar herkese açık bir arayüz değildir. Bu kısaltmaların ve işlemlerinin değişmeyeceğini garanti edemeyiz.

extra_action

Kural kaynağını görüntüle
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: Ek işlemlerin desteği sonlandırıldı. Bunun yerine yönler seçeneğini kullanın.

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

extra_action'leri etkinleştirme hakkında ayrıntılı bilgi için action_listener bölümüne bakın.

extra_action'ler komut satırı olarak çalışır. Komut satırı aracı, gölgelediği orijinal işlemle ilgili ayrıntılı bilgiler içeren bir protokol arabelleği içeren bir dosyaya ($(EXTRA_ACTION_FILE) olarak) erişir. 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 dosyasını inceleyin. Her proto dosyası bir ExtraActionInfo mesajı içerir.

Diğer tüm işlemler gibi ek işlemler de korumalı alandadır ve bu duruma göre tasarlanmalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

action_listener kurallarının extra_actions bağımsız değişkeninde label kullanarak bu kurala referans verebilirsiniz.
cmd

Dize; zorunlu

Çalıştırılacak komut.

genrule cmd özelliği gibidir ancak aşağıdaki farklar vardır:

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

  2. out_templates özelliğinden oluşturulan çıkışların tümünün yerini almak için dizeye ek bir geçiş uygulanır. $(output out_template) değerinin tüm oluşumları, label ile belirtilen dosyanın yolu ile değiştirilir.

    Örneğin, out_template $(ACTION_ID).analysis $(output $(ACTION_ID).analysis) ile eşleştirilebilir.

    Aslında bu, $(location) ile aynı ancak farklı kapsama sahip bir değiştirmedir.

out_templates

Dize listesi; varsayılan değer []'tir.

extra_action komutu tarafından oluşturulan dosyaların şablonlarının listesi.

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

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

requires_action_output

Boole; varsayılan değer False'tir

Bu extra_action işleminin, orijinal işlemin çıkışının bu extra_action işleminin girişi olarak bulunmasını gerektirdiğini gösterir.

Doğru olduğunda (varsayılan olarak yanlıştır), extra_action, orijinal işlem çıkışlarının girişlerinin bir parçası olarak kullanılabileceğini varsayabilir.

tools

Etiketler listesi; varsayılan değer []'dir.

Bu kuralın 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 komutu çalıştırılmadan önce derlendiğinden emin olur. Bu ön koşullar, derleme sırasında bir araç olarak çalıştırılmak zorunda olduklarından execyapılandırması kullanılarak derlenir. Bir tools hedefinin //x:y yolu, $(location //x:y) kullanılarak elde edilebilir.

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