işlemler

İşlem oluşturmak için işlevler 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 belirtir. 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.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" belirtilmezse yeni dizinin mevcut pakete göre yolu. Aksi takdirde, dosya için temel bir ad ('sibling' 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 bildirir. sibling belirtilmezse dosya adı paket dizinine göre belirlenir. Aksi takdirde dosya, sibling ile aynı dizinde olur. Dosyalar mevcut 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şlemi oluşturmak için döndürülen File nesnesini işlemin oluşturma işlevine iletmeniz gerekir.

Önceden tanımlanmış çıkış dosyalarının bu işlev kullanılarak tanımlanması gerekmez (ve tanımlanamaz). Bunun yerine, File nesnelerini ctx.outputs adresinden edinebilirsiniz. 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" (eşdüzey) 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şebilir. Lütfen bu metrikten yararlanmayın. Özellik, --experimental_allow_unresolved_symlinks ayarlanarak deneysel olarak etkinleştirilebilir

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şturmanız gerekir. 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.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" yoksa sağlanan yeni sembolik bağlantının mevcut pakete göre yolunu belirtir. Aksi takdirde, bir dosyanın temel adı ("kardeş" bir dizini tanımlar).
sibling File; or None; default = None
Yeni tanımlanan sembolik bağlantıyla aynı dizinde bulunan bir dosya.

do_nothing

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

Ne komut yürüten ne de çıkış veren ancak "ek işlemler" eklemek için yararlı olan boş bir işlem oluşturur.

Parametreler

Parametre Açıklama
mnemonic zorunlu
İşlemin tek kelimelik açıklaması (ör. 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ı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 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 = bağlı değil
Deneyseldir. Bu parametre deneme amaçlıdır ve herhangi bir zamanda değişebilir. Lütfen bu yönteme güvenmeyin. --+experimental_lazy_template_expansion
Deneysel: Şablon genişletilirken yapılacak yerine 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)

Bir yürütülebilir dosyayı çalıştıran bir işlem oluşturur. Kullanım örneğine bakın.

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ın listesi veya depset.
unused_inputs_list File; or None; default = 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, işlemin çıktılarını hiçbir şekilde etkilememelidir.

executable File; or string; or FilesToRunProvider; required
İşlem tarafından çağrılacak yürütülebilir dosya.
tools sequence; or depset; varsayılan = bağlı değil
İşlem için gereken tüm araçları listeleyin veya belirleyin. Araçlar, işlem için otomatik olarak kullanıma sunulan ek çalıştırma dosyalarına sahip girişlerdir. Sağlanan liste, heterojen bir Files, FilesToRunProvider örneği veya Files depset koleksiyonu olabilir. Doğrudan listede bulunan ve ctx.executable öğesinden gelen dosyaların çalıştırma dosyaları otomatik olarak eklenir. Sağlanan depset yalnızca Dosya 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 = []
İşlemin komut satırı bağımsız değişkenleri. Dize veya actions.args() nesneleri listesi 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; default = None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı (ör. "foo.o oluşturmak için foo.cc 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 default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; varsayılan = Yok
Ortam değişkenleri sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemi programlama bilgileri. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; or None; default = None
(Deneysel) giriş çalışma dosyası meta verilerini ayarlar; bunlar genellikle resolve_command tarafından oluşturulur.
exec_group string; or None; default = None
İşlemi, belirtilen yürütme grubunun yürütme platformunda çalıştırır. Yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action Action; default = None
İşlemi, belirtilen gölgelenen işlemin girişlerini ve işlemin girişler listesine ve ortamına eklenen ortamı kullanarak çalıştırır. İşlem ortamı, gölgelendirilen işlemin ortam değişkenlerinin üzerine yazabilir. Aksi takdirde 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ılırsa yürütme sırasında kaynak kullanımını tahmin etmek için kullanılan, kaynak kümesi 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 float veya int türünde olabilecek 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 işlevlere izin verilmez).

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

Yürütülebilir öğenin 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 parametre ayarlanmalıdır.

Şu anda herhangi bir işlem yapmaz ancak gelecekteki Bazel sürümlerinde gerekli olacağından, bir araç zinciri kullanıldığında bunu ayarlamanız önerilir.

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

Hem "toolchain" hem de "exec_group" parametreleri ayarlandığında "exec_group" kullanılır. "exec_group" aynısını belirtmezse 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=None)

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; or depset; default = []
İşlemin giriş dosyalarının listesi veya depset.
tools sequence of Files; or depset; varsayılan = bağlı değil
İş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; default = []
İşlemin komut satırı bağımsız değişkenleri. Dize veya actions.args() nesneleri listesi 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 öngörülemez 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 bir dize listesiyse bu parametre kullanılamaz.

mnemonic string; or None; varsayılan = Yok
İşlemin tek kelimelik bir açıklaması, örneğin, CppCompile veya GoLink.
command string; or sequence of strings; 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 yürütülür. Yani arguments'deki öğeler komuta $1, $2 (veya Windows toplu komut dosyası kullanılıyorsa %1, %2) vb. olarak sunulur. arguments herhangi bir actions.args() nesnesi içeriyorsa bu nesnelerin içerikleri komut satırına tek tek eklenir. Bu nedenle $i, bir Args nesnesinde ayrı dizeleri referans alabilir. 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; or None; default = None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı (ör. "foo.o oluşturmak için foo.cc derleniyor"). İleti, sırasıyla etiket dizesi, ilk giriş veya çıkışın yolu ile değiştirilen %{label}, %{input} veya %{output} kalıpları içerebilir. Statik dizeler yerine daha verimli olan kalıpları tercih edin.
use_default_shell_env default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; varsayılan = Yok
Ortam değişkenleri sözlüğünü ayarlar.
execution_requirements dict; or None; varsayılan = Yok
İşlemi programlama bilgileri. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; or None; varsayılan = Yok
(Deneysel) giriş çalıştırma dosyaları meta verilerini ayarlar; genellikle çözümleme_komutu ile oluşturulurlar.
exec_group string; or None; varsayılan = Yok
İşlemi belirtilen yönetici grubunun yürütme platformunda çalıştırır. Hiçbiri belirtilmezse hedefin varsayılan yürütme platformu kullanılır.
shadowed_action Action; default = None
İşlemi, gölgelenen işlemin giriş listesine eklenen keşfedilen girişlerini kullanarak çalıştırır. Yoksa yalnızca işlemin girişlerini kullanır.
resource_set callable; or None; default = None
Yerel olarak çalıştırıldığında kaynak kullanımını tahmin etmek için bir geri çağırma işlevi. ctx.actions.run() başlıklı makaleyi inceleyin.
toolchain Label; or string; or None; default = None

Bu işlemde kullanılan yürütülebilir dosyanın veya araçların araç zinciri türü. İşlemin doğru yürütme platformunda yürütülebilmesi için parametre ayarlanmalıdır.

Şu anda herhangi bir işlem yapmaz ancak gelecekteki Bazel sürümlerinde gerekli olacağından, bir araç zinciri kullanıldığında bunu ayarlamanız önerilir.

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

Hem "toolchain" hem de "exec_group" parametreleri ayarlandığında "exec_group" kullanılır. "exec_group" aynı araç setini belirtmezse hata oluşur.

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

Dosya sistemine 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. Bazel, sembolik bağlantının hedefi veya içeriği değiştiğinde bu işlemin çıktısı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. Özellikle, boş bir sembolik bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output zorunlu
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; default = None
(Deneysel) Çıkış sembolik bağlantısının işaret edeceği tam yol. Normalleştirme veya başka bir işlem uygulanmaz. Bu özelliğe erişim için --experimental_allow_unresolved_symlinks politikasının ayarlanması gerekir.
is_executable default = False
Yalnızca target_file ile kullanılabilir, target_path ile kullanılamaz. 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; or None; default = None
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şebilir. Lütfen bu metrikten yararlanmayın. --+experimental_lazy_template_expansion ayarlanarak deneysel olarak etkinleştirilebilir.
Deneysel: Bellek açısından verimli şablon genişletmesi için 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çeriği bir dosyaya yazar. Bu, analiz aşamasında bulunan 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; or Args; zorunlu
dosya içeriği. Bir dize veya actions.args() nesnesi olabilir.
is_executable varsayılan = Yanlış
Çıkış dosyasının yürütülebilir olup olmayacağı.