işlemler

Sorun bildir Kaynağı göster Nightly · 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

args

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 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 komutunda genişletilebilir. declare_directory öğesinin genişletilmiş içeriğinde yalnızca normal dosyalar ve dizinler bulunabilir.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" belirtilmezse yeni dizinin mevcut pakete göre yolu. Aksi takdirde, bir dosyanın temel adı ("kardeş" bir dizini tanımlar).
sibling File (Dosya); veya None; varsayılan değer: 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 ö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ı bildirmeye ek olarak, dosyayı yayınlayan bir işlem de oluşturmanız gerektiğini unutmayın. Bu işlemin oluşturulması, döndürülen File nesnesinin işlemin oluşturma işlevine iletilmesini gerektirir.

Önceden tanımlanmış çıkış dosyalarının bu işlev kullanılarak tanımlanması gerekmez (ve tanımlanamaz). Bunun yerine, ctx.outputs öğesinden File nesnelerini alabilirsiniz. Kullanım örneğine bakın.

Parametreler

Parametre Açıklama
filename zorunlu
"Kardeş" yoksa sağlanan yeni dosyanın yolunu gösterir. Aksi takdirde, bir dosyanın temel adı ("kardeş" bir dizini belirler).
sibling File (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 zorunlu
"Kardeş" sağlanmazsa yeni sembolik bağlantının mevcut pakete göre yolu. Aksi takdirde, dosya için temel bir ad ('sibling' bir dizini tanımlar).
sibling File (Dosya); veya None; varsayılan değer: 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 çıkış oluşturan ancak "ek işlemler" eklemek için yararlı olan boş bir işlem oluşturur.

Parametreler

Parametre Açıklama
mnemonic required
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
inputs sequence of Files; veya depset; varsayılan ayar []
İş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 varsayılan {}
Şablon genişletilirken yapılacak ikameler.
is_executable varsayılan değer False
Çıkış dosyasının yürütülebilir olup olmayacağı.
computed_substitutions TemplateDict; varsayılan değer unbound
Şablon genişletilirken yapılacak ikameler.

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)

Yürütülebilir dosya ç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 sequence of Files; veya depset; varsayılan ayar []
İşlemin giriş dosyalarının listesi veya görünümü.
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 File (Dosya); veya string; veya FilesToRunProvider; gerekli
İş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 dosyaların depsetleri olabilir. Doğrudan listede bulunan ve ctx.executable kaynağından gelen dosyaların çalıştırma dosyaları otomatik olarak eklenir. Bir tanımlayıcı sağlandığında yalnızca Dosyalar 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 değer []
İşlemin komut satırı bağımsız değişkenleri. Dizelerin veya actions.args() nesnelerinin listesi olmalıdır.
mnemonic string; veya None; varsayılan değer: None
İşlemin tek kelimelik bir açıklaması, örneğin, 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 yoluyla 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 varsayılan değer False
İşlemin, işletim sistemine bağlı birkaç değişkenin yanı sıra --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
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. İşaret 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 değer: None
(Deneysel) giriş çalıştırma dosyaları meta verilerini ayarlar; genellikle çözümleme_komutu ile oluşturulurlar.
exec_group string; veya None; varsayılan değer: None
İş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 İşlem; varsayılan değer 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 ç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 kayan nokta veya tam sayı olabilen aşağıdaki girişleri içerebilir:

  • "cpu": CPU sayısı; varsayılan 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 yerleştirilmiş işlevlere izin verilmez).

toolchain Etiket; veya string; 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ü. İşlemin doğru yürütme platformunda yürütülebilmesi için parametrenin ayarlanması gerekir.

Şu anda herhangi bir işlem yapmaz ancak gelecekteki Bazel sürümlerinde gerekli olacağından bir araç zinciri kullanıldığında ayarlanmasını öneririz.

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" tarafından aynı belirtilmediği durumlarda 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 sequence of Files; gerekli
İşlemin çıkış dosyalarının listesi.
inputs Dosya dizisi veya depset; varsayılan değer []
İşlemin giriş dosyalarının listesi veya depset.
tools Dosya dizisi veya depset; varsayılan olarak unbound
İşlemin ihtiyaç duyduğu tüm araçların listesi veya depset. 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; varsayılan değer: []
İşlemin komut satırı bağımsız değişkenleri. 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 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 tahmin edilemeyen 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 dize; veya None; varsayılan değer None
İşlemin tek kelimelik açıklaması (ör. CppCompile veya GoLink).
command string; dize dizisi veya 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 sanki yürütülür. Yani arguments içindeki öğeler $1, $2 (veya Windows toplu kullanılıyorsa %1, %2) vb. komutta kullanılabilir hale gelir. arguments öğesi bir actions.args() nesnesi içeriyorsa bunların içerikleri tek tek komut satırına eklenir. Dolayısıyla $i, Args nesnesindeki bağımsız dizelere başvuruda bulunabilir. 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.

(Desteklenmiyor) 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. "--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. ziyaret edin.

Bazel, komutu yürütmek için genrules ile aynı kabuğu kullanır.

progress_message string; veya None; varsayılan değer: None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı. Örneğin, "foo.o oluşturmak için foo.cc dosyası 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 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 env ürününde ayarlanan değerler, --incompatible_merge_fixed_and_default_shell_env etkinse 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. İşaret 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 değer None
(Deneysel) giriş çalıştırma dosyası meta verilerini ayarlar; bunlar genellikle resolve_command tarafından oluşturulur.
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, belirtilen gölgelenen işlemin, işlemin girişler listesine eklenen 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 kullanılan bir geri çağırma işlevi. ctx.actions.run() adresine göz atın.
toolchain Etiket; veya string; 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ü. İşlemin doğru yürütme platformunda yürütülebilmesi için parametrenin ayarlanması gerekir.

Şu anda herhangi bir işlem yapmaz ancak gelecekteki Bazel sürümlerinde gerekli olacağından bir araç zinciri kullanıldığında ayarlanmasını öneririz.

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

"toolchain" ve "exec_group" parametrelerinin ikisi de 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 sisteminde 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 kullanırken output'u declare_file() veya declare_directory() ile tanımlayın ve target_file türünü eşleyin. Bu işlem, sembolik bağlantının target_file'e işaret etmesini sağlar. Sembolik bağlantının hedefi veya içeriği her değiştiğinde Bazel bu işlemin çıkışını geçersiz kılar.

Aksi takdirde, target_path kullanırken outputdeclare_symlink() ile tanımlayın. Bu durumda, sembolik bağlantı target_path'ü işaret eder. 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. Bu, özellikle, sallanan bir sembolik bağlantı oluşturmak için kullanılabilir.

Parametreler

Parametre Açıklama
output required
Bu işlemin çıkışı.
target_file 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 varsayılan değer False
Yalnızca target_path ile değil, target_file ile kullanılabilir. 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 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 string; veya None; varsayılan değer: None
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı.

template_dict

TemplateDict actions.template_dict()

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 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çerik içeriyorsa expand_template kullanmayı düşünebilirsiniz.

Parametreler

Parametre Açıklama
output required
Çıkış dosyası.
content string; veya Args; gerekli
dosyanın içeriği hakkında daha fazla bilgi edinin. Dize veya actions.args() nesnesi olabilir.
is_executable varsayılan değer False
Çıkış dosyasının yürütülebilir olup olmayacağı.