işlemler

İşlem oluşturmaya yönelik işlevler sağlayan modül. Bu modüle ctx.actions ile erişin.

Ü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 özelliğin geçerli pakette belirtilen ada sahip bir dizin oluşturduğunu belirtir. Dizini oluşturan bir işlem oluşturmanız gerekir. Dizinin içeriğine doğrudan Starlark'tan erişilemez ancak Args.add_all() ile bir işlem komutuyla genişletilebilir.

Parametreler

Parametre Açıklama
filename gerekli
"kardeş" öğesi sağlanmamışsa yeni dizinin, mevcut pakete göre yolu. Aksi takdirde, dosyanın temel adı ("kardeş" bir dizini tanımlar).
sibling File; or None; varsayılan = Yok
Yeni bildirilen dizinle aynı dizinde bulunan bir dosya. Dosya mevcut 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 belirtir. sibling belirtilmezse dosya adı paket dizinine göreli olur, aksi takdirde dosya sibling ile aynı dizinde olur. Dosyalar, geçerli 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şlemin oluşturulması, 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, bunların 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, mevcut pakete göre yolu. Aksi takdirde, dosya için temel ad ("kardeş" bir dizini belirler).
sibling File; or None; varsayılan = Yok
Yeni oluşturulan dosyayla aynı dizinde bulunan bir dosya. Dosya mevcut 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şebilir. Lütfen bu özelliğe güvenmeyin. Bu özellik, --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 veya 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 mevcut pakete göre yolu. Aksi takdirde, dosyanın temel adı ("kardeş" bir dizini tanımlar).
sibling File; or None; default = Yok
Yeni bildirilen sembolik bağlantıyla aynı dizinde bulunan bir dosya.

do_nothing

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

Komut yürütmeyen veya herhangi bir çıkış yapmayan ancak "ekstra eylemler" eklemek için yararlı olan boş bir eylem oluşturur.

Parametreler

Parametre Açıklama
mnemonic gerekli
İşlemin tek kelimelik 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şturulur. Şablonun bazı bölümleri, değişikliklerin belirtildiği sırayla substitutions sözlüğü kullanılarak değiştirilir. Sözlüğün bir anahtarı şablonda (veya önceki bir değişikliğin sonucu) 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şebilir. Lütfen bu özelliğe güvenmeyin. --+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 dosya çalıştıran 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; varsayılan = []
İşlemin giriş dosyalarının listesi veya silindir.
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), tüm işlem yürütme sırasında kullanılmayan giriş dosyaları listesine karşılık gelir. Bu dosyalarda yapılan herhangi bir değişiklik, 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; default = unbound
İş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 alt küme sağlandığında yalnızca Dosyalar içermelidir. Her iki durumda da, alt konumlardaki dosyalar için çalıştırma dosyaları için ctx.executable ile çapraz başvuru yapılmaz.
arguments sequence; varsayılan = []
İşlemin komut satırı bağımsız değişkenleridir. Dizelerden veya actions.args() nesnelerinden oluşan bir liste olmalıdır.
mnemonic string; or None; varsayılan = Yok
İşlemin tek kelimelik 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 durumu mesajı. Örneğin, "foo.o oluşturmak için foo.cc derleniyor". İleti, 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 statik dizeler yerine kalıplar kullanmayı tercih edin.
use_default_shell_env default = False
İşlemin, yerleşik kabuk ortamını kullanıp kullanmaması gerektiği.
env dict; or None; varsayılan = Yok
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemin planlanmasına ilişkin bilgiler. 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 = Yok
İş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 = Yok
Belirtilen gölgelendirilmiş eylemin girişlerini ve ortamının giriş listesine ve ortamına ekleyerek 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, her biri float veya int 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 olarak 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 yerleştirilmiş işlevlere izin verilmez).

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

Bu işlemde kullanılan yürütülebilir öğenin veya 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 yoktur, ancak gelecekteki Bazel sürümlerinde gerekli olacağı için bu aracı bir araç zinciri kullanıldığında ayarlamanızı öneririz.

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

Hem "araç zinciri" hem de "exec_group" parametrelerinin ayarlanması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; varsayılan = []
İşlemin giriş dosyalarının listesi veya silindir.
tools sequence of Files; or depset; default = unbound
İş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 örnekleri içerebilir.
arguments sequence; varsayılan = []
İşlemin komut satırı bağımsız değişkenleridir. Dizelerden veya actions.args() nesnelerinden oluşan bir liste olmalıdır.

Bazel, bu özellikteki öğeleri komuta bağımsız değişkenler olarak iletir.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 boyutta bir Args nesnesi varsa sonraki tüm dizeler öngörülemez dizinlerde olur. $@ (tüm bağımsız değişkenleri almak için) belirsiz boyutlu Args nesneleriyle birlikte kullanılması yararlı olabilir.

command bir dize listesiyse bu parametre kullanılamaz.

mnemonic string; or None; varsayılan = Yok
İşlemin tek kelimelik açıklaması; örneğin, CppCompile veya GoLink.
command string; or sequence of strings; zorunlu
Yürütülecek 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, komutun $1, $2 (veya Windows toplu işlemi kullanılıyorsa %1, %2) vb. şeklinde kullanılabilir hale getirilir. arguments herhangi bir actions.args() nesnesi içeriyorsa bunların içeriği komut satırına tek tek eklenir. Böylece $i, Args nesnesindeki bağımsız dizelere referans verebilir. Bilinmeyen boyuta sahip bir Args nesnesi arguments öğesinin parçası olarak iletilirse, dizelerin bilinmeyen dizinlerde olacağına dikkat edin. 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 öğedir, geri kalan öğeler ise bu öğenin bağımsız değişkenleridir. Bu form kullanılıyorsa 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 (genrules) kabuğuyla aynı kabuğu kullanır.

progress_message string; or None; varsayılan = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme durumu mesajı. Örneğin, "foo.o oluşturmak için foo.cc derleniyor". İleti, 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 statik dizeler yerine kalıplar kullanmayı tercih edin.
use_default_shell_env default = False
İşlemin, yerleşik kabuk ortamını kullanıp kullanmaması gerektiği.
env dict; or None; varsayılan = Yok
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemin planlanmasına ilişkin bilgiler. 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 = Yok
İş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 = Yok
Belirtilen gölgelenen işlemin, işlemin girişler 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 kullanılan bir geri çağırma işlevi. İlgili konu:ctx.actions.run().
toolchain Label; or string; or None; varsayılan = Yok

Bu işlemde kullanılan yürütülebilir öğenin veya 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 yoktur, ancak gelecekteki Bazel sürümlerinde gerekli olacağı için bu aracı bir araç zinciri kullanıldığında ayarlamanızı öneririz.

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

Hem "araç zinciri" hem de "exec_group" parametrelerinin ayarlanmasında "exec_group" kullanılır. "exec_group" aynı araç zincirini belirtmediğinde hata oluşur.

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 değerlerinden biri belirtilerek çağrılmalıdır.

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

Aksi takdirde, target_path kullandığınızda output öğesini declare_symlink() ile tanımlayın. Bu durumda, sembolik bağlantı target_path değerine işaret eder. Bazel, sembolik bağlantıyı hiçbir zaman çö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 bir sembolik bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output gerekli
Bu işlemin sonucu.
target_file File; or None; default = None
Çı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. True (doğru) değerine ayarlanırsa işlem yürütüldüğünde target_file'ın yolu, yürütülebilir olduğunun onaylanması için kontrol edilir ve yürütülebilir değilse bir hata bildirilir. is_executable politikasının Yanlış değerine ayarlanması hedefin yürütülemediği anlamına gelmez, yalnızca hiçbir doğrulamanın yapılmadığı anlamına gelir.

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

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
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. Bir dize veya actions.args() nesnesi olabilir.
is_executable default = False
Çıkış dosyasının yürütülebilir olup olmayacağı.