Ekstra İşlem Kuralları

Kurallar

action_listener

Kural kaynağını görüntüleme
action_listener(name, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, package_metadata, restricted_to, tags, target_compatible_with, testonly, visibility)

UYARI: Ek işlemler kullanımdan kaldırıldı. Bunun yerine görünümleri kullanın.

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

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

--experimental_action_listener=<label> seçeneğini belirterek 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; zorunlu

Bu hedef için benzersiz bir ad.

extra_actions

Etiketlerin 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" ]).

Mnemonic'ler herkese açık bir arayüz değildir. Kısaltmaların ve işlemlerinin değişmeyeceğinin garantisi yoktur.

extra_action

Kural kaynağını görüntüleme
extra_action(name, data, aspect_hints, cmd, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, licenses, out_templates, package_metadata, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

UYARI: Ek işlemler kullanımdan kaldırıldı. Bunun yerine görünümleri 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 başlıklı makaleye bakın.

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

Diğer tüm işlemler gibi ek işlemler de korumalı alanda çalışır ve bu durumu yönetebilecek şekilde 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 ile bu kurala başvurabilirsiniz.
cmd

Dize; zorunlu

Çalıştırılacak komut.

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

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

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

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

    Bu, $(location) ile aynı değiştirme işlemidir ancak farklı bir kapsamda uygulanır.

out_templates

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

extra_action komutuyla oluşturulan dosyalar için şablonların 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 değeri; varsayılan değer False'dır.

Bu extra_action için orijinal işlemin çıktısının bu extra_action'ya giriş olarak sağlanması gerektiğ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

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

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

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

Derleme sistemi, extra_action komutu çalıştırılmadan önce bu ön koşulların karşılanmasını sağlar. Bu ön koşullar, derleme sırasında bir araç olarak çalıştırılmaları gerektiğinden execyapılandırması kullanılarak karşılanır. Tek bir tools hedef //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, birleştirilmiş ağacın kökü olur.