Ekstra İşlem Kuralları

Sorun bildirin Kaynağı göster

Kurallar

işlem_listeleyici

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 en boy kullanın.

action_listener kuralı, herhangi bir sonucu oluşturmaz. Bunun yerine, araç geliştiricilerin işlemden extra_action özelliğine eşleme sağlayarak derleme sistemine extra_action eklemelerini sağlar.

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

--experimental_action_listener=<label> seçeneğini belirttiğinizde derleme, belirtilen action_listener kullanarak derleme grafiğine extra_action ekler.

Ö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 hedefin listesi. Ör. [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Bu action_listener adlı kullanıcının dinlemesi gereken işlem hatırlatıcılarının listesi (ör. [ "Javac" ]).

Hatıralıklar herkese açık bir arayüz değildir. Hatıralıkların ve eylemlerinin değişmeyeceğinin garantisi yoktur.

ekstra_işlem

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 en boy kullanın.

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

extra_action öğelerinin nasıl etkinleştirileceğiyle ilgili ayrıntılar için action_listener sayfasına bakın.

extra_action'ler komut satırı olarak çalışır. Komut satırı aracı, gölgelendirdiği orijinal işlem hakkında ayrıntılı bilgi içeren, $(Extra_ACTION_FILE) şeklinde bir 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 additional_actions_base.proto sayfasına göz atı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. Bu tür işlemler için tasarlanmalıdır.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

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

String; required

Çalıştırılacak komut.

Aşağıdaki farklılıkları içeren genrule cmd özelliği gibi:

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

  2. Dizeye out_templates özelliği kullanılarak oluşturulan çıkışların yerine geçecek bir ek kart uygulanır. Tüm $(output out_template) tekrarları, label ile belirtilen dosyanın yoluyla değiştirilir.

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

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

out_templates

List of strings; optional

extra_action komutu tarafından oluşturulan dosyalara yönelik şablonların listesi.

Ş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

Bunun extra_action orijinal işlemin çıkışının, bu extra_action için giriş olarak mevcut olmasını gerektirdiğini belirtir.

Doğru değerine ayarlandığında (varsayılan değer yanlış olduğunda) additional_action, orijinal işlem çıktılarının girişlerinin bir parçası olarak kullanılabilir olduğunu varsayabilir.

tools

List of labels; optional

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

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

Derleme sistemi, bu ön koşulların extra_action komutu çalıştırılmadan önce derlenmesini sağlar. Derleme sırasında kendileri araç olarak çalıştırılmaları gerektiğinden bu ön koşullar execyapı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 veri bağımlılıkları, komutun göreli yolları kullanabildiği tek bir ağaçta birleştirilir. Çalışma dizini, bu birleştirilmiş ağacın kökü olacak.