işlemler

Sorun bildir Kaynağı görüntüleyin Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

İşlem oluşturmak için işlevler sağlayan modül. ctx.actions simgesini kullanarak bu modüle erişebilirsiniz.

Üyeler

bağımsız değişkenler

Args actions.args()

Hafıza açısından verimli komut satırı 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() ile bir işlem komutunda genişletilebilir. declare_directory işlevinin genişletilmiş içeriğinde yalnızca normal dosyalar ve dizinler bulunabilir.

Parametreler

Parametre Açıklama
filename dize; zorunlu
"kardeş" sağlanmazsa yeni dizinin mevcut pakete göre yolu. Aksi takdirde, dosya için temel bir ad ('sibling' bir dizini tanımlar).
sibling Dosya veya None; varsayılan olarak None'dır.
Yeni bildirilen dizinle aynı dizinde bulunan bir dosyadır. 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, geçerli paketin dışında oluşturulamaz.

Bir dosyayı beyan etmenin yanı sıra dosyayı yayınlayan bir işlem de ayrı olarak 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, ctx.outputs öğesinden File nesnesini alabilirsiniz. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
filename dize; zorunlu
"kardeş" sağlanmazsa mevcut pakete göre yeni dosyanın yolu. Aksi takdirde, bir dosyanın temel adı ("kardeş" bir dizini belirler).
sibling Dosya veya None; varsayılan değer None
Yeni oluşturulan dosyayla aynı dizinde bulunan bir dosya. Dosya, mevcut 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 belirtir. 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. Ağaç yapılarının içindeki simge bağlantıları şu anda desteklenmemektedir.

Parametreler

Parametre Açıklama
filename string; gerekli
"Eşdüzey" sağlanmamışsa geçerli pakete göre yeni sembolik bağlantının yolu. Aksi takdirde, dosya için temel bir ad ('sibling' bir dizini tanımlar).
sibling Dosya veya None; varsayılan değer None
Yeni tanımlanan 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 dize; zorunlu
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
inputs Dosya dizisi veya depset; varsayılan değer []
İş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 bölümleri, substitutions sözlüğü kullanılarak, belirtilen sırayla değiştirilir. Sözlüğün bir anahtarı şablonda göründüğünde (veya önceki bir değiştirmenin sonucu olarak) 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 Dosya; gerekli
UTF-8 olarak kodlanmış bir metin dosyası olan şablon dosyası.
output Dosya; zorunlu
UTF-8 kodlu bir metin dosyası olan çıkış dosyası.
substitutions dict; varsayılan ayar {}
Şablon genişletilirken yapılacak ikameler.
is_executable bool; varsayılan değer False
Çıkış dosyasının yürütülebilir olup olmayacağı.
computed_substitutions TemplateDict; varsayılan olarak unbound şeklindedir
Şablon genişletilirken 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)

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

Parametreler

Parametre Açıklama
outputs sequence/Files; required
İşlemin çıkış dosyalarının listesi.
inputs Dosya dizisi veya depset; varsayılan değer []
İşlemin giriş dosyalarının listesi veya depset.
unused_inputs_list 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, işlemin çıktılarını hiçbir şekilde etkilememelidir.

executable Dosya; veya dize; veya FilesToRunProvider; zorunlu
İşlem tarafından çağrılacak yürütülebilir dosya.
tools sequence veya depset; varsayılan değer unbound
İşlemin ihtiyaç duyduğu tüm araçların listesi veya depset. Araçlar, işleme otomatik olarak sunulan ek çalıştırma dosyalarına sahip girişlerdir. Sağlanan liste, heterojen bir dosya koleksiyonu, FilesToRunProvider örnekleri veya dosya depsetleri 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, depset'lerdeki dosyalar, çalışma dosyaları için ctx.executable ile çapraz referans oluşturmaz.
arguments sequence; varsayılan olarak []
İşlemin komut satırı bağımsız değişkenleridir. Dizelerin veya actions.args() nesnelerinin listesi olmalıdır.
mnemonic dize; veya None; varsayılan değer None
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
progress_message dize; veya None; varsayılan değer 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 bool; 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 --incompatible_merge_fixed_and_default_shell_env etkinse (varsayılan) env'te ayarlanan değerler varsayılan kabuk ortamının üzerine yazılır. İşaret etkinleştirilmezse env yoksayılır.

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

Hem use_default_shell_env hem de env True olarak ayarlanırsa --incompatible_merge_fixed_and_default_shell_env etkinse (varsayılan) env'te ayarlanan değerler varsayılan kabuk ortamının üzerine yazılır. İşaret etkinleştirilmezse env yoksayılır.

execution_requirements dict; veya None; varsayılan olarak None
İşlemin planlanması için bilgidir. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; veya None; varsayılan değer None
Eski bağımsız değişken. Yoksayıldı.
exec_group dize veya None; varsayılan değer 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 İş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ölgelenen işlemin ortam değişkenlerinin herhangi birinin üzerine yazabilir. Aksi takdirde yalnızca işlemin girişlerini ve belirtilen ortamı kullanır.
resource_set çağrılabilir; veya None; varsayılan olarak None
Bu işlem yerel olarak çalıştırılırsa yürütme sırasındaki kaynak kullanımını tahmin etmek için kullanılan, bir kaynak kümesi sözlüğü döndüren 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 değer 1
  • "memory": MB cinsinden; varsayılan 250
  • "local_test": yerel testlerin sayısı; varsayılan değer 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 Etiket; veya dize; veya None; varsayılan değer unbound

Bu işlemde kullanılan yürütülebilir dosyanın veya araçların araç zinciri türü.

Yürütülebilir dosya ve araçlar bir araç zincirinden gelmiyorsa bu parametreyi "Yok" olarak ayarlayın.

Yürütülebilir dosya ve araçlar bir araç zincirinden geliyorsa araç zinciri türü, işlemin doğru yürütme platformunda yürütülmesi için ayarlanmalıdır.

Bu işlemi oluşturan kuralın, "rule()" işlevinde bu araç zincirini 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 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=unbound)

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

Parametreler

Parametre Açıklama
outputs Dosya dizisi; zorunlu
İşlemin çıkış dosyalarının listesi.
inputs Files'ın sequence veya depset; varsayılan olarak []
İşlemin giriş dosyalarının listesi veya dökümü.
tools Dosya dizisi veya depset; varsayılan olarak unbound
İşlemin ihtiyaç duyduğu tüm araçların listesi veya depset. Araçlar, işleme otomatik olarak sunulan ek çalıştırma dosyalarına sahip girişlerdir. Liste, Files veya FilesToRunProvider örnekleri içerebilir.
arguments sequence; varsayılan olarak []
İşlemin komut satırı bağımsız değişkenleridir. Dizelerin veya actions.args() nesnelerinin listesi 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, bilinmeyen boyuttaki 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 yararlı olabilir.

command bir dize listesiyse bu parametre kullanılamaz.

mnemonic dize; veya None; varsayılan değer None'dir
İşlemin tek kelimelik bir açıklamasıdır (ör. CppCompile veya GoLink).
command dize veya dize dizisi; zorunlu
Yürütülecek Shell komutu. Bu, bir dize (tercih edilir) veya dize dizisi (kullanımdan kaldırılmıştır) 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 işlevinin parçası olarak bilinmeyen boyutlu bir bağımsız değişken nesnesi iletildiğinde, dizelerin bilinmeyen dizinlerde olacağını unutmayın. Bu durumda, $@ kabuk değişikliği (tüm bağımsız değişkenleri al) yararlı olabilir.

(Desteği sonlandı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ı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ı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 dize; veya None; varsayılan değer 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 bool; 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 --incompatible_merge_fixed_and_default_shell_env etkinse (varsayılan) env'te ayarlanan değerler 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 --incompatible_merge_fixed_and_default_shell_env etkinse (varsayılan) env'te ayarlanan değerler 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 planlamayla ilgili bilgiler. Faydalı anahtarlar için etiketlere bakın.
input_manifests sequence; veya None; varsayılan olarak None
Eski bağımsız değişkendir. Yoksayıldı.
exec_group dize veya None; varsayılan değer None
İşlemi, belirtilen yürütme grubunun yürütme platformunda çalıştırır. Hiçbiri belirtilmezse hedefin varsayılan yürütme platformu kullanılır.
shadowed_action İşlem; varsayılan değer None
İşlemi, işlemin girişler listesine eklenen belirli gölgelenen işlemin keşfedilen girişlerini kullanarak çalıştırır. Yoksa yalnızca işlemin girişlerini kullanır.
resource_set callable; veya None; varsayılan değer 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() adresine göz atın.
toolchain Etiket; veya dize; 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ü.

Yürütülebilir dosya ve araçlar bir araç zincirinden gelmiyorsa bu parametreyi "Yok" olarak ayarlayın.

Yürütülebilir dosya ve araçlar bir araç zincirinden geliyorsa araç zinciri türü, işlemin doğru yürütme platformunda yürütülmesi için ayarlanmalıdır.

Bu işlemi oluşturan kuralın, "rule()" işlevinde bu araç zincirini tanımlaması gerektiğini unutmayı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 özelliklerinden tam olarak biri belirtilmiş şekilde ç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 işlem, sembolik bağlantının target_file'e işaret etmesini sağlar. 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 output değerini declare_symlink() ile tanımlayın. Bu durumda sembolik bağlantı target_path öğesini işaret ediyor. 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, özellikle, sallanan bir sembolik bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output Dosya; zorunlu
Bu işlemin sonucu.
target_file Dosya veya None; varsayılan değer None
Çıkış sembolik bağlantısının işaret edeceği dosya.
target_path dize 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 bir işlem uygulanmaz.
is_executable bool; varsayılan değer False
Yalnızca target_file ile kullanılabilir, target_path ile kullanılamaz. Doğru ise işlem yürütüldüğünde target_file'nin yürütülebilir olup olmadığını doğrulamak için yolu kontrol edilir ve yürütülebilir değilse hata bildirilir. is_executable değerinin False olarak ayarlanması, hedefin yürütülemeyeceği anlamına gelmez. Yalnızca doğrulama yapılmadığı anlamına gelir.

Yapım sırasında boş sembolik bağlantılar bulunmayabileceği için bu özellik target_path için anlamlı değildir.

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

template_dict

TemplateDict actions.template_dict()

Hafıza 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çerik bir dosyaya yazılır. 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çerik içeriyorsa expand_template kullanmayı düşünebilirsiniz.

Parametreler

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