işlemler

İşlem oluşturmaya yönelik işlevler sağlayan modüldür. Bu modüle ctx.actions kullanarak erişebilirsiniz.

Üyeler

args

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 en boy özelliğinin geçerli pakette, verilen adla 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() ile bir işlem komutuyla genişletilebilir.

Parametreler

Parametre Açıklama
filename gerekli
"Eşdüzey" sağlanmamışsa yeni dizinin geçerli pakete göre yolu. Aksi takdirde, dosyanın temel adı ("sibling" bir dizini tanımlar).
sibling File; or None; default = 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 en boy özelliğinin belirtilen dosya adına sahip bir dosya oluşturduğunu belirtir. sibling belirtilmezse dosya adı paket diziniyle görelidir, aksi takdirde dosya sibling ile aynı dizinde olur. Dosyalar, mevcut paketin dışında oluşturulamaz.

Bir dosyayı bildirmenizin yanı sıra, dosyayı yayınlayan bir işlemi de ayrıca oluşturmanız gerektiğini unutmayın. Bu işlemi oluşturmak, döndürülen File nesnesinin işlemin oluşturma işlevine geçirilmesini gerektirir.

Önceden tanımlanmış çıkış dosyalarının bu işlev kullanılarak bildirilmesine gerek olmadığını (ve yapılamayacağını) unutmayın. Bunun yerine, File nesnelerini ctx.outputs üzerinden alabilirsiniz. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
filename gerekli
"Eşdüzey" sağlanmamışsa yeni dosyanın, geçerli pakete göre yolu. Aksi takdirde, dosyanın temel adı ("eşdüzey" bir dizini belirler).
sibling File; or None; varsayılan = Yok
Yeni oluşturulan dosyayla aynı dizinde bulunan bir dosya. Dosya geçerli pakette olmalıdır.

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

Deneysel. Bu parametre deneme amaçlıdır ve herhangi bir zamanda değiştirilebilir. Lütfen bu özelliğe güvenmeyin. --experimental_allow_unresolved_symlinks ayarlanarak deneysel olarak etkinleştirilebilir.

Kuralın veya özelliğin geçerli pakette verilen adla sembolik bir bağlantı oluşturduğunu belirtir. Bu sembolik bağlantıyı oluşturan bir işlem oluşturmanız gerekir. Bazel, bu sembolik bağlantıyı hiçbir zaman değiştirmez ve tamamen korumalı alanlara ya da uzak yürütücülere aktarır.

Parametreler

Parametre Açıklama
filename gerekli
"Eşdüzey" sağlanmamışsa yeni sembolik bağlantının yolu, geçerli pakete göre belirlenir. Aksi takdirde, dosyanın temel adı ("sibling" bir dizini tanımlar).
sibling File; or None; varsayılan = Yok
Yeni bildirilen sembolik bağlantıyla aynı dizinde bulunan bir dosya.

do_nothing

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

Komut çalıştırmayan veya herhangi bir çıkış üretmeyen ancak "extra işlemler" eklemek için faydalı olan boş bir eylem oluşturur.

Parametreler

Parametre Açıklama
mnemonic gerekli
İşlemin tek kelimelik bir açıklaması (örneğin, CppCompile veya GoLink).
inputs sequence of Files; or depset; default = []
İş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ırada substitutions sözlüğü kullanılarak değiştirilir. Sözlüğün bir anahtarı şablonda (veya önceki bir değişikliğin sonucunda) göründüğünde, 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 gerekli
UTF-8 olarak kodlanmış metin dosyası olan şablon dosyası.
output gerekli
UTF-8 olarak kodlanmış metin dosyası olan çıkış dosyası.
substitutions default = {}
Şablonu genişletirken yapılacak değişiklikler.
is_executable default = False
Çıkış dosyasının yürütülebilir olup olmayacağı.
computed_substitutions TemplateDict; varsayılan = sınırsız
Deneysel. Bu parametre deneme amaçlıdır ve herhangi bir zamanda değiştirilebilir. Lütfen bu özelliğe güvenmeyin. Bu işlev, --+experimental_lazy_template_expansion
Deneysel: Ş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=None)

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

Parametreler

Parametre Açıklama
outputs sequence of Files; zorunlu
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; or depset; default = []
İşlemin giriş dosyalarını listeleyin veya kaldırın.
unused_inputs_list File; or None; varsayılan = Yok
İş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 yürütülmesi sırasında kullanılmayan giriş dosyaları listesine karşılık gelir. Bu dosyalardaki değişiklikler, işlemin sonuçlarını hiçbir şekilde etkilememelidir.

executable File; or string; or FilesToRunProvider; gerekli
İşlem tarafından çağrılacak yürütülebilir dosya.
tools sequence; or depset; varsayılan = sınırsız
İşlem için gereken tüm araçları listeleyin veya kaldırın. Araçlar, işlem için otomatik olarak kullanıma sunulan ek çalıştırma dosyaları içeren girişlerdir. Bir liste sağlandığında Files, FilesToRunProvider örneklerinden veya Files'ın alt kümelerinden oluşan heterojen bir koleksiyon olabilir. Doğrudan listede bulunan ve ctx.executable dosyasından gelen dosyaların çalıştırma dosyaları otomatik olarak eklenir. Bir depset sağlandığında yalnızca Dosyalar içermelidir. Her iki durumda da, işletim dosyaları için ctx.executable ile çapraz başvuru yapılmaz.
arguments sequence; default = []
İşlemin komut satırı bağımsız değişkenleri. Dizelerden veya actions.args() nesnelerinden oluşan bir liste olmalıdır.
mnemonic string; or None; varsayılan = Yok
İşlemin tek kelimelik bir açıklaması, örneğin CppCompile veya GoLink.
progress_message string; or None; varsayılan = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı. Örneğin, "foo.o oluşturmak için foo.cc derleniyor". İleti; etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilecek %{label}, %{input} veya %{output} kalıpları içerebilir. Statik dizeler daha etkili olduğundan statik dizeler yerine kalıp kullanmayı tercih edin.
use_default_shell_env default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağını belirtir.
env dict; or None; default = None
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemi planlamayla ilgili bilgi. Kullanışlı anahtarlar için etiketlere bakın.
input_manifests sequence; or None; varsayılan = Yok
(Deneysel), giriş çalıştırma dosyaları meta verilerini ayarlar. Bunlar genellikleresolve_command tarafından oluşturulur.
exec_group string; or None; default = 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 Action; default = None
Belirtilen gölgelenen işlemin girişlerini ve ortamın işlemin giriş listesine ve ortamına eklenen ortamını kullanarak işlemi çalıştırır. İşlem ortamı, gölgelendirilen işlemin ortam değişkenlerinin herhangi birinin üzerine yazabilir. Yoksa yalnızca işlemin girişlerini ve belirtilen ortamı kullanır.
resource_set callable; or None; varsayılan = Yok
Bu işlem yerel olarak çalıştırıldığında, yürütme sırasında kaynak kullanımını tahmin etmek için kullanılan bir kaynak grubu sözlüğü döndüren geri çağırma işlevi.

İşlev iki konumsal bağımsız değişkeni kabul eder: OS adını temsil eden bir dize (ör. "osx") ve işlem girdilerinin sayısını temsil eden bir tam sayı. Döndürülen sözlük şu girişleri içerebilir ve bunların her biri bir float veya int olabilir:

  • "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ışsa varsayılan değerler kullanılır.

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

toolchain Label; or string; or None; varsayılan = Yok

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.

Bu seçenek şu anda kullanılamıyor. Ancak gelecekteki Bazel sürümlerinde gerekli olacağından bir araç zinciri kullanıldığında bu yöntemi ayarlamanızı öneririz.

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

"araç zinciri" ve "exec_group" parametrelerinin ikisi de ayarlandığında "exec_group" kullanılır. "exec_group" aynı değeri belirtmezse bir hata verilir.

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=None)

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

Parametreler

Parametre Açıklama
outputs sequence of Files; zorunlu
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; or depset; default = []
İşlemin giriş dosyalarını listeleyin veya kaldırın.
tools sequence of Files; or depset; varsayılan = sınırsız
İşlem için gereken tüm araçları listeleyin veya kaldırın. Araçlar, işlem için otomatik olarak kullanıma sunulan ek çalıştırma dosyaları içeren girişlerdir. Liste, Files veya FilesToRunProvider örneklerini içerebilir.
arguments sequence; default = []
İşlemin komut satırı bağımsız değişkenleri. Dizelerden veya actions.args() nesnelerinden oluşan bir liste olmalıdır.

Bazel, bu özellikteki öğeleri komuta bağımsız değişkenler olarak aktarır.Komut, bu bağımsız değişkenlere $1, $2 gibi kabuk değişkeni değişiklikleri kullanarak erişebilir. Dizine ekleme işleminden önce Args nesneleri düzleştirildiği için bilinmeyen bir Args nesnesi varsa sonraki tüm dizeler öngörülemeyen dizinlerde olur. Tüm bağımsız değişkenleri almak için $@ işlevinin belirsiz boyutlu Args nesneleriyle birlikte kullanılması yararlı olabilir.

command bir dize listesiyse bu parametre kullanılmayabilir.

mnemonic string; or None; varsayılan = Yok
İşlemin tek kelimelik bir açıklaması, örneğin CppCompile veya GoLink.
command string; or sequence of strings; yürütülmesi gerekir
kabuk komutu. Bu, bir dize (tercih edilen) veya bir dize dizisi (kullanımdan kaldırıldı) olabilir.

command bir dizeyse sh -c <command> "" <arguments> tarafından yürütülür. Bu durumda, arguments içindeki öğeler komut tarafından $1, $2 (veya Windows toplu işlem kullanılıyorsa %1, %2) vb. şeklinde kullanılabilir. arguments herhangi bir actions.args() nesnesi içeriyorsa bunların içerikleri komut satırına tek tek eklenir. Böylece $i, Args nesnesindeki bağımsız dizelere referans verebilir. Boyutu bilinmeyen bir Args nesnesi arguments öğesinin parçası olarak iletilirse, dizelerin bilinmeyen dizinlerde olacağını unutmayın. Bu durumda, $@ kabuk değişimi (tüm bağımsız değişkenleri al) yararlı olabilir.

(Kullanımdan kaldırıldı) command bir dize dizisiyse ilk öğe çalıştırılacak yürütülebilir dosya, geri kalan öğeler ise bunların 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. "--incompatible_run_shell_command_string" ile devre dışı bırakıldı. Kodunuzun uyumlu olduğunu doğrulamak için bu işareti kullanın.

Bazel, komutu yürütmek için Genrules için kullandığı kabuğu kullanır.

progress_message string; or None; varsayılan = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı. Örneğin, "foo.o oluşturmak için foo.cc derleniyor". İleti; etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilecek %{label}, %{input} veya %{output} kalıpları içerebilir. Statik dizeler daha etkili olduğundan statik dizeler yerine kalıp kullanmayı tercih edin.
use_default_shell_env default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağını belirtir.
env dict; or None; default = None
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemi planlamayla ilgili bilgi. Kullanışlı anahtarlar için etiketlere bakın.
input_manifests sequence; or None; varsayılan = Yok
(Deneysel), giriş çalıştırma dosyaları meta verilerini ayarlar. Bunlar genellikleresolve_command tarafından oluşturulur.
exec_group string; or None; default = 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 Action; default = None
Belirtilen gölgelenen işlemin, işlemin giriş listesine eklenen keşfedilen girişlerini kullanarak işlemi çalıştırır. Yoksa yalnızca işlemin girişlerini kullanır.
resource_set callable; or None; varsayılan = Yok
Yerel olarak çalıştırılırsa kaynak kullanımını tahmin etmek için bir geri çağırma işlevi. İlgili konu:ctx.actions.run().
toolchain Label; or string; or None; varsayılan = Yok

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.

Bu seçenek şu anda kullanılamıyor. Ancak gelecekteki Bazel sürümlerinde gerekli olacağından bir araç zinciri kullanıldığında bu yöntemi ayarlamanızı öneririz.

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

"araç zinciri" ve "exec_group" parametrelerinin ikisi de ayarlandığında "exec_group" kullanılır. "exec_group"un aynı araç zincirini belirtmemesi durumunda bir hata verilir.

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

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

Bu işlev, tam olarak target_file veya target_path belirtilmelidir.

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

Aksi takdirde, target_path özelliğini kullandığınızda declare_symlink() ile output tanımlayın. Bu durumda, sembolik bağlantı target_path'i işaret eder. Bazel hiçbir zaman sembolik bağlantıyı çözümlemez ve bu işlemin sonucu 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 sembolik bir bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output gerekli
Bu işlemin sonucu.
target_file File; or None; varsayılan = Yok
Çıkış sembolik bağlantısının işaret edeceği dosya.
target_path string; or None; varsayılan = Yok
(Deneysel) Çıkış sembolik bağlantısının işaret edeceği tam yol. Normalleştirme veya başka işlemler uygulanmaz. Bu özelliğe erişim için --experimental_allow_unresolved_symlinks ayarlanması gerekir.
is_executable default = False
Yalnızca target_file ile kullanılabilir, target_path ile kullanılamaz. Doğru değerine ayarlanırsa işlem yürütüldüğünde target_file yolunun yürütülebilir olduğunu doğrulamak için yolu kontrol edilir. Yürütülmezse bir hata bildirilir. is_executable politikasının Yanlış değerine ayarlanması hedefin yürütülebileceği anlamına gelmez, yalnızca doğrulama yapılmadığı anlamına gelir.

Derleme sırasında sallanan sembolik bağlantılar bulunmayabileceğinden bu özellik target_path için anlamlı değildir.

progress_message string; or None; varsayılan = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı.

template_dict

TemplateDict actions.template_dict()

Deneysel. Bu API deneyseldir ve herhangi bir zamanda değiştirilebilir. Lütfen bu özelliğe güvenmeyin. --+experimental_lazy_template_expansion ayarıyla deneysel olarak etkinleştirilebilir.
Deneysel: 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, belirtilen içeriği bir dosyaya yazar. Bu özellik, 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çerik varsa expand_template kullanmayı düşünün.

Parametreler

Parametre Açıklama
output gerekli
Çıkış dosyası.
content string; or Args; zorunlu
dosyanın içeriği. Dize veya actions.args() nesnesi olabilir.
is_executable default = False
Çıkış dosyasının yürütülebilir olup olmayacağı.