Kurallar
takma ad
Kural kaynağını görüntülemealias(name, actual, compatible_with, deprecation, features, restricted_to, tags, target_compatible_with, testonly, visibility)
alias
kuralı, bir kuralın adlandırılacağı başka bir ad oluşturur.
Takma ad yalnızca "normal" hedefler için çalışır. Özellikle package_group
ve test_suite
takma adla kullanılamaz.
Hedefin yeniden adlandırılması için birçok dosyada değişiklik yapılması gereken büyük depolarda diğer adlandırma yararlı olabilir. Ayrıca, bu mantığı birden fazla hedef için yeniden kullanmak istiyorsanız select işlev çağrısını depolamak için alias kuralını da kullanabilirsiniz.
Takma ad kuralının kendi görünürlük bildirimi vardır. Diğer tüm açılardan, referans verdiği kural gibi davranır (ör.takma ad üzerinde testonly yoksayılır; bunun yerine referans verilen kuralın testonly özelliği kullanılır). Ancak bazı küçük istisnalar vardır:
-
Takma adları komut satırında belirtilen testler çalıştırılmaz. Referans verilen testi çalıştıran bir takma ad tanımlamak için
test_suite
kuralınıtests
özelliğinde tek bir hedefle kullanın. -
Ortam grupları tanımlarken
environment
kurallarının diğer adları desteklenmez.--target_environment
komut satırı seçeneğinde de desteklenmez.
Örnekler
filegroup( name = "data", srcs = ["data.txt"], ) alias( name = "other", actual = ":data", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
actual
|
Etiket: zorunlu Bu takma adın işaret ettiği hedef. Kural olması gerekmez, giriş dosyası da olabilir. |
config_setting
Kural kaynağını görüntülemeconfig_setting(name, constraint_values, define_values, deprecation, distribs, features, flag_values, licenses, tags, testonly, values, visibility)
Yapılandırılabilir özellikleri tetiklemek amacıyla beklenen bir yapılandırma durumuyla (derleme işaretleri veya platform kısıtlamaları olarak ifade edilir) eşleşir. Bu kuralın nasıl kullanılacağı hakkında bilgi edinmek için select, genel özelliklere genel bakış için Yapılandırılabilir özellikler başlıklı makaleyi inceleyin.
Örnekler
Aşağıdaki, --compilation_mode=opt
veya -c opt
değerini ayarlayan tüm derlemelerle eşleşir (komut satırında açıkça veya .bazelrc dosyalarından dolaylı olarak):
config_setting( name = "simple", values = {"compilation_mode": "opt"} )
Aşağıdaki, ARM'yi hedefleyen ve özel tanımlamayı uygulayan tüm derlemelerle eşleşir
FOO=bar
(örneğin, bazel build --cpu=arm --define FOO=bar ...
):
config_setting( name = "two_conditions", values = { "cpu": "arm", "define": "FOO=bar" } )
Aşağıdaki, user-defined flag'i ayarlayan tüm derlemelerle eşleşir
--//custom_flags:foo=1
(komut satırında açıkça veya .bazelrc dosyalarından örtülü olarak):
config_setting( name = "my_custom_flag_is_set", flag_values = { "//custom_flags:foo": "1" }, )
Aşağıdaki, x86_64 mimarisine ve glibc sürüm 2.25'e sahip bir platformu hedefleyen tüm derlemelerle eşleşir. Bu eşleşme, //example:glibc_2_25
etiketli bir constraint_value
öğesinin var olduğu varsayılarak yapılır. Bir platform, bu ikisinin ötesinde ek kısıtlama değerleri tanımlasa bile eşleşmeye devam eder.
config_setting( name = "64bit_glibc_2_25", constraint_values = [ "@platforms//cpu:x86_64", "//example:glibc_2_25", ] )
config_setting
üst düzey komut satırı işaretleriyle eşleşmese bile bazı derleme hedefleriyle eşleşebileceği anlamına gelir.
Notlar
- Birden fazla
config_setting
mevcut yapılandırma durumuyla eşleştiğinde ne olacağını öğrenmek için select (seç) bölümüne bakın. - Kısa biçimleri destekleyen işaretler (ör.
--compilation_mode
ve-c
) içinvalues
tanımları tam biçimde olmalıdır. Bunlar, her iki form kullanılarak yapılan çağırmalarla otomatik olarak eşleşir. -
Bir işaret birden fazla değer alıyorsa (ör.
--copt=-Da --copt=-Db
veya liste türünde bir Starlark işareti),"a"
gerçek listede herhangi bir yerde bulunuyorsavalues = { "flag": "a" }
eşleşir.values = { "myflag": "a,b" }
aynı şekilde çalışır: Bu,--myflag=a --myflag=b
,--myflag=a --myflag=b --myflag=c
,--myflag=a,b
ve--myflag=c,b,a
ile eşleşir. Tam anlamlar işaretler arasında farklılık gösterir. Örneğin,--copt
aynı örnekte birden çok değeri desteklemez:--copt=a,b
["a,b"]
değerini,--copt=a --copt=b
ise["a", "b"]
değerini üretir (bu nedenlevalues = { "copt": "a,b" }
, ikincisiyle değil, ilkiyle eşleşir). Ancak--ios_multi_cpus
(Apple kuralları için) yapılır:-ios_multi_cpus=a,b
veios_multi_cpus=a --ios_multi_cpus=b
ifadelerinin her ikisi de["a", "b"]
sonucunu verir. İşaret tanımlarını kontrol edin ve koşullarınızı dikkatlice test ederek beklentilerinizi karşıladığını doğrulayın. - Yerleşik derleme işaretleriyle modellenmeyen koşullar tanımlamanız gerekiyorsa
Starlark ile tanımlanan işaretleri kullanın.
--define
karakterini de kullanabilirsiniz ancak bu karakter daha zayıf destek sunar ve önerilmez. Daha fazla bilgi için buraya göz atın. - Farklı paketlerde aynı
config_setting
tanımlarını tekrarlamaktan kaçının. Bunun yerine, standart bir pakette tanımlanan ortak birconfig_setting
öğesine referans verin. values
,define_values
veconstraint_values
aynıconfig_setting
içinde herhangi bir kombinasyonla kullanılabilir ancak herhangi birconfig_setting
için en az birinin ayarlanması gerekir.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
constraint_values
|
Etiket listesi; yapılandırılamaz; varsayılan değer config_setting ile eşleşmek için belirtmesi gereken minimum constraint_values kümesi. (Yürütme platformu burada dikkate alınmaz.) Platformun sahip olduğu diğer tüm ek kısıtlama değerleri yoksayılır. Ayrıntılar için
Yapılandırılabilir Derleme Özellikleri başlıklı makaleyi inceleyin.
İki |
define_values
|
Sözlük: Dize -> Dize; nonconfigurable; varsayılan değer values ile aynıdır ancak
özellikle --define işareti için kullanılır.
Bu durumda: config_setting( name = "a_and_b", values = { "define": "a=1", "define": "b=2", }) aynı anahtar ( config_setting( name = "a_and_b", define_values = { "a": "1", "b": "2", })
|
flag_values
|
Sözlük: label -> Dize; nonconfigurable; varsayılan değer values ile aynıdır ancak
kullanıcı tanımlı derleme işaretleri için geçerlidir.
Kullanıcı tanımlı işaretler etiket olarak, yerleşik işaretler ise rastgele dizeler olarak referans verildiğinden bu ayrı bir özelliktir. |
values
|
Sözlük: Dize -> Dize; nonconfigurable; varsayılan değer Bu kural, kendisini bir Kolaylık sağlamak için yapılandırma değerleri derleme işaretleri olarak (önünde Bir işaret komut satırında açıkça ayarlanmamışsa varsayılan değeri kullanılır.
Bir anahtar sözlükte birden çok kez görünüyorsa yalnızca son örnek kullanılır.
Bir anahtar, komut satırında birden çok kez ayarlanabilen bir işareti (ör.
|
filegroup
Kural kaynağını görüntülemefilegroup(name, srcs, data, compatible_with, deprecation, distribs, features, licenses, output_group, restricted_to, tags, target_compatible_with, testonly, visibility)
Bir hedef koleksiyonuna uygun bir ad vermek için filegroup
simgesini kullanın.
Bunlar daha sonra diğer kurallardan referans alınabilir.
Dizinlere doğrudan referans vermek yerine filegroup
kullanılması önerilir.
Derleme sistemi, dizinin altındaki tüm dosyalar hakkında tam bilgiye sahip olmadığından bu dosyalar değiştiğinde yeniden derleme yapmayabilir. Bu nedenle, ikinci yöntem güvenilir değildir. glob ile birlikte kullanıldığında filegroup
, tüm dosyaların derleme sistemi tarafından açıkça bilinmesini sağlayabilir.
Örnekler
İki kaynak dosyasından oluşan bir filegroup
oluşturmak için
filegroup( name = "mygroup", srcs = [ "a_file.txt", "some/subdirectory/another_file.txt", ], )
Alternatif olarak, bir testdata dizinini taramak için glob
kullanın:
filegroup( name = "exported_testdata", srcs = glob([ "testdata/*.dat", "testdata/logs/**/*.log", ]), )
Bu tanımlardan yararlanmak için herhangi bir kuraldan alınan bir etiketle filegroup
öğesine referans verin:
cc_library( name = "my_library", srcs = ["foo.cc"], data = [ "//my_package:exported_testdata", "//my_package:mygroup", ], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
srcs
|
Etiket listesi; varsayılan değer
|
data
|
Etiket listesi; varsayılan değer
|
output_group
|
Dize; varsayılan değer "Çıkış grubu", bir hedefin çıkış yapıtlarının kategorisidir ve bu kuralın uygulamasında belirtilir. |
genquery
Kural kaynağını görüntülemegenquery(name, deps, data, compatible_with, compressed_output, deprecation, distribs, exec_compatible_with, exec_properties, expression, features, licenses, opts, restricted_to, scope, strict, tags, target_compatible_with, testonly, visibility)
genquery()
, Blaze sorgu dilinde belirtilen bir sorguyu çalıştırır ve sonucu bir dosyaya aktarır.
Derlemenin tutarlı kalması için sorgunun yalnızca scope
özelliğinde belirtilen hedeflerin geçişli kapanımını ziyaret etmesine izin verilir. Bu kuralı ihlal eden sorgular, yürütme sırasında başarısız olur. Bunun nedeni, strict
değerinin belirtilmemiş olması veya doğru olmasıdır (strict
değeri yanlışsa kapsam dışı hedefler uyarı verilerek atlanır). Bunun olmamasını sağlamanın en kolay yolu, sorgu ifadesindekiyle aynı etiketleri kapsamda belirtmektir.
Burada ve komut satırında izin verilen sorgular arasındaki tek fark, joker karakter hedef spesifikasyonları (ör. //pkg:*
veya //pkg:all
) içeren sorgulara burada izin verilmemesidir.
Bunun iki nedeni vardır: Birincisi, genquery
, sorgunun geçişli kapanışının dışındaki hedeflerin çıkışını etkilemesini önlemek için bir kapsam belirtmelidir.İkincisi ise BUILD
dosyaları, joker karakter bağımlılıklarını desteklemez (ör. deps=["//a/..."]
izin verilmez).
--output=graph|minrank|maxrank
veya somepath
üst düzey işlev olarak kullanıldığında hariç olmak üzere, deterministik çıkışı zorunlu kılmak için genquery'nin çıkışı sözlükbilimsel olarak sıralanır.
Çıkış dosyasının adı, kuralın adıdır.
Örnekler
Bu örnek, belirtilen hedefin geçişli kapanımındaki etiketlerin listesini bir dosyaya yazar.
genquery( name = "kiwi-deps", expression = "deps(//kiwi:kiwi_lib)", scope = ["//kiwi:kiwi_lib"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
compressed_output
|
Boole değeri; varsayılan değer True ise sorgu çıkışı GZIP dosya biçiminde yazılır. Bu ayar, sorgu çıkışının büyük olması beklendiğinde Bazel'in bellek kullanımında ani artışları önlemek için kullanılabilir. Bazel, bu ayarın değerinden bağımsız olarak 220 bayttan büyük sorgu çıkışlarını dahili olarak sıkıştırdığından bu ayarı True olarak ayarlamak saklanan yığını azaltmayabilir. Ancak bu, Bazel'in çıkış dosyasını yazarken sıkıştırmayı açmayı atlamasına olanak tanır. Bu işlem, yoğun bellek kullanımı gerektirebilir.
|
expression
|
Dize; zorunlu Yürütülecek sorgu. Komut satırının ve BUILD dosyalarındaki diğer yerlerin aksine, buradaki etiketler çalışma alanının kök dizinine göre çözümlenir. Örneğin,a/BUILD dosyasındaki bu özellikteki :b etiketi, //:b hedefini ifade eder.
|
opts
|
Dizelerin listesi; varsayılan değer bazel query 'ya iletilebilen komut satırı seçeneklerine karşılık gelir. Bazı sorgu seçeneklerine burada izin verilmez: --keep_going , --query_file , --universe_scope , --order_results ve --order_output . Burada belirtilmeyen seçenekler, bazel query komut satırındaki gibi varsayılan değerlere sahip olur.
|
scope
|
Etiket listesi; zorunlu Sorgunun kapsamı. Sorgunun, bu hedeflerin geçişli kapanımının dışındaki hedeflere dokunmasına izin verilmez. |
strict
|
Boole değeri; varsayılan değer |
genrule
Kural kaynağını görüntülemegenrule(name, srcs, outs, cmd, cmd_bash, cmd_bat, cmd_ps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, executable, features, licenses, local, message, output_licenses, output_to_bindir, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)
genrule
, kullanıcı tanımlı bir Bash komutu kullanarak bir veya daha fazla dosya oluşturur.
Genrules, görev için belirli bir kural yoksa kullanabileceğiniz genel derleme kurallarıdır.
Örneğin, tek satırlık bir Bash komutu çalıştırabilirsiniz. Ancak C++ dosyalarını derlemeniz gerekiyorsa mevcut cc_*
kurallarına uymanız gerekir. Çünkü tüm ağır işler sizin için zaten yapılmıştır.
genrule'un komut bağımsız değişkenini yorumlamak için bir kabuk gerektirdiğini unutmayın. PATH'te bulunan rastgele programlara başvurmak da kolaydır ancak bu, komutu hermetik olmayan bir hale getirir ve tekrarlanamayabilir. Yalnızca tek bir aracı çalıştırmanız gerekiyorsa bunun yerine run_binary'yi kullanabilirsiniz.
Testleri çalıştırmak için genrule kullanmayın. Önbelleğe alma politikaları ve ortam değişkenleri de dahil olmak üzere testler ve test sonuçları için özel muafiyetler vardır. Testlerin genellikle derleme tamamlandıktan sonra ve hedef mimaride çalıştırılması gerekirken genrule'lar derleme sırasında ve yürütme mimarisinde (ikisi farklı olabilir) yürütülür. Genel amaçlı bir test kuralına ihtiyacınız varsa sh_test
kuralını kullanın.
Çapraz Derlemeyle İlgili Dikkat Edilmesi Gerekenler
Çapraz derleme hakkında daha fazla bilgi için kullanım kılavuzuna bakın.
Genrules, derleme sırasında çalıştırılır ancak çıktıları genellikle derlemeden sonra dağıtım veya test için kullanılır. Mikrodenetleyici için C kodu derleme örneğini ele alalım: Derleyici, C kaynak dosyalarını kabul eder ve mikrodenetleyicide çalışan kod oluşturur. Oluşturulan kod, derlenmesinde kullanılan CPU'da çalışamaz ancak C derleyicinin (kaynaktan derlendiyse) çalışması gerekir.
Derleme sistemi, derlemenin üzerinde çalıştığı makineleri tanımlamak için exec yapılandırmasını, derlemenin çıktısının üzerinde çalışması gereken makineleri tanımlamak için ise hedef yapılandırmayı kullanır. Bu seçeneklerin her birini yapılandırma imkanı sunar ve çakışmaları önlemek için ilgili dosyaları ayrı dizinlere ayırır.
Derleme sistemi, genrules için bağımlılıkların uygun şekilde oluşturulmasını sağlar:
srcs
target yapılandırması için (gerekirse) oluşturulur,
tools
exec yapılandırması için oluşturulur ve çıkışın target yapılandırması için olduğu kabul edilir. Ayrıca, genrule komutlarının ilgili araçlara iletebileceği
"Make" değişkenleri de sağlar.
Genrule'da deps
özelliği tanımlanmaması kasıtlıdır: Diğer yerleşik kurallar, bağımlı kuralların nasıl işleneceğini otomatik olarak belirlemek için kurallar arasında aktarılan dile bağlı meta bilgileri kullanır ancak genrule'larda bu düzeyde bir otomasyon mümkün değildir. Genrules yalnızca dosya ve runfiles düzeyinde çalışır.
Özel Durumlar
Exec-exec derlemesi: Bazı durumlarda, derleme sisteminin genrules'u, çıkışın derleme sırasında da yürütülebileceği şekilde çalıştırması gerekir. Örneğin, bir genrule daha sonra başka bir genrule tarafından kullanılan özel bir derleyici oluşturuyorsa, ilk genrule çıkışını exec yapılandırması için üretmelidir. Çünkü derleyici, diğer genrule'da bu yapılandırmada çalışır. Bu durumda, derleme sistemi doğru şeyi otomatik olarak yapar: hedef yapılandırma yerine yürütme yapılandırması için ilk genrule'un srcs
ve outs
öğelerini oluşturur. Daha fazla bilgi için kullanım kılavuzuna bakın.
JDK ve C++ Araçları: JDK veya C++ derleyici paketindeki bir aracı kullanmak için derleme sistemi, kullanılacak bir dizi değişken sağlar. Ayrıntılar için "Marka" değişkeni bölümüne bakın.
Genrule Ortamı
genrule komutu, bir komut veya işlem hattı başarısız olduğunda başarısız olacak şekilde yapılandırılmış bir Bash kabuğu tarafından set -e -o pipefail
kullanılarak yürütülür.
Derleme aracı, yalnızca PATH
, PWD
, TMPDIR
gibi temel değişkenleri tanımlayan temizlenmiş bir işlem ortamında Bash komutunu yürütür.
Derlemelerin yeniden üretilebilir olmasını sağlamak için kullanıcının kabuk ortamında tanımlanan değişkenlerin çoğu genrule'un komutuna iletilmez. Ancak Bazel (Blaze değil), kullanıcının PATH
ortam değişkeninin değerini geçirir.
PATH
değerinde yapılan herhangi bir değişiklik, Bazel'in komutu bir sonraki derlemede yeniden yürütmesine neden olur.
Bir genrule komutu, şu anda zorunlu kılınmamış olsa da, komutun alt işlemleri olan süreçlere bağlanmak dışında ağa erişmemelidir.
Derleme sistemi, mevcut tüm çıkış dosyalarını otomatik olarak siler ancak bir genrule çalıştırmadan önce gerekli üst dizinleri oluşturur. Ayrıca, hata durumunda çıkış dosyalarını da kaldırır.
Genel Tavsiye
- Genrule tarafından çalıştırılan araçların deterministik ve hermetik olduğundan emin olun. Çıkışlarına zaman damgaları yazmamalı, kümeler ve haritalar için sabit sıralama kullanmalı ve çıkışa yalnızca göreli dosya yolları yazmalı, mutlak yollar yazmamalıdır. Bu kurala uyulmaması, beklenmedik derleme davranışlarına (Bazel'in, oluşturulacağını düşündüğünüz bir genrule'u yeniden oluşturmaması) ve önbellek performansının düşmesine neden olur.
- Çıkışlar, araçlar ve kaynaklar için
$(location)
'ı yoğun bir şekilde kullanın. Farklı yapılandırmalar için çıkış dosyalarının ayrılması nedeniyle, genrules sabit kodlanmış ve/veya mutlak yollara dayanamaz. - Aynı veya çok benzer genrule'lar birden fazla yerde kullanılıyorsa ortak bir Starlark makrosu yazın. Genrule karmaşıksa bunu bir komut dosyasında veya Starlark kuralı olarak uygulamayı düşünebilirsiniz. Bu, okunabilirliğin yanı sıra test edilebilirliği de artırır.
- Çıkış kodunun, genrule'un başarılı veya başarısız olduğunu doğru şekilde gösterdiğinden emin olun.
- stdout veya stderr'ye bilgilendirici mesajlar yazmayın. Bu, hata ayıklama için yararlı olsa da kolayca gürültüye dönüşebilir. Başarılı bir genrule sessiz olmalıdır. Öte yandan, başarısız olan bir genrule iyi hata mesajları vermelidir.
$$
evaluates to a$
, a literal dollar-sign, so in order to invoke a shell command containing dollar-signs such asls $(dirname $x)
, one must escape it thus:ls $$(dirname $$x)
.- Sembolik bağlantılar ve dizinler oluşturmaktan kaçının. Bazel, genrules tarafından oluşturulan dizin/sembolik bağlantı yapısını kopyalamaz ve dizinlerin bağımlılık kontrolü güvenilir değildir.
- Diğer kurallarda genrule'a referans verirken genrule'un etiketini veya tek tek çıkış dosyalarının etiketlerini kullanabilirsiniz. Bazen bir yaklaşım daha okunabilir olur, bazen de diğeri: Tüketici kuralının
srcs
bölümünde çıkışlara adlarıyla referans vermek, genrule'un diğer çıkışlarının yanlışlıkla alınmasını önler ancak genrule çok sayıda çıkış üretiyorsa bu işlem sıkıcı olabilir.
Örnekler
Bu örnek foo.h
oluşturur. Komut herhangi bir giriş almadığından kaynak yoktur. Komut tarafından çalıştırılan "binary", genrule ile aynı paketteki bir Perl komut dosyasıdır.
genrule( name = "foo", srcs = [], outs = ["foo.h"], cmd = "./$(location create_foo.pl) > \"$@\"", tools = ["create_foo.pl"], )
Aşağıdaki örnekte, filegroup
ve başka bir genrule
'nin çıkışlarının nasıl kullanılacağı gösterilmektedir. Açık $(location)
yönergeleri yerine $(SRCS)
kullanmanın da işe yarayacağını unutmayın. Bu örnekte, gösterim amacıyla ikincisi kullanılmıştır.
genrule( name = "concat_all_files", srcs = [ "//some:files", # a filegroup with multiple files in it ==> $(locations) "//other:gen", # a genrule with a single output ==> $(location) ], outs = ["concatenated.txt"], cmd = "cat $(locations //some:files) $(location //other:gen) > $@", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. Bu kurala, diğer BUILD kurallarının srcs veya deps bölümünde adıyla atıfta bulunabilirsiniz. Kural kaynak dosyalar oluşturuyorsa srcs özelliğini kullanmanız gerekir.
|
srcs
|
Etiket listesi; varsayılan değer
Bu özellik,
Derleme sistemi, bu ön koşulların genrule komutu çalıştırılmadan önce oluşturulmasını sağlar. Bu ön koşullar, orijinal derleme isteğiyle aynı yapılandırma kullanılarak oluşturulur. Bu ön koşulların dosyalarının adları, komuta |
outs
|
Dosya adlarının listesi; yapılandırılamaz; zorunlu Bu kural tarafından oluşturulan dosyaların listesi.Çıkış dosyaları paket sınırlarını aşmamalıdır. Çıkış dosyası adları, pakete göre yorumlanır.
genrule komutunun, her çıkış dosyasını önceden belirlenmiş bir konumda oluşturması beklenir.
Konum, |
cmd
|
Dize; varsayılan değer $(location)
ve "Marka" değişkeni yerine koyma işlemine tabidir.
cmd_bash , cmd_ps ve cmd_bat için yedek seçenektir.
Bu seçeneklerden hiçbiri geçerli değilse kullanılır.
Komut satırı uzunluğu platform sınırını (Linux/macOS'te 64K, Windows'da 8K) aşarsa genrule, komutu bir komut dosyasına yazar ve bu komut dosyasını çalıştırarak sorunu çözer. Bu, tüm cmd özellikleri ( |
cmd_bash
|
Dize; varsayılan değer Bu özellik, |
cmd_bat
|
Dize; varsayılan değer Bu özellik,
|
cmd_ps
|
Dize; varsayılan değer Bu özellik,
Powershell'in daha kolay kullanılabilmesi ve daha az hata içermesi için, genrule'da Powershell komutunu yürütmeden önce ortamı ayarlamak üzere aşağıdaki komutları çalıştırırız.
|
executable
|
Boole; yapılandırılamaz; varsayılan değer
Bu işareti True olarak ayarlamak, çıkışın yürütülebilir bir dosya olduğu ve Oluşturulan yürütülebilir dosya için veri bağımlılıklarını bildirme desteklenmez. |
local
|
Boole değeri; varsayılan değer
Doğru olarak ayarlanırsa bu seçenek,
Bu, etiket olarak "local" ( |
message
|
Dize; varsayılan değer
Bu derleme adımı yürütülürken yazdırılacak bir ilerleme mesajı. Varsayılan olarak, mesaj "Çıkış oluşturuluyor" (veya benzer şekilde sıkıcı bir mesaj) şeklindedir ancak daha spesifik bir mesaj sağlayabilirsiniz. Bu özelliği, |
output_licenses
|
Lisans türü; varsayılan değer common attributes
sayfasına göz atın.
|
output_to_bindir
|
Boole; yapılandırılamaz; varsayılan değer
True olarak ayarlanırsa bu seçenek, çıkış dosyalarının |
tools
|
Etiket listesi; varsayılan değer
Derleme sistemi, genrule komutu çalıştırılmadan önce bu ön koşulların karşılanmasını sağlar. Bu araçlar derlemenin bir parçası olarak yürütüldüğünden, exec
yapılandırması kullanılarak oluşturulur. Tek bir
|
starlark_doc_extract
Kural kaynağını görüntülemestarlark_doc_extract(name, deps, src, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, render_main_repo_name, restricted_to, symbol_names, tags, target_compatible_with, testonly, visibility)
starlark_doc_extract()
, belirli bir .bzl
veya .scl
dosyasında tanımlanan ya da yeniden dışa aktarılan kurallar, işlevler (makrolar dahil), yönler ve sağlayıcılarla ilgili dokümanları ayıklar. Bu kuralın çıktısı, Bazel kaynak ağacındaki stardoc_output.proto içinde tanımlanan bir ModuleInfo
ikili proto'dur.
Örtülü çıkış hedefleri
name.binaryproto
(varsayılan çıkış): AModuleInfo
ikili proto.name.textproto
(yalnızca açıkça istenirse oluşturulur):name.binaryproto
uygulamasının metin proto sürümü.
Uyarı: Bu kuralın çıkış biçiminin sabit olacağı garanti edilmez. Bu doküman, esas olarak Stardoc'un şirket içi kullanımı için hazırlanmıştır.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan değer load() -ed by
src ile sarmalanan Starlark dosyalarını içeren hedefler listesi. Bu hedefler normal kullanımda bzl_library hedefleri olmalıdır ancak starlark_doc_extract kuralı bunu zorunlu kılmaz ve DefaultInfo içinde Starlark dosyaları sağlayan tüm hedefleri kabul eder.
Sarmalanmış Starlark dosyalarının kaynak ağacındaki dosyalar olması gerektiğini unutmayın. Bazel, |
src
|
Etiket: zorunlu Dokümanların ayıklanacağı Starlark dosyası.Bunun kaynak ağacındaki bir dosya olması gerektiğini unutmayın. Bazel, |
render_main_repo_name
|
Boole değeri; varsayılan değer //foo:bar.bzl , @main_repo_name//foo:bar.bzl olarak yayınlanır).
Ana depoda kullanılacak ad, ana deponun Bu özellik, yalnızca aynı depoda kullanılmak üzere tasarlanan Starlark dosyaları için doküman oluşturulurken |
symbol_names
|
Dizelerin listesi; varsayılan değer
|
test_suite
Kural kaynağını görüntülemetest_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, tests, visibility)
test_suite
, insanlar için "faydalı" olarak kabul edilen bir dizi testi tanımlar. Bu sayede projeler, "check-in işleminden önce çalıştırmanız gereken testler", "projemizin yük testleri" veya "tüm küçük testler" gibi test kümeleri tanımlayabilir. blaze test
komutu bu tür bir sıralamaya uyar: blaze test //some/test:suite
gibi bir çağırma işleminde Blaze önce //some/test:suite
hedefi tarafından geçişli olarak dahil edilen tüm test hedeflerini numaralandırır (buna "test_suite genişletme" diyoruz), ardından Blaze bu hedefleri oluşturur ve test eder.
Örnekler
Mevcut paketteki tüm küçük testleri çalıştırmak için bir test paketi.
test_suite( name = "small_tests", tags = ["small"], )
Belirli bir test grubunu çalıştıran bir test paketi:
test_suite( name = "smoke_tests", tests = [ "system_unittest", "public_api_unittest", ], )
Mevcut paketteki kararsız olmayan tüm testleri çalıştırmak için kullanılan bir test paketi.
test_suite( name = "non_flaky_test", tags = ["-flaky"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
tags
|
Dizelerin listesi; yapılandırılamaz; varsayılan değer "-" karakteriyle başlayan etiketler negatif etiket olarak kabul edilir. Önündeki "-" karakteri etiketin bir parçası olarak kabul edilmez. Bu nedenle, "-small" boyutundaki bir paket etiketi, testin "small" boyutuyla eşleşir. Diğer tüm etiketler pozitif etiket olarak kabul edilir. İsteğe bağlı olarak, pozitif etiketleri daha net hale getirmek için etiketler "+" karakteriyle de başlayabilir. Bu karakter, etiketin metninin bir parçası olarak değerlendirilmez. Bu yalnızca olumlu ve olumsuz ayrımını okumayı kolaylaştırır. Yalnızca pozitif etiketlerin tümüyle ve negatif etiketlerin hiçbiriyle eşleşen test kuralları test paketine dahil edilir. Bunun, filtrelenen testlere bağımlılıklarla ilgili hata kontrolünün atlandığı anlamına gelmediğini unutmayın.Atlanan testlere bağımlılıkların yine de geçerli olması gerekir (ör. görünürlük kısıtlamaları tarafından engellenmemelidir).
Bir testin
Birbirini dışlayan etiketlere sahip testler içeren bir |
tests
|
Etiket listesi; yapılandırılamaz; varsayılan değer
Dilinden bağımsız olarak tüm
|