işlemler

. Sorun bildir Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

. İşlem oluşturma işlevleri sağlayan modül. Bu modüle ctx.actions adresinden erişebilirsiniz.

Üyeler

bağımsız değişkenler

Args actions.args()

Bellek açısından verimli komut satırları oluşturmak için kullanılabilecek bir Args nesnesi döndürür.

declare_directory

File actions.declare_directory(filename, *, sibling=None)

Kuralın veya özelliğin, geçerli pakette belirtilen ada sahip bir dizin oluşturduğunu bildirir. Dizini oluşturan bir işlem oluşturmanız gerekir. Dizinin içeriğine Starlark'tan doğrudan erişilemez, ancak Args.add_all() kullanılarak genişletilebilir. declare_directory öğesinin genişletilmiş içeriğinde yalnızca normal dosyalar ve dizinler bulunabilir.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" yoksa sağlanan yeni dizin yolunu gösterir. Aksi takdirde, dosya için temel bir ad ('sibling' bir dizini tanımlar).
sibling File (Dosya); veya None; varsayılan değer: None
Yeni bildirilen dizinle aynı dizinde bulunan bir dosya. Dosya geçerli pakette olmalıdır.

declare_file

File actions.declare_file(filename, *, sibling=None)

Kuralın veya özelliğin belirtilen dosya adına sahip bir dosya oluşturduğunu bildirir. sibling belirtilmezse dosya adı paket dizinine göre belirlenir. Aksi takdirde dosya, sibling ile aynı dizinde olur. Dosyalar, geçerli paketin dışında oluşturulamaz.

Bir dosyayı bildirmeye ek olarak, dosyayı yayınlayan bir işlem de oluşturmanız gerektiğini unutmayın. Bu işlemin oluşturulması, döndürülen File nesnesinin işlemin oluşturma işlevine iletilmesini gerektirir.

Önceden bildirilmiş çıkış dosyalarının bu işlev kullanılarak bildirilmesinin gerekmediğini (ve bildirilemeyeceğini) unutmayın. Bunun yerine, ctx.outputs öğesinden File nesnesini alabilirsiniz. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" yoksa sağlanan yeni dosyanın yolunu gösterir. Aksi takdirde, dosyanın temel adı ('sibling' bir dizini belirler).
sibling File (Dosya); veya None; varsayılan değer: None
Yeni oluşturulan dosyayla aynı dizinde bulunan bir dosya. Dosya geçerli pakette olmalıdır.

File actions.declare_symlink(filename, *, sibling=None)

Kuralın veya özelliğin, geçerli pakette belirtilen adla bir sembolik bağlantı oluşturduğunu bildirir. Bu sembolik bağlantıyı oluşturan bir işlem oluşturmalısınız. Bazel, bu sembolik bağlantıyı hiçbir zaman kaldırmaz ve tam olarak korumalı alanlara veya uzak yürütücülere aktarır. Ağaç yapılarının içindeki simge bağlantıları şu anda desteklenmemektedir.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" yoksa sağlanan yeni sembolik bağlantının mevcut pakete göre yolunu gösterir. Aksi takdirde, dosya için temel bir ad ('sibling' bir dizini tanımlar).
sibling File (Dosya); veya None; varsayılan değer: None
Yeni bildirilen sembolik bağlantıyla aynı dizinde bulunan bir dosya.

do_nothing

None actions.do_nothing(mnemonic, inputs=[])

Bir komut yürütmeyen veya herhangi bir çıkış üretmeyen ancak "ekstra eylemler" eklenmesi için yararlı olan boş bir eylem oluşturur.

Parametreler

Parametre Açıklama
mnemonic zorunlu
İşlemin tek kelimelik bir açıklaması, örneğin, CppCompile veya GoLink.
inputs sequence of Files; veya depset; varsayılan ayar []
İşlemin giriş dosyalarının listesi.

expand_template

None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)

Şablon genişletme işlemi oluşturur. İşlem yürütüldüğünde, şablona dayalı bir dosya oluşturur. Şablonun bazı bölümleri, değişikliklerin belirtildiği sırayla substitutions sözlüğü kullanılarak değiştirilecek. Şablonda bir sözlük anahtarı göründüğünde (veya önceki bir değiştirme işleminin sonucunda), söz konusu anahtar ilişkili değerle değiştirilir. Anahtarlar için özel bir söz dizimi yoktur. Örneğin, çakışmaları önlemek için küme parantezleri kullanabilirsiniz (örneğin, {KEY}). Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
template zorunlu
UTF-8 olarak kodlanmış bir metin dosyası olan şablon dosyası.
output zorunlu
UTF-8 olarak kodlanmış bir metin dosyası olan çıkış dosyası.
substitutions varsayılan değer {}
Şablonu genişletirken yapılacak değişiklikler.
is_executable varsayılan değer False
Çıkış dosyasının yürütülebilir olup olmayacağı.
computed_substitutions TemplateDict; varsayılan değer: unbound
Şablonu genişletirken yapılacak değişiklikler.

run

None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

Yürütülebilir dosya çalıştıran bir işlem oluşturur. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
outputs sequence of Files; gerekli
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; veya depset; varsayılan ayar []
İşlemin giriş dosyalarının listesi veya görünüşü.
unused_inputs_list File (Dosya); veya None; varsayılan değer: None
İşlem tarafından kullanılmayan girişlerin listesini içeren dosya.

Bu dosyanın içeriği (genellikle işlemin çıkışlarından biri), işlemin tamamı sırasında kullanılmayan giriş dosyalarının listesine karşılık gelir. Bu dosyalarda yapılan değişiklikler, eylemin sonuçlarını hiçbir şekilde etkilememelidir.

executable File (Dosya); veya string; veya FilesToRunProvider; gerekli
İşlem tarafından çağrılacak yürütülebilir dosya.
tools sequence; veya depset; varsayılan değer unbound
İşlem için gereken tüm araçları listeleyin veya tanımlayın. Araçlar, işlem için otomatik olarak kullanıma sunulan ek çalıştırma dosyalarına sahip girişlerdir. Bir liste sağlandığında, Files'ın, FilesToRunProvider örneklerinin veya Files'ın alt kümelerinin heterojen bir koleksiyonu olabilir. Doğrudan listede bulunan ve ctx.executable öğesinden gelen dosyaların çalıştırma dosyaları otomatik olarak eklenir. Bir tanımlayıcı sağlandığında yalnızca Dosyalar içermelidir. Her iki durumda da, depsets içindeki dosyalara çalıştırma dosyaları için ctx.executable ile çapraz referans verilmez.
arguments sequence; varsayılan değer: []
İşlemin komut satırı bağımsız değişkenleri. Dize veya actions.args() nesnelerinden oluşan bir liste olmalıdır.
mnemonic string; veya None; varsayılan değer: None
İşlemin tek kelimelik bir açıklaması, örneğin, CppCompile veya GoLink.
progress_message string; veya None; varsayılan değer: None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı. Örneğin, "foo.o oluşturmak için foo.cc dosyası derleniyor". Mesaj, sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} veya %{output} kalıpları içerebilir. Statik dizeler daha verimli olduğundan bu dizeler yerine kalıplar kullanmayı tercih edin.
use_default_shell_env varsayılan değer False
İşlemin, işletim sistemine bağlı birkaç değişkenden ve --action_env aracılığıyla ayarlanan değişkenlerden oluşan varsayılan kabuk ortamını kullanıp kullanmayacağı.

Hem use_default_shell_env hem de env, True olarak ayarlanırsa env ürününde ayarlanan değerler, --incompatible_merge_fixed_and_default_shell_env etkinse varsayılan kabuk ortamının üzerine yazılır. Bayrak etkinleştirilmezse env yoksayılır.

env dict; veya None; varsayılan değer: None
Ortam değişkenleri sözlüğünü ayarlar.

Hem use_default_shell_env hem de env, True olarak ayarlanırsa env ürününde ayarlanan değerler, --incompatible_merge_fixed_and_default_shell_env etkinse varsayılan kabuk ortamının üzerine yazılır. Bayrak etkinleştirilmezse env yoksayılır.

execution_requirements dict; veya None; varsayılan değer: None
İşlemi programlama bilgileri. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; veya None; varsayılan değer: None
(Deneysel) giriş çalıştırma dosyaları meta verilerini ayarlar; genellikle çözümleme_komutu ile oluşturulurlar.
exec_group string; veya None; varsayılan değer: None
İşlemi belirtilen yönetici grubunun yürütme platformunda çalıştırır. Yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action İşlem; varsayılan değer: None
İşlemi, belirtilen gölgelendirilmiş işlemin girişlerini ve işlemin giriş listesine ve ortamına eklenen ortamı kullanarak çalıştırır. İşlem ortamı, gölgelendirilen işlemin ortam değişkenlerinin üzerine yazabilir. Yoksa yalnızca işlemin girişlerini ve belirtilen ortamı kullanır.
resource_set çağrılabilir; veya None; varsayılan değer None
Bu işlem yerel olarak çalıştırılırsa yürütme zamanında kaynak kullanımını tahmin etmek için kullanılan, kaynak grubu sözlüğü döndüren bir geri çağırma işlevi.

İşlev, iki konum bağımsız değişkenini kabul eder: OS adını temsil eden bir dize (ör. "osx") ve işleme yönelik giriş sayısını temsil eden bir tam sayı. Döndürülen sözlük, her biri kayan nokta veya tam sayı olabilen aşağıdaki girişleri içerebilir:

  • "cpu": CPU sayısı; varsayılan 1
  • "memory": MB cinsinden; varsayılan 250
  • "local_test": yerel test sayısı; varsayılan 1

Bu parametre None değerine ayarlanırsa veya --experimental_action_resource_set yanlış değerine ayarlanırsa varsayılan değerler kullanılır.

Geri çağırma üst düzey olmalıdır (lambda ve iç içe yerleştirilmiş işlevlere izin verilmez).

toolchain Etiket; veya string; veya None; varsayılan değer unbound

Yürütülebilir dosyanın veya bu işlemde kullanılan araçların araç zinciri türü. İşlemin doğru yürütme platformunda yürütülebilmesi için parametrenin ayarlanması gerekir.

Şu anda herhangi bir işlem yapılmasına gerek yoktur ancak gelecekteki Bazel sürümlerinde gerekli olacağı için araç zinciri kullanıldığında bunu ayarlamanızı öneririz.

Bu işlemi oluşturan kuralın bu araç zincirini "rule()" içinde tanımlaması gerektiğini unutmayın. işlevini kullanın.

"toolchain" ve "exec_group" parametrelerinin ikisi de ayarlandığında "exec_group" kullanılır. "exec_group" tarafından aynı belirtilmediği durumlarda hata oluşur.

run_shell

None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

Kabuk komutu çalıştıran bir işlem oluşturur. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
outputs sequence of Files; gerekli
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; veya depset; varsayılan ayar []
İşlemin giriş dosyalarının listesi veya görünüşü.
tools sequence of Files; veya depset; varsayılan ayar unbound
İşlem için gereken tüm araçları listeleyin veya tanımlayın. Araçlar, işlem için otomatik olarak kullanıma sunulan ek çalıştırma dosyalarına sahip girişlerdir. Liste, Files veya FilesToRunProvider örneklerini içerebilir.
arguments sequence; varsayılan değer: []
İşlemin komut satırı bağımsız değişkenleri. Dize veya actions.args() nesnelerinden oluşan bir liste olmalıdır.

Bazel, bu özellikteki öğeleri komuta bağımsız değişken olarak iletir. Komut, $1, $2 vb. kabuk değişkeni ikamelerini kullanarak bu bağımsız değişkenlere erişebilir. Bağımsız değişkenler nesneleri dizine eklenmeden önce düzeltildiğinden, bilinmeyen boyutta bir Args nesnesi varsa sonraki tüm dizelerin tahmin edilemeyen dizinlerde olacağını unutmayın. Belirsiz boyutlu bağımsız değişken nesneleriyle birlikte $@ özelliğinin (tüm bağımsız değişkenleri almak için) kullanılması yararlı olabilir.

command değerinin bir dize listesi olduğu durumlarda bu parametre kullanılamaz.

mnemonic string; veya None; varsayılan değer: None
İşlemin tek kelimelik bir açıklaması, örneğin, CppCompile veya GoLink.
command string; dize dizisi veya gerekli
Yürütülecek kabuk komutu. Bu, bir dize (tercih edilen) veya dize (desteği sonlandırılmış) dizisi olabilir.

command bir dizeyse sh -c <command> "" <arguments> tarafından sanki yürütülür. Yani arguments içindeki öğeler $1, $2 (veya Windows grubu kullanılıyorsa %1, %2) vb. komutta kullanılabilir hale gelir. arguments öğesi bir actions.args() nesnesi içeriyorsa bunların içerikleri tek tek komut satırına eklenir. Dolayısıyla $i, Args nesnesindeki bağımsız dizelere başvuruda bulunabilir. arguments öğesinin bir parçası olarak bilinmeyen boyutlu bir bağımsız değişken nesnesi aktarılırsa dizelerin bilinmeyen dizinlerde olacağını unutmayın; bu durumda $@ kabuk değişikliği (tüm bağımsız değişkenleri al) faydalı olabilir.

(Kullanımdan kaldırıldı) command bir dize dizisiyse ilk öğe çalıştırılabilir, geri kalan öğeler ise bağımsız değişkenleridir. Bu form kullanılırsa arguments parametresi sağlanmamalıdır. Bu formun artık kullanılmadığını ve yakında kaldırılacağını unutmayın. "--inuyumlu_run_shell_command_string" ile devre dışı bırakılmıştır. Kodunuzun uyumlu olduğunu doğrulamak için bu işareti kullanın.

Bazel, komutu yürütmek için genrules ile aynı kabuğu kullanır.

progress_message string; veya None; varsayılan değer: None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı. Örneğin, "foo.o oluşturmak için foo.cc dosyası derleniyor". Mesaj, sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} veya %{output} kalıpları içerebilir. Statik dizeler daha verimli olduğundan bu dizeler yerine kalıplar kullanmayı tercih edin.
use_default_shell_env varsayılan değer False
İşlemin, işletim sistemine bağlı birkaç değişkenden ve --action_env aracılığıyla ayarlanan değişkenlerden oluşan varsayılan kabuk ortamını kullanıp kullanmayacağı.

Hem use_default_shell_env hem de env, True olarak ayarlanırsa env ürününde ayarlanan değerler, --incompatible_merge_fixed_and_default_shell_env etkinse varsayılan kabuk ortamının üzerine yazılır. Bayrak etkinleştirilmezse env yoksayılır.

env dict; veya None; varsayılan değer: None
Ortam değişkenleri sözlüğünü ayarlar.

Hem use_default_shell_env hem de env, True olarak ayarlanırsa env ürününde ayarlanan değerler, --incompatible_merge_fixed_and_default_shell_env etkinse varsayılan kabuk ortamının üzerine yazılır. Bayrak etkinleştirilmezse env yoksayılır.

execution_requirements dict; veya None; varsayılan değer: None
İşlemi programlama bilgileri. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; veya None; varsayılan değer: None
(Deneysel) giriş çalıştırma dosyaları meta verilerini ayarlar; genellikle çözümleme_komutu ile oluşturulurlar.
exec_group string; veya None; varsayılan değer: None
İşlemi belirtilen yönetici grubunun yürütme platformunda çalıştırır. Yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action İşlem; varsayılan değer: None
Belirtilen gölgelendirilmiş işlemin, işlemin giriş listesine eklenen keşfedilen girişleri kullanarak işlemi çalıştırır. Yoksa yalnızca işlemin girişlerini kullanır.
resource_set çağrılabilir; veya None; varsayılan değer None
Yerel olarak çalıştırıldığında kaynak kullanımını tahmin etmek için kullanılan bir geri çağırma işlevi. ctx.actions.run() başlıklı makaleyi inceleyin.
toolchain Etiket; veya string; veya None; varsayılan değer unbound

Yürütülebilir dosyanın veya bu işlemde kullanılan araçların araç zinciri türü. İşlemin doğru yürütme platformunda yürütülebilmesi için parametrenin ayarlanması gerekir.

Şu anda herhangi bir işlem yapılmasına gerek yoktur ancak gelecekteki Bazel sürümlerinde gerekli olacağı için araç zinciri kullanıldığında bunu ayarlamanızı öneririz.

Bu işlemi oluşturan kuralın bu araç zincirini "rule()" içinde tanımlaması gerektiğini unutmayın. işlevini kullanın.

"toolchain" ve "exec_group" parametrelerinin ikisi de ayarlandığında "exec_group" kullanılır. "exec_group" tarafından aynı belirtilmediği durumlarda hata oluşur. kullanabilirsiniz.

None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)

Dosya sisteminde sembolik bağlantı yazan bir işlem oluşturur.

Bu işlev, target_file veya target_path değerlerinden tam olarak biri belirtilerek çağrılmalıdır.

target_file türünü kullanırken output öğesini declare_file() veya declare_directory() ile tanımlayın ve target_file türünü eşleştirin. Bu, sembolik bağlantıyı target_file işaret eder. Sembolik bağlantının hedefi veya içeriği her değiştiğinde Bazel bu işlemin çıkışını geçersiz kılar.

Aksi takdirde, target_path kullandığınızda declare_symlink() ile output bildiriminde bulunun. Bu durumda sembolik bağlantı target_path işaretini gösteriyor. Bazel, sembolik bağlantıyı hiçbir zaman çözümlemez ve bu işlemin çıkışı yalnızca sembolik bağlantının metin içeriği (yani readlink() değeri) değiştiğinde geçersiz kılınır. Bu, özellikle, sallanan bir sembolik bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output zorunlu
Bu işlemin sonucu.
target_file File (Dosya); veya None; varsayılan değer: None
Çıkış sembolik bağlantısının işaret edeceği dosya.
target_path string; veya None; varsayılan değer: None
Çıkış sembolik bağlantısının işaret edeceği tam yol. Normalleştirme veya başka işlemler uygulanmaz.
is_executable varsayılan değer False
target_path ile değil, yalnızca target_file ile kullanılabilir. True (doğru) ise, işlem yürütüldüğünde, yürütülebilir olduğunu onaylamak için target_file yolunun yolu kontrol edilir ve değilse bir hata bildirilir. is_executable politikasının Yanlış değerine ayarlanması hedefin yürütülebilir olmadığı anlamına gelmez, yalnızca doğrulama yapılmadığını gösterir.

Derleme sırasında sarkan sembolik bağlantılar mevcut olmayabileceğinden bu özellik target_path için bir anlam ifade etmez.

progress_message string; veya None; varsayılan değer: None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı.

template_dict

TemplateDict actions.template_dict()

Bellek açısından verimli şablon genişletmesi için bir TemplateDict nesnesi döndürür.

write

None actions.write(output, content, is_executable=False)

Dosya yazma işlemi oluşturur. İşlem yürütüldüğünde, verilen içerik bir dosyaya yazılır. Bu mod, analiz aşamasında mevcut olan bilgileri kullanarak dosya oluşturmak için kullanılır. Dosya büyükse ve çok fazla statik içeriğe sahipse expand_template kullanabilirsiniz.

Parametreler

Parametre Açıklama
output zorunlu
Çıkış dosyası.
content string; veya Args; gerekli
dosyanın içeriği hakkında daha fazla bilgi edinin. Bir dize veya actions.args() nesnesi olabilir.
is_executable varsayılan değer False
Çıkış dosyasının yürütülebilir olup olmayacağı.