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üleme
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ı kendiliğinden çıkış yapmaz. 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 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ö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: Ek işlemlerin desteği sonlandırıldı. Bunun yerine yönleri 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ı, $(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 dosyasını inceleyin. Her proto dosyası bir ExtraActionInfo mesajı içerir.

Diğer tüm işlemler gibi ek işlemler de korumalı alana yerleştirilir ve bu durumu ele alacak ş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 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) öğesinin tüm tekrarları, label ile belirtilen dosya yoluyla değiştirilir.

    Örneğin, 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 []'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 öğesinin, orijinal işlem çıkışının bu extra_action için giriş olarak mevcut olmasını gerektirdiğini belirtir.

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.