işlemler

İşlemler oluşturmak için işlevler sağlayan modül. ctx.actions kullanarak bu modüle 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 yönün, 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 doğrudan Starlark'tan erişilemez ancak Args.add_all() ile bir işlem komutunda genişletilebilir.

Parametreler

Parametre Açıklama
filename zorunlu
Kardeş sağlanmadıysa yeni dizinin yolu, mevcut pakete göre. Aksi takdirde, bir dosyanın temel adı (kardeş, bir dizini tanımlar).
sibling File; or None; default = None
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 yönün, belirtilen dosya adına sahip bir dosya oluşturduğunu bildirir. sibling belirtilmemişse dosya adı paket dizinine göre belirlenir. Aksi takdirde dosya, sibling ile aynı dizinde bulunur. 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 nesnesinin işlemin oluşturma işlevine iletilmesi gerekir.

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

Parametreler

Parametre Açıklama
filename zorunlu
Kardeş sağlanmadıysa yeni dosyanın yolu (mevcut pakete göre). Aksi takdirde, dosya için temel bir ad (kardeş, dizini belirler).
sibling File; or None; default = None
Yeni oluşturulan dosya ile aynı dizinde bulunan bir dosya. Dosya, mevcut pakette olmalıdır.

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

Deneysel. Bu parametre deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu bilgileri kullanmayın. --experimental_allow_unresolved_symlinks ayarlanarak deneysel olarak etkinleştirilebilir.

Kuralın veya yönün, geçerli pakette verilen adla bir sembolik 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 dereference etmez ve kum havuzlarına veya uzak yürütücülere kelimesi kelimesine aktarır.

Parametreler

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

do_nothing

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

Ne komut yürüten ne de herhangi bir çıkış üreten boş bir işlem oluşturur ancak "ek işlemler" eklemek için kullanışlıdır.

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şturulur. Şablondaki bölümler, substitutions sözlüğü kullanılarak ve değiştirmelerin belirtildiği sırayla değiştirilir. Sözlüğün bir anahtarı şablonda (veya önceki bir değiştirme sonucunda) her 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 (ör. {KEY}). Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
template zorunlu
UTF-8 olarak kodlanmış bir metin dosyası olan şablon dosyası.
output gerekli
UTF-8 olarak kodlanmış metin dosyası olan çıkış dosyası.
substitutions default = {}
Şablon genişletilirken yapılacak değiştirmeler.
is_executable varsayılan = False
Çıkış dosyasının yürütülebilir olup olmayacağı.
computed_substitutions TemplateDict; default = unbound
Deneysel. Bu parametre deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu bilgileri kullanmayın. --+experimental_lazy_template_expansion
Experimental: Substitutions to make when expanding the template (Deneysel: Şablon genişletilirken yapılacak değiştirmeler) ayarlanarak deneysel olarak etkinleştirilebilir.

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)

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

Parametreler

Parametre Açıklama
outputs sequence of Files; required
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; or depset; default = []
List or depset of the input files of the action.
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 çıktılarından biri), işlem yürütülmesinin tamamı sırasında kullanılmayan giriş dosyalarının listesine karşılık gelir. Bu dosyalarda yapılan değişiklikler, işlemin sonuç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; default = unbound
İşlem için gereken tüm araçların listesi veya depset'i. Araçlar, ek çalışma dosyaları içeren ve işleme otomatik olarak sunulan girişlerdir. Liste sağlandığında, Dosyalar, FilesToRunProvider örnekleri veya Dosyalar'ın bağımlılık kümelerinden oluşan heterojen bir koleksiyon olabilir. Doğrudan listede bulunan ve ctx.executable'dan gelen dosyaların runfile'ları otomatik olarak eklenir. Bir bağımlılık kümesi sağlandığında yalnızca dosyalar içermelidir. Her iki durumda da, bağımlılık kümelerindeki dosyalar, runfiles için ctx.executable ile çapraz referans oluşturmaz.
arguments sequence; default = []
İşlemin komut satırı bağımsız değişkenleri. Dize listesi veya actions.args() nesnesi olmalıdır.
mnemonic string; or None; default = None
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
progress_message string; or None; default = None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı (ör. "foo.cc, foo.o oluşturmak için derleniyor"). İleti; sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} ya da %{output} kalıplarını içerebilir. Statik dizeler yerine kalıpları kullanmayı tercih edin. Kalıplar daha verimlidir.
use_default_shell_env varsayılan = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; default = None
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; default = None
İşlemi planlama bilgileri. Faydalı anahtarlar için etiketler bölümüne bakın.
input_manifests sequence; or None; default = None
(Deneysel) Giriş çalıştırma dosyaları meta verilerini ayarlar. Bu dosyalar genellikle resolve_command tarafından oluşturulur.
exec_group string; or None; default = None
İşlemi, verilen yürütme grubunun yürütme platformunda çalıştırır. Hiçbiri yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action Action; default = None
İşlemi, verilen gölgelenmiş işlemin girişlerini ve işlemin giriş listesine ve ortamına eklenen ortamı kullanarak çalıştırır. İşlem ortamı, gölgelenen işlemin ortam değişkenlerinin herhangi birinin üzerine yazabilir. Yoksa yalnızca işlemin girişlerini ve verilen ortamı kullanır.
resource_set callable; or None; default = None
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 konumsal bağımsız değişken kabul eder: bir işletim sistemi adını temsil eden dize (ör. "osx") ve işleme yönelik giriş sayısını temsil eden bir tam sayı. Döndürülen sözlük aşağıdaki girişleri içerebilir. Bu girişlerin her biri float veya int olabilir:

  • "cpu": CPU sayısı; varsayılan değer 1'dir.
  • "memory": MB cinsinden; varsayılan değer 250
  • "local_test": yerel test sayısı; varsayılan değer 1'dir.

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; default = None

Bu işlemde kullanılan yürütülebilir dosyanın veya araçların araç zinciri türü. Parametre, işlemin doğru yürütme platformunda yürütülmesini sağlayacak şekilde ayarlanmalıdır.

Şu anda herhangi bir işlem yapılmamaktadır ancak gelecekteki Bazel sürümlerinde gerekli olacağı için bir araç zinciri kullanıldığında bu ayarın belirlenmesini öneririz.

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

Hem "toolchain" hem de "exec_group" parametreleri ayarlandığında "exec_group" kullanılır. `exec_group` aynı değeri belirtmediğinde 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)

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

Parametreler

Parametre Açıklama
outputs sequence of Files; required
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; or depset; default = []
List or depset of the input files of the action.
tools sequence of Files; or depset; default = unbound
İşlem için gereken tüm araçların listesi veya depset'i. Araçlar, ek çalışma dosyaları içeren ve işleme otomatik olarak sunulan girişlerdir. Liste, Files veya FilesToRunProvider örneklerini içerebilir.
arguments sequence; default = []
İşlemin komut satırı bağımsız değişkenleri. Dize listesi veya actions.args() nesnesi olmalıdır.

Bazel, bu özellikteki öğeleri komuta bağımsız değişken olarak iletir.Komut, $1, $2 gibi kabuk değişkeni değiştirmelerini kullanarak bu bağımsız değişkenlere erişebilir. Args nesneleri dizine eklenmeden önce düzleştirildiğinden, boyutu bilinmeyen bir Args nesnesi varsa sonraki tüm dizelerin tahmin edilemeyen dizinlerde olacağını unutmayın. Belirsiz boyuttaki Args nesneleriyle birlikte $@ (tüm bağımsız değişkenleri almak için) kullanmak faydalı olabilir.

command bir dizeler listesi olduğunda bu parametre kullanılamayabilir.

mnemonic string; or None; default = None
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
command string; or sequence of strings; required
Shell komutu yürütülecek. Bu, bir dize (tercih edilen) veya bir dize dizisi (kullanımdan kaldırıldı) olabilir.

command bir dizeyse sh -c <command> "" <arguments> tarafından yapılmış gibi yürütülür. Yani arguments içindeki öğeler, komuta $1, $2 (veya Windows toplu iş kullanılıyorsa %1, %2) vb. olarak sunulur. arguments herhangi bir actions.args() nesnesi içeriyorsa içerikleri komut satırına tek tek eklenir. Böylece $i, bir Args nesnesindeki tek tek dizelere başvurabilir. arguments kapsamında boyutu bilinmeyen bir Args nesnesi iletilirse dizelerin bilinmeyen dizinlerde olacağını unutmayın. Bu durumda $@ kabuk değiştirme (tüm bağımsız değişkenleri alma) işlevi yararlı olabilir.

(Kullanımdan kaldırıldı) command bir dize dizisiyse ilk öğe çalıştırılacak yürütülebilir dosya, kalan öğeler ise bu dosyanın 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. Bu kural, `--incompatible_run_shell_command_string` ile devre dışı bırakılı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.cc, foo.o oluşturmak için derleniyor"). İleti; sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} ya da %{output} kalıplarını içerebilir. Statik dizeler yerine kalıpları kullanmayı tercih edin. Kalıplar daha verimlidir.
use_default_shell_env varsayılan = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; default = None
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; default = None
İşlemi planlama bilgileri. Faydalı anahtarlar için etiketler bölümüne bakın.
input_manifests sequence; or None; default = None
(Deneysel) Giriş çalıştırma dosyaları meta verilerini ayarlar. Bu dosyalar genellikle resolve_command tarafından oluşturulur.
exec_group string; or None; default = None
İşlemi, verilen yürütme grubunun yürütme platformunda çalıştırır. Hiçbiri yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action Action; default = None
İşlemi, verilen gölgelenmiş işlemin keşfedilen girişleri işlem girişleri listesine eklenerek ç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ılırsa kaynak kullanımını tahmin etmek için kullanılan geri çağırma işlevi. ctx.actions.run() sayfasına göz atın.
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ü. Parametre, işlemin doğru yürütme platformunda yürütülmesini sağlayacak şekilde ayarlanmalıdır.

Şu anda herhangi bir işlem yapılmamaktadır ancak gelecekteki Bazel sürümlerinde gerekli olacağı için bir araç zinciri kullanıldığında bu ayarın belirlenmesini öneririz.

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

Hem "toolchain" hem de "exec_group" parametreleri ayarlandığında "exec_group" kullanılır. `exec_group` aynı araç zincirini belirtmiyorsa 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, tam olarak bir target_file veya target_path belirtilerek çağrılmalıdır.

target_file kullandığınızda declare_file() veya declare_directory() ile output öğesini bildirin ve target_file türüyle eşleştirin. Bu işlem, sembolik bağlantının target_file konumunu işaret etmesini sağlar. Bazel, sembolik bağlantının hedefi veya içeriği her değiştiğinde bu işlemin çıkışını geçersiz kılar.

Aksi takdirde, target_path kullanırken output öğesini declare_symlink() ile bildirin. Bu durumda sembolik bağlantı target_path öğesini işaret eder. Bazel, sembolik bağlantıyı hiçbir zaman çözmez 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 özellik özellikle askıda kalan sembolik bağlantılar oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output required
Bu işlemin çıktısı.
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şmek için --experimental_allow_unresolved_symlinks ayarının yapılması gerekir.
is_executable varsayılan = False
Yalnızca target_file ile kullanılabilir, target_path ile kullanılamaz. Doğruysa işlem yürütüldüğünde target_file'nın yolu yürütülebilir olup olmadığını onaylamak için kontrol edilir ve yürütülebilir değilse hata bildirilir. is_executable değerinin False olarak ayarlanması, hedefin yürütülemez olduğu anlamına gelmez. Yalnızca doğrulama yapılmadığı anlamına gelir.

Bu özellik, derleme sırasında askıda kalan sembolik bağlantılar mevcut olmayabileceğinden target_path için anlamlı değildir.

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 bilgileri kullanmayın. --+experimental_lazy_template_expansion
Experimental: Returns a TemplateDict object for memory-efficient template expansion. (Deneysel: Bellek açısından verimli şablon genişletme için TemplateDict nesnesi döndürür.) ayarlanarak deneysel olarak etkinleştirilebilir.

yardım et

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, analiz aşamasında mevcut olan bilgileri kullanarak dosyalar oluşturmak için kullanılır. Dosya büyükse ve çok fazla statik içerik varsa expand_template kullanmayı düşünebilirsiniz.

Parametreler

Parametre Açıklama
output required
Çıkış dosyası.
content string; or Args; required
the contents of the file. Dize veya actions.args() nesnesi olabilir.
is_executable varsayılan = False
Çıkış dosyasının yürütülebilir olup olmayacağı.