işlemler

Sorun bildirin Kaynağı göster

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

Ü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.

tanım_dizini

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

Kuralın veya özelliğin, mevcut 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. Bir normal_dizinin genişletilmiş içeriğinde yalnızca normal dosyalar ve dizinler bulunabilir.

Parametreler

Parametre Açıklama
filename gerekli
"Kardeş" yoksa mevcut dizinin yeni dizin yolu. Aksi takdirde, bir dosyanın temel adı ("kardeş" dizini tanımlar).
sibling File; or None; default = Yok
Yeni tanımlanan dizinle aynı dizinde bulunan bir dosya. Dosya geçerli pakette olmalıdır.

beyan etme_dosyası

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

Kural veya özelliğin, belirtilen dosya adıyla bir dosya oluşturduğunu bildirir. sibling belirtilmezse dosya adı paket diziniyle görelidir, aksi takdirde dosya sibling ile aynı dizindedir. Dosyalar geçerli paketin dışında oluşturulamaz.

Bir dosyayı bildirmenin yanı sıra, dosyayı etkileyen bir işlem oluşturmanız gerektiğini de unutmayın. Bu işlemin oluşturulması için döndürülen File nesnesinin işlemin derleme işlevine aktarılması gerekir.

Önceden tanımlanmış çıkış dosyalarının, bu işlev kullanılarak beyan edilmesi (ve beyan edilmemesi) gerektiğini unutmayın. Bunun yerine, File nesnelerini ctx.outputs aracından alabilirsiniz. Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
filename gerekli
"Kardeş" dosya sağlanmamışsa yeni dosyanın yolu geçerli pakete göre belirlenir. Aksi takdirde, bir dosyanın temel adı ("kardeş" tarafından bir dizin belirlenir).
sibling File; or None; default = Yok
Yeni oluşturulan dosyayla aynı dizinde bulunan bir dosya. Dosya geçerli pakette olmalıdır.

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

Bu parametre deneyseldir ve herhangi bir zamanda değiştirilebilir. --noexperimental_allow_unresolved_symlinks ayarlayarak devre dışı bırakılabilir

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 sembol bağlantısının bağlantısını hiçbir zaman kaldırmayacak ve bağlantıyı korumalı alanlara veya uzak yürütücülere aktaracaktır. Ağaç yapılarındaki sembolik bağlantılar şu anda desteklenmemektedir.

Parametreler

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

hiçbir şey yapmayın

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

Komut çalıştırmayan veya herhangi bir çıktı üretmeyen ancak "ek işlemler" eklemek için yararlı olan boş bir işlem oluşturur.

Parametreler

Parametre Açıklama
mnemonic gereklidir
İşlemle ilgili tek kelimelik bir açıklama (ör. CppCompile veya GoLink).
inputs sequence of Files; or depset; default = []
İşlemin giriş dosyalarının listesi.

şablonu genişlet

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, bir şablonu temel alan bir dosya oluşturur. Şablonun bölümleri, değişiklikler belirtilerek substitutions sözlüğü kullanılarak değiştirilir. Sözlükteki bir anahtar (veya önceki bir değişikliğin sonucu) şablonda her gösterildiğinde ilişkili değerle değiştirilir. Anahtarlar için özel bir söz dizimi yoktur. Örneğin, çakışmaları önlemek için süslü ayraç kullanabilirsiniz (örneğin, {KEY}). Kullanım örneğini inceleyin.

Parametreler

Parametre Açıklama
template gereklidir
UTF-8 olarak kodlanmış metin dosyası olan şablon dosyası.
output gereklidir
UTF-8 olarak kodlanmış metin dosyası olan çıkış dosyasıdır.
substitutions default = {}
Şablonu genişlettiğinde yapılacak değişiklikler.
is_executable default = 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ştirilebilir. Lütfen bağımlı olma. --+experimental_lazy_template_expansion
Deneysel: Şablonu genişletirken yapılacak değişiklikler ile deneme amaçlı 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=unbound)

Yürütülebilir bir komut dosyası ç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; default = []
İşlemin giriş dosyalarının listesi veya desteği sonlandırıldı.
unused_inputs_list File; or None; default = 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 sırasında kullanılmayan giriş dosyalarının listesine karşılık gelir. Bu dosyalarda yapılacak herhangi bir değişiklik, işlemin çıktılarını hiçbir şekilde etkilememelidir.

executable File; or string; or FilesToRunProvider; gereklidir
İş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 liste dışı bırakılması veya kullanımdan kaldırılması. Araçlar, otomatik olarak işlemin kullanımına sunulan ek Runfile'ları olan girişlerdir. Bir liste sağlandığında liste, dosyalardan, FilesToRunProvider örneklerinden veya Dosya destinasyonlarından oluşan heterojen bir koleksiyon olabilir. Doğrudan listede bulunan ve ctx.executable kaynağından gelen dosyalar, Runfile dosyalarına otomatik olarak eklenir. Bir ayırma sağlandığında, yalnızca Dosyalar'ı içermelidir. Her iki durumda da, istemcilerdeki dosyalar run.exe dosyaları için ctx.executable ile çapraz referansta bulunulmaz.
arguments sequence; default = []
İşlemin komut satırı bağımsız değişkenleri. Dize veya actions.args() nesnesinden oluşan bir liste olmalıdır.
mnemonic string; or None; default = Yok
İşlemle ilgili tek kelimelik bir açıklama (ör. CppCompile veya GoLink).
progress_message string; or None; default = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı (ör. "foo.cc derlemek için foo.cc derleme"). İletide sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} veya %{output} kalıpları olabilir. İlki daha verimli olduğu için statik dizeler yerine kalıpları kullanmayı tercih eder.
use_default_shell_env default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; default = Yok
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; default = Yok
İşlemi planlamaya yönelik bilgiler. Faydalı anahtarlar için etiketler konusuna bakın.
input_manifests sequence; or None; default = Yok
(Deneysel), giriş çalıştırma dosyalarının meta verilerini ayarlar. Bunlar genellikle Çözüm_command tarafından oluşturulur.
exec_group string; or None; default = Yok
İşlemi, belirli bir exec grubunun yürütme platformunda çalıştırır. Yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action Action; default = Yok
İşlemi, belirtilen gölgeli işlemin girişlerini ve işlemin giriş listesine ve ortamına eklenen ortamı kullanarak çalıştırır. İşlem ortamı, gölgeli işlemin ortam değişkenlerinin üzerine yazılabilir. Yoksa yalnızca işlemin girişlerini ve belirtilen ortamı kullanır.
resource_set callable; or None; default = Yok
Bir kaynak kümesi sözlüğü döndüren, yerel olarak çalıştırılan bu işlem yürütme sırasında kaynak kullanımını tahmin etmek için kullanılan bir geri çağırma işlevi.

İşlev, iki konum bağımsız değişkenini kabul eder: OS adını temsil eden dize (ör. "osx") ve işleme giriş sayısını temsil eden tam sayı. Döndürülen sözlük, her biri kayan veya tam sayı olabilecek aşağıdaki girişleri içerebilir:

  • "cpu": CPU sayısı; varsayılan 1
  • "Bellek": MB cinsinden; varsayılan 250
  • "local_test": yerel test sayısı; varsayılan 1

Bu parametre None değerine 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 = sınırsız

Yürütülebilir dosyanın veya bu işlemde kullanılan araçların zincir zinciri türü. Parametrenin, işlemin doğru yürütme platformunda gerçekleştirileceği şekilde ayarlanması gerekir.

Şu an için işlem yapılması gerekmiyor. Ancak, gelecekteki Bazel sürümlerinde kullanılması gerekeceğinden bir araç zinciri kullanıldığında ayarlama yapmanızı ö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 belirtmiyorsa hata oluşur.

koşu_kabuğu

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; zorunlu
İşlemin çıkış dosyalarının listesi.
inputs sequence of Files; or depset; default = []
İşlemin giriş dosyalarının listesi veya desteği sonlandırıldı.
tools sequence of Files; or depset; default = unbound
İşlem için gereken tüm araçların liste dışı bırakılması veya kullanımdan kaldırılması. Araçlar, otomatik olarak işlemin kullanımına sunulan ek Runfile'ları olan 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() nesnesinden oluşan bir liste olmalıdır.

Bazel, bu özellikteki öğeleri komuta bağımsız değişkenler olarak aktarır.Komut, bu bağımsız değişkenlere $1, $2 gibi kabuk değişkenleriyle değişiklik yaparak erişebilir. Args nesneleri dizine eklenmeden önce düzleştirildiğinden, bilinmeyen boyutta bir Args nesnesi varsa sonraki tüm dizelerin öngörülemeyen dizinlerde olacağını unutmayın. Belirsiz boyutta bağımsız değişkenlerle birlikte $@ işlevinin kullanılması (tüm bağımsız değişkenleri almak için) yararlı olabilir.

command bir dize listesiyse bu parametre kullanılamaz.

mnemonic string; or None; default = Yok
İşlemle ilgili tek kelimelik bir açıklama (ör. 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> gibi, yani arguments içindeki öğeler $1, $2 (veya Windows toplu kullanıyorsanız %1, %2) olarak kullanılabilir hale getirilir. arguments herhangi bir actions.args() nesnesi içeriyorsa bu komutun içeriği komut satırına tek tek eklenir. Dolayısıyla, $i bir Args nesnesindeki bağımsız dizelere referans verebilir. Bilinmeyen boyutta bir Args nesnesi arguments öğesinin parçası olarak aktarılırsa dizelerin bilinmeyen dizinlerde olacağını ve bu durumda $@ kabuk değişikliğinin (tüm bağımsız değişkenleri aldığı) faydalı olabileceğini unutmayın.

(Kullanımdan kaldırıldı) command bir dize dizisiyse ilk öğe çalıştırılabilir özellikte, kalan öğeler ise 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ıldı. Kodunuzun uyumlu olduğunu doğrulamak için bu işareti kullanın.

Bazel, komutu çalıştırmak için genel kurallarla aynı kabuğu kullanır.

progress_message string; or None; default = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı (ör. "foo.cc derlemek için foo.cc derleme"). İletide sırasıyla etiket dizesi, ilk giriş veya çıkış yolu ile değiştirilen %{label}, %{input} veya %{output} kalıpları olabilir. İlki daha verimli olduğu için statik dizeler yerine kalıpları kullanmayı tercih eder.
use_default_shell_env default = False
İşlemin yerleşik kabuk ortamını kullanıp kullanmayacağı.
env dict; or None; default = Yok
Ortam değişkenlerinin sözlüğünü ayarlar.
execution_requirements dict; or None; default = Yok
İşlemi planlamaya yönelik bilgiler. Faydalı anahtarlar için etiketler konusuna bakın.
input_manifests sequence; or None; default = Yok
(Deneysel), giriş çalıştırma dosyalarının meta verilerini ayarlar. Bunlar genellikle Çözüm_command tarafından oluşturulur.
exec_group string; or None; default = Yok
İşlemi, belirli bir exec grubunun yürütme platformunda çalıştırır. Yoksa hedefin varsayılan yürütme platformunu kullanır.
shadowed_action Action; default = Yok
İşlemi, belirtilen giriş işleminin keşfettiği girişleri kullanarak işlemin giriş listesine çalıştırır. Yoksa yalnızca işlemin girişlerini kullanır.
resource_set callable; or None; default = Yok
Yerel olarak çalıştırılırsa kaynak kullanımını tahmin etmek için bir geri çağırma işlevi. Bkz. ctx.actions.run().
toolchain Label; or string; or None; varsayılan = sınırsız

Yürütülebilir dosyanın veya bu işlemde kullanılan araçların zincir zinciri türü. Parametrenin, işlemin doğru yürütme platformunda gerçekleştirileceği şekilde ayarlanması gerekir.

Şu an için işlem yapılması gerekmiyor. Ancak, gelecekteki Bazel sürümlerinde kullanılması gerekeceğinden bir araç zinciri kullanıldığında ayarlama yapmanızı ö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 belirtmiyorsa hata oluşur. araç zinciri.

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, tam olarak bir target_file veya target_path belirtilmiş halde çağrılmalıdır.

target_file özelliğini kullandığınızda declare_file() veya declare_directory() ile output ifadesini bildirin ve target_file türüyle eşleştirin. Bu durumda, sembolik bağlantı target_file konumuna işaret eder. Bazel, sembol bağlantısı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 kodunu kullandığınızda declare_symlink() ile output ifadesini belirtin. Bu durumda, sembolik bağlantı target_path değerini gösterir. Bazel hiçbir zaman sembolik bağlantıyı çözümlemez ve bu işlemin çıkışı yalnızca sembol bağlantısının metin içeriği (yani readlink() değeri) değiştiğinde geçersiz kılınır. Ö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 = Yok
Çıkış sembolünün işaret edeceği dosya.
target_path string; or None; default = Yok
Çıkış sembolü bağlantısının yönlendirdiği tam yol. Normalleştirme veya başka bir işlem uygulanmaz.
is_executable default = False
Yalnızca target_file ile kullanılabilir, target_path ile kullanılamaz. Doğruysa işlem yürütüldüğünde target_file yolu, yürütülebilir olduğunu onaylamak için kontrol edilir ve yürütülmezse bir hata bildirilir. is_executable False (Yanlış) değerine ayarlanırsa hedef yürütülebilir değil, yalnızca doğrulama yapılmaz.

Sallanan sembolik bağlantılar oluşturma sırasında mevcut olmayacağından bu özellik target_path açısından anlamlı değildir.

progress_message string; or None; default = Yok
Derleme sırasında kullanıcıya gösterilecek ilerleme mesajı.

şablon_dikkati

TemplateDict actions.template_dict()

Deneysel. Bu API deneyseldir ve herhangi bir zamanda değiştirilebilir. Lütfen bağımlı olma. --+experimental_lazy_template_expansion ayarlayarak deneysel şekilde etkinleştirilebilir
Deneysel: Bellek açısından verimli şablon genişletme 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 dosya, 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 öğesini kullanabilirsiniz.

Parametreler

Parametre Açıklama
output gereklidir
Çıkış dosyası.
content string; or Args; dosyanın içeriği
gerekir. Bir dize veya bir actions.args() nesnesi olabilir.
is_executable default = False
Çıkış dosyasının yürütülebilir olup olmayacağı.