.bzl dosyaları

. Sorun bildir Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

. Tüm .bzl dosyalarında kullanılabilen global yöntemler.

Üyeler

analysis_test_transition

transition analysis_test_transition(settings)

Bir analiz test kuralının bağımlılıklarına uygulanacak bir yapılandırma geçişi oluşturur. Bu geçiş yalnızca analysis_test = True olan kuralların özelliklerine uygulanabilir. Bu tür kuralların özellikleri kısıtlıdır (örneğin, bağımlılık ağacının boyutu sınırlıdır). Bu nedenle, bu işlev kullanılarak oluşturulan geçişler, transition() kullanılarak oluşturulan geçişlere kıyasla potansiyel kapsam açısından sınırlıdır.

Bu işlev, temel olarak Analysis Test Framework temel kitaplığını kolaylaştırmak için tasarlanmıştır. En iyi uygulamalar için bu programın dokümanlarına (veya uygulanmasına) bakın.

Parametreler

Parametre Açıklama
settings zorunlu
Bu yapılandırma geçişi tarafından ayarlanması gereken yapılandırma ayarları hakkında bilgi içeren bir sözlük. Anahtarlar derleme ayarı etiketleridir ve değerler de geçiş sonrası yeni değerleridir. Diğer ayarlar değişmez. Bir analiz testinin başarılı olması için ayarlanması gereken belirli yapılandırma ayarlarını bildirmek için bunu kullanın.

ilişkili program

Aspect aspect(implementation, attr_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])

Yeni bir unsur yaratır. Bu işlevin sonucu, genel bir değerde depolanmalıdır. Daha fazla bilgi için lütfen Yönler'e giriş bölümünü inceleyin.

Parametreler

Parametre Açıklama
implementation zorunlu
Tam olarak iki parametre ile bu özelliği uygulayan bir Starlark işlevi: Target (enlemin uygulandığı hedef) ve ctx (hedefin oluşturulduğu kural bağlamı). Hedefin özelliklerine ctx.rule alanından erişilebilir. Bu işlev, bir özelliğin bir hedefe her uygulanması için analiz aşamasında değerlendirilir.
attr_aspects sequence of dize; varsayılan değer []
Özellik adlarının listesi. Görünüm, bu adlara sahip bir hedefin özelliklerinde belirtilen bağımlılıklar boyunca yayılır. Buradaki yaygın değerler arasında deps ve exports bulunur. Liste, bir hedefin tüm bağımlılıkları boyunca yayılacak tek bir "*" dizesi de içerebilir.
attrs dict; varsayılan değer: {}
Özelliğin tüm özelliklerini açıklayan bir sözlük. Özellik adından "attr.label" veya "attr.string" gibi bir özellik nesnesiyle eşlenir (attr modülüne bakın). En boy özellikleri, uygulama işlevinde ctx parametresinin alanları olarak kullanılabilir.

_ ile başlayan dolaylı özellikler, varsayılan değerlere sahip olmalı ve label veya label_list türünde olmalıdır.

Açık özelliklerin türü string olmalı ve values kısıtlamasını kullanmalıdır. Açık özellikler, en boy oranını yalnızca kısıtlamaya göre aynı ad, tür ve geçerli değerlere sahip kurallarla kullanılacak şekilde kısıtlar.

required_providers varsayılan değer []
Bu özellik, özelliğin yayılmasını, yalnızca kuralları zorunlu sağlayıcıların reklamını yapan hedeflerle sınırlamasına olanak tanır. Değer, ya tek tek sağlayıcılar ya da sağlayıcı listeleri içeren bir liste olmalıdır (ikisini birden değil). Örneğin, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] geçerli bir değerdir ancak [FooInfo, BarInfo, [BazInfo, QuxInfo]] geçerli değildir.

İç içe yerleştirilmemiş sağlayıcılar listesi, otomatik olarak bir sağlayıcı listesi içeren bir listeye dönüştürülecektir. Yani [FooInfo, BarInfo], otomatik olarak [[FooInfo, BarInfo]] biçimine dönüştürülecek.

Bazı kural (ör. some_rule) hedeflerinin bir özellik tarafından görülebilmesi için some_rule, zorunlu sağlayıcı listelerinden en az birindeki tüm sağlayıcıların reklamını yapmalıdır. Örneğin, bir özelliğin required_providers öğesi [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] ise bu özellik yalnızca some_rule tarafından FooInfo veya BarInfo veya BazInfo ve QuxInfo sağlandığı takdirde some_rule hedeflerini görebilir.

required_aspect_providers varsayılan değer []
Bu özellik, ilgili unsurun diğer unsurları incelemesine olanak tanır. Değer, ya tek tek sağlayıcılar ya da sağlayıcı listeleri içeren bir liste olmalıdır (ikisini birden değil). Örneğin, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] geçerli bir değerdir ancak [FooInfo, BarInfo, [BazInfo, QuxInfo]] geçerli değildir.

İç içe yerleştirilmemiş sağlayıcılar listesi, otomatik olarak bir sağlayıcı listesi içeren bir listeye dönüştürülecektir. Yani [FooInfo, BarInfo], otomatik olarak [[FooInfo, BarInfo]] biçimine dönüştürülecek.

Bu unsura başka bir özelliğin (ör. other_aspect) görünür olması için other_aspect, listelerden en az birindeki tüm sağlayıcıları sağlamalıdır. [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] örneğinde, other_aspect yalnızca FooInfo veya BarInfo ya da BazInfo ve QuxInfo sağlıyorsa bu özellik other_aspect değerini görebilir.

provides varsayılan değer []
Uygulama işlevinin döndürmesi gereken sağlayıcıların listesi.

Uygulama işlevi, burada listelenen sağlayıcı türlerinden herhangi birini döndürdüğü değerden çıkarırsa bu bir hatadır. Ancak uygulama işlevi, burada listelenmeyen ek sağlayıcıları döndürebilir.

Listenin her öğesi, provider() tarafından döndürülen bir *Info nesnesidir. Ancak eski sağlayıcı, bunun yerine dize adıyla temsil edilir. Kuralın bir hedefi, zorunlu sağlayıcıyı tanımlayan bir hedef için bağımlılık olarak kullanıldığında, bu sağlayıcının burada belirtilmesi gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak, zorunlu olmasa da bunu belirtmek en iyi uygulama olarak kabul edilir. Ancak bir en boy değerinin required_providers alanı için sağlayıcıların burada belirtilmesi gerekir.

requires Aspect'lerin sequence (dizi) varsayılan değer []
Bu özellikten önce uygulanması gereken özelliklerin listesi.
fragments sequence of dize; varsayılan değer []
Özelliğin hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
host_fragments sequence of dize; varsayılan değer []
Özelliğin ana makine yapılandırmasında gerektirdiği yapılandırma parçalarının adlarının listesi.
toolchains sequence; varsayılan değer: []
Ayarlanırsa bu kuralın gerektirdiği araç zincirleri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain aracılığıyla kuralın uygulanmasına sağlanır.
incompatible_use_toolchain_transition varsayılan değer False
Kullanımdan kaldırıldı ve artık kullanılmıyor ve kaldırılması gerekiyor.
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları ile çıkarılabilecek unsurun açıklaması.
apply_to_generating_rules varsayılan değer False
Doğru değerine ayarlanırsa öğe, çıkış dosyasına uygulandığında çıkış dosyasının oluşturma kuralına uygulanır.

Örneğin, bir unsurun "deps" özelliği aracılığıyla geçişli olarak yayıldığını ve "alfa" hedefine uygulandığını varsayalım. "alfa"nın "deps = [':beta_çıkış"]" değerine sahip olduğunu ve burada "beta_çıkış" değerinin hedef "beta"nın bildirilen çıkışı olduğunu varsayalım. "Beta"nın "dep"lerinden biri olarak "charlie" hedefini içerdiğini varsayalım. En boy için "apply_to_generating_rules=True" değerini döndürürse en boy oranı "alfa", "beta" ve "charlie" üzerinden yayılır. Yanlış değerine ayarlanırsa en boy oranı yalnızca "alfa"ya aktarılır.

Varsayılan olarak False (yanlış) değerini alır.

exec_compatible_with sequence of dize; varsayılan değer []
Yürütme platformunda bu özelliğin tüm örnekleri için geçerli olan kısıtlamaların listesi.
exec_groups dict; veya None; varsayılan değer: None
Yürütme grubu adının (dize) exec_group sn. sayısına. Ayarlanırsa özelliklerin tek bir örnek içinde birden fazla yürütme platformunda işlem çalıştırmasına olanak tanır. Daha fazla bilgi için yürütme grupları belgelerine göz atın.
subrules Alt Kural'ın sequence'ı; varsayılan değer []
Deneysel: Bu özellik tarafından kullanılan alt kuralların listesi.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Etiket türündeki bir özellik için geç sınırlanan bir varsayılan değere başvuruda bulunuyor. Bir değer "geç sınırlanmış" yapılandırmanın gerekli olup olmadığını belirtmenizi öneririz. Bunu değer olarak kullanan tüm özellikler gizli olmalıdır.

Örnek kullanım:

Kural özelliği tanımlama:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

Kural uygulamasında erişim:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

Parametreler

Parametre Açıklama
fragment zorunlu
Geç sınır değeri içeren bir yapılandırma parçasının adı.
name zorunlu
Yapılandırma parçasından alınacak değerin adı.

çökmüş

depset depset(direct=None, order="default", *, transitive=None)

depset oluşturur. direct parametresi, depset'in doğrudan öğelerinin listesidir. transitive parametresi ise öğeleri, oluşturulan görüntünün dolaylı öğeleri haline gelen depset'lerin listesidir. Depset bir listeye dönüştürüldüğünde öğelerin döndürülme sırası order parametresiyle belirtilir. Daha fazla bilgi için Depsise genel bakış başlıklı makaleyi inceleyin.

Bir kümenin tüm öğeleri (doğrudan ve dolaylı), type(x) ifadesiyle elde edilenle aynı türde olmalıdır.

Yineleme sırasında yinelemeleri ortadan kaldırmak için karma tabanlı bir küme kullanıldığından, kümedeki tüm öğeler karma hale getirilebilir olmalıdır. Ancak bu değişken, şu anda tüm kurucularda tutarlı bir şekilde kontrol edilmemektedir. Tutarlı denetim sağlamak için --incompliance_always_check_depset_elements işaretini kullanın; bu, gelecekteki sürümlerde varsayılan davranış olacaktır. Sorun 10313'e bakın.

Ayrıca, öğeler şu anda sabit olmalıdır ancak bu kısıtlama ileride gevşetilecektir.

Oluşturulan depsetin sırası, transitive depsetlerinin sırasıyla uyumlu olmalıdır. "default" siparişi diğer siparişlerle uyumludur, diğer tüm siparişler yalnızca kendileri ile uyumludur.

Parametreler

Parametre Açıklama
direct sequence; veya None; varsayılan değer: None
Bir kümenin doğrudan öğelerinin listesi.
order varsayılan değer "default"
Yeni konsol için geçiş stratejisi. Olası değerler için buraya bakın.
transitive sequence of depset'ler; veya None; varsayılan değer None
Öğeleri, derinliğin dolaylı öğeleri haline gelecek olan depset'lerin listesi.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[])

Kural uygulaması sırasında belirli bir yürütme platformu için işlemler oluşturmak amacıyla kullanılabilecek bir yürütme grubu oluşturur.

Parametreler

Parametre Açıklama
toolchains sequence; varsayılan değer: []
Bu yürütme grubunun gerektirdiği araç zincirleri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir.
exec_compatible_with sequence of dize; varsayılan değer []
Yürütme platformundaki kısıtlamaların listesi.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)

Yeni bir modül uzantısı oluşturur. Dışa aktarılıp MODULE.bazel dosyasında kullanılabilmesi için global bir değerde depolayın.

Parametreler

Parametre Açıklama
implementation zorunlu
Bu modül uzantısını uygulayan işlev. Tek bir parametre olmalıdır: module_ctx. Bu işlev, kullanılabilir depo kümesini belirlemek için bir derlemenin başında bir kez çağrılır.
tag_classes varsayılan değer {}
Uzantı tarafından kullanılan tüm etiket sınıflarını bildiren bir sözlük. Etiket sınıfının adından bir tag_class nesnesiyle eşlenir.
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları ile çıkarılabilecek modül uzantısının açıklaması.
environ sequence of dize; varsayılan değer []
Bu modül uzantısının bağımlı olduğu ortam değişkeninin listesini sağlar. Listedeki bir ortam değişkeni değişirse uzantı yeniden değerlendirilir.
os_dependent varsayılan değer False
Bu uzantının işletim sistemine bağlı olup olmadığını belirtir
arch_dependent varsayılan değer False
Bu uzantının mimariye bağlı olup olmadığını belirtir

sağlayıcı

unknown provider(doc=None, *, fields=None, init=None)

Sağlayıcı sembolünü tanımlar. Sağlayıcı, çağırılarak örneklenebilir veya doğrudan bir hedeften bu sağlayıcının bir örneğini almak için anahtar olarak kullanılabilir. Örnek:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Sağlayıcıların nasıl kullanılacağıyla ilgili kapsamlı bir kılavuz için Kurallar (Sağlayıcılar) başlıklı makaleyi inceleyin.

init belirtilmezse Provider çağrılabilir bir değer döndürür.

init belirtilirse 2 öğeden oluşan bir öğe döndürür: bir Provider çağrılabilir değer ve ham oluşturucu çağrılabilir değer. Ayrıntılar için Kurallar (Özel sağlayıcıların özel başlatma) bölümüne ve init parametresiyle ilgili tartışmaya göz atın.

Parametreler

Parametre Açıklama
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları ile çıkarılabilecek sağlayıcı açıklaması.
fields sequence of dize; veya dikkat; veya None; varsayılan ayar None
Belirtilirse izin verilen alanlar grubunu kısıtlar.
Olası değerler şunlardır:
  • alan listesi:
    provider(fields = ['a', 'b'])

  • sözlük alan adı -> dokümanlar:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Tüm alanlar isteğe bağlıdır.
init çağrılabilir; veya None; varsayılan değer None
Örnekleme sırasında sağlayıcının alan değerlerini ön işleme ve doğrulamak için isteğe bağlı bir geri çağırma. init belirtilirse provider(), 2 öğeden oluşan bir öğe döndürür: normal sağlayıcı sembolü ve ham oluşturucu.

Net bir açıklama şöyledir: Kolay anlaşılır bir tartışma ve kullanım alanları için Kurallar (Sağlayıcıların özel başlatılması) başlıklı makaleyi inceleyin.

P, provider() çağrısıyla oluşturulan sağlayıcı sembolü olsun. Kavramsal olarak, varsayılan oluşturucu işlevi c(*args, **kwargs) çağırılarak bir P örneği oluşturulur. Bu işlev şunları yapar:

  • args boş değilse bir hata oluşur.
  • provider() çağrılırken fields parametresi belirtilmişse ve kwargs, fields içinde listelenmeyen herhangi bir anahtar içeriyorsa bir hata oluşur.
  • Aksi takdirde, c, kwargs içindeki her k: v girişi için v değerine sahip k adlı bir alana sahip yeni bir örnek döndürür.
Bir init geri çağırması verilmediğinde, P simgesine yapılan bir çağrı, varsayılan oluşturucu işlevi c için bir çağrı olarak işlev görür; diğer bir deyişle P(*args, **kwargs), c(*args, **kwargs) değerini döndürür. Örneğin,
MyInfo = provider()
m = MyInfo(foo = 1)
, m bunu m.foo == 1 içeren bir MyInfo örneği olacak şekilde doğrudan yapar.

Ancak init değerinin belirtildiği durumda P(*args, **kwargs) çağrısı, aşağıdaki adımları uygular:

  1. Geri çağırma, init(*args, **kwargs) olarak, yani P içine iletilen konum ve anahtar kelime bağımsız değişkenleriyle tamamen aynı şekilde çağrılır.
  2. init işlevinin döndürülen değerinin, anahtarları alan adı dizeleri olan bir sözlük (d) olması beklenir. Değilse bir hata oluşur.
  3. c(**d) örneğinde olduğu gibi, d girişleriyle varsayılan oluşturucu anahtar kelime bağımsız değişkenleri olarak çağrılarak yeni bir P örneği oluşturulur.

Not: Yukarıdaki adımlar, *args veya **kwargs öğesinin init imzasıyla eşleşmemesi veya init öğesinin gövdesinin değerlendirilmesinin başarısız olması (belki kasıtlı olarak fail() çağrısıyla) veya init değerinin beklenen şemaya sahip bir sözlük olmadığı durumlarda bir hata oluştuğu anlamına gelir.

Bu şekilde, init geri çağırması konumsal bağımsız değişkenlere ve ön işleme ile doğrulama için rastgele mantığa izin vererek normal sağlayıcı yapısını genelleştirir. İzin verilen fields listesinin atlatılmasına olanak sağlamaz.

init belirtildiğinde, provider() işlevinin döndürülen değeri (P, r) demeti haline gelir. Burada r, ham oluşturucu olur. Aslında r işlevinin davranışı, tam olarak yukarıda açıklanan c varsayılan oluşturucu işleviyle aynıdır. Genellikle r, adının önüne bir alt çizgi eklenen bir değişkene bağlıdır. Böylece, yalnızca geçerli .bzl dosyası doğrudan erişebilir:

MyInfo, _new_myinfo = provider(init = ...)

repository_rule

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)

Yeni bir depo kuralı oluşturur. WORKSPACE dosyasından yüklenip çağrılabilmesi için genel bir değerde depolayın.

Parametreler

Parametre Açıklama
implementation zorunlu
bu kuralı uygulayan fonksiyondur. Tek bir parametre olmalıdır: repository_ctx. İşlev, kuralın her örneği için yükleme aşamasında çağrılır.
attrs dict; veya None; varsayılan değer: None
sözlüğünü kullanmanızı öneririz. Özellik adı, özellik nesnesiyle eşlenir (attr modülüne bakın). _ ile başlayan özellikler gizlidir ve bir dosyaya etiket için örtülü bağımlılık eklemek için kullanılabilir (depo kuralı, oluşturulan bir yapıya bağlı olamaz). name özelliği dolaylı olarak eklenir ve belirtilmemelidir.
local varsayılan değer False
Bu kuralın, yerel sistemden her şeyi getirdiğini ve her getirme işleminde yeniden değerlendirilmesi gerektiğini belirtin.
environ sequence of dize; varsayılan değer []
Bu depo kuralının bağlı olduğu ortam değişkeninin listesini sağlar. Listedeki bir ortam değişkeni değişirse depo yeniden getirilir.
configure varsayılan değer False
Deponun, sistemi yapılandırma amacıyla incelediğini belirtir
remotable varsayılan değer False
Deneyseldir. Bu parametre deneme amaçlıdır ve herhangi bir zamanda değişebilir. Lütfen bu metrikten yararlanmayın. ---experimental_repo_remote_exec
Uzaktan yürütmeyle uyumlu olarak ayarlanarak deneysel olarak etkinleştirilebilir
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları ile çıkarılabilecek depo kuralının açıklaması.

kural

callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])

Hedef oluşturmak için DERLE dosyası veya makrodan çağrılabilecek yeni bir kural oluşturur.

Kurallar, bir .bzl dosyasındaki genel değişkenlere atanmalıdır; genel değişkenin adı kuralın adıdır.

Test kurallarında adın _test ile bitmesi gerekir. Diğer hiçbir kuralda ise bu son ek bulunmamalıdır. (Bu kısıtlama yalnızca kurallar için geçerlidir, hedefleri için geçerli değildir.)

Parametreler

Parametre Açıklama
implementation zorunlu
bu kuralı uygulayan Starlark işlevinin tam olarak bir parametresi olmalıdır: ctx. İşlev, kuralın her örneği için analiz aşamasında çağrılır. Kullanıcının sağladığı özelliklere erişebilir. Tanımlanan tüm çıkışları oluşturmak için işlemler oluşturması gerekir.
test bool; varsayılan değer: unbound
Bu kuralın bir test kuralı olup olmadığı, yani bir blaze test komutunun konusu olup olmadığı. Tüm test kuralları otomatik olarak yürütülebilir kabul edilir; bir test kuralı için executable = True değerinin açıkça ayarlanması gerekmez (ve önerilmez). Değer varsayılan olarak False değerine ayarlanır. Daha fazla bilgi için Kurallar sayfasına göz atın.
attrs dict; varsayılan değer: {}
sözlüğünü kullanmanızı öneririz. Özellik adı, özellik nesnesiyle eşlenir (attr modülüne bakın). _ ile başlayan özellikler gizlidir ve bir etikete dolaylı bağımlılık eklemek için kullanılabilir. name özelliği dolaylı olarak eklenir ve belirtilmemelidir. visibility, deprecation, tags, testonly ve features özellikleri örtülü olarak eklenir ve geçersiz kılınamaz. Çoğu kural için yalnızca birkaç özellik gerekir. Kural işlevi, bellek kullanımını sınırlandırmak için özelliklerin boyutuna bir sınır uygular.
outputs dict; veya None; veya function; varsayılan değer: None
Kullanımdan kaldırıldı. Bu parametrenin desteği sonlandırılmıştır ve yakında kaldırılacaktır. Lütfen bu metrikten yararlanmayın. ---incompatible_no_rule_outputs_param ile devre dışı bırakıldı. Kodunuzun, kaldırılma olasılığı yüksek olan içerikle uyumlu olduğunu doğrulamak için bu işareti kullanın.
Bu parametrenin desteği sonlandırıldı. Kuralları, bunun yerine OutputGroupInfo veya attr.output kullanacak şekilde taşıyın.

Önceden beyan edilmiş çıkışları tanımlayan bir şema. output ve output_list özelliklerinin aksine kullanıcı, bu dosyalar için etiketleri belirtmez. Önceden beyan edilmiş çıkışlar hakkında daha fazla bilgi için Kurallar sayfasını inceleyin.

Bu bağımsız değişkenin değeri bir sözlük ya da sözlük oluşturan bir geri çağırma işlevidir. Geri çağırma, hesaplanan bağımlılık özelliklerine benzer: İşlevin parametre adları, kuralın özellikleriyle eşleştirilir. Örneğin, def _my_func(srcs, deps): ... tanımıyla outputs = _my_func parametresini geçirirseniz işlev, srcs ve deps özelliklerine erişebilir. Sözlük ister doğrudan ister bir işlev aracılığıyla belirtilmiş olsun, şu şekilde yorumlanır.

Sözlükten her giriş, önceden beyan edilmiş bir çıkış oluşturur. Bu çıkışta anahtar bir tanımlayıcıdır, değer ise çıkışın etiketini belirleyen bir dize şablonudur. Kuralın uygulama işlevinde tanımlayıcı, ctx.outputs'te çıkışın File öğesine erişmek için kullanılan alan adı olur. Çıkışın etiketi, kuralla aynı pakete sahiptir ve "%{ATTR}" biçiminin her bir yer tutucusunun, ATTR özelliğinin değerinden oluşturulan bir dizeyle değiştirilmesiyle paketin oluşturulmasından sonraki bölüm:

  • Dize türündeki özellikler aynen değiştirilir.
  • Etiket türünde özellikler, dosya uzantısı çıkarıldıktan sonra etiketin paketten sonraki bölümü haline gelir. Örneğin, "//pkg:a/b.c" etiketi "a/b" olur.
  • Çıkış türünde özellikler, dosya uzantısı da dahil olmak üzere etiketin paketten sonraki parçası haline gelir (yukarıdaki örnekte "a/b.c").
  • Yer tutucularda kullanılan tüm liste türünde özellikler (örneğin, attr.label_list) tam olarak bir öğeye sahip olmalıdır. Satıcının dönüşümü, liste dışı sürümüyle (attr.label) aynı.
  • Diğer özellik türleri yer tutucularda gösterilemez.
  • Özellik olmayan özel yer tutucular %{dirname} ve %{basename}, paketi hariç tutarak kural etiketinin bu kısımlarına genişler. Örneğin, "//pkg:a/b.c" için dirname a, temel ad ise b.c şeklindedir.

Pratikte, en yaygın değiştirme yer tutucusu "%{name}" şeklindedir. Örneğin, "foo" adlı bir hedef için {"bin": "%{name}.exe"} komutu, uygulama işlevinde ctx.outputs.bin olarak erişilebilen foo.exe adlı bir çıkışı önceden bildirir.

executable bool; varsayılan değer: unbound
Bu kuralın yürütülebilir olarak kabul edilip edilmediği, yani bir blaze run komutunun konusu olup olmadığı. Varsayılan olarak False değerine ayarlanır. Daha fazla bilgi için Kurallar sayfasına göz atın.
output_to_genfiles varsayılan değer False
True (doğru) değerine ayarlanırsa dosyalar bin dizini yerine genfiles dizininde oluşturulur. Mevcut kurallarla uyumluluk için gerekli olmadığı sürece (ör. C++ için başlık dosyaları oluştururken) bu işareti ayarlamayın.
fragments sequence of dize; varsayılan değer []
Kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
host_fragments sequence of dize; varsayılan değer []
Kuralın ana makine yapılandırmasında gerektirdiği yapılandırma parçalarının adlarının listesi.
_skylark_testable varsayılan değer False
(Deneysel)

Doğru ise bu kural, işlemlerini bir Actions sağlayıcısı aracılığıyla ona bağımlı kurallar tarafından incelenmek üzere kullanıma sunar. Sağlayıcı, ctx.created_actions() işlevini çağırarak da kuralın kendisi tarafından kullanılabilir.

Bu yalnızca Starlark kurallarının analiz zamanı davranışını test etmek için kullanılmalıdır. Bu işaret ileride kaldırılabilir.
toolchains sequence; varsayılan değer: []
Ayarlanırsa bu kuralın gerektirdiği araç zincirleri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain aracılığıyla kuralın uygulanmasına sağlanır.
incompatible_use_toolchain_transition varsayılan değer False
Kullanımdan kaldırıldı ve artık kullanılmıyor ve kaldırılması gerekiyor.
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları ile çıkarılabilecek kuralın açıklaması.
provides varsayılan değer []
Uygulama işlevinin döndürmesi gereken sağlayıcıların listesi.

Uygulama işlevi, burada listelenen sağlayıcı türlerinden herhangi birini döndürdüğü değerden çıkarırsa bu bir hatadır. Ancak uygulama işlevi, burada listelenmeyen ek sağlayıcıları döndürebilir.

Listenin her öğesi, provider() tarafından döndürülen bir *Info nesnesidir. Ancak eski sağlayıcı, bunun yerine dize adıyla temsil edilir. Kuralın bir hedefi, zorunlu sağlayıcıyı tanımlayan bir hedef için bağımlılık olarak kullanıldığında, bu sağlayıcının burada belirtilmesi gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak, zorunlu olmasa da bunu belirtmek en iyi uygulama olarak kabul edilir. Ancak bir en boy değerinin required_providers alanı için sağlayıcıların burada belirtilmesi gerekir.

exec_compatible_with sequence of dize; varsayılan değer []
Yürütme platformunda bu kural türünün tüm hedefleri için geçerli olan kısıtlamaların listesi.
analysis_test varsayılan değer False
Doğru ise, bu kural bir analiz testi olarak değerlendirilir.

Not: Analysis test kuralları, temel Starlark kitaplıklarında sağlanan altyapı kullanılarak tanımlanır. Yol gösterici bilgiler için Test bölümüne bakın.

Bir kural analiz test kuralı olarak tanımlanırsa, özelliklerinde analysis_test_transition kullanılarak tanımlanan yapılandırma geçişlerinin kullanılmasına izin verilir ancak bazı kısıtlamalar etkinleştirilir:

  • Bu kuralın hedefleri, sahip olabilecek geçişli bağımlılıkların sayısı açısından sınırlıdır.
  • Kural, bir test kuralı olarak kabul edilir (test=True ayarlanmış gibi). Bu, test değerinin yerini alır
  • Kural uygulama işlevi, işlemleri kaydetmeyebilir. Bunun yerine, AnalysisTestResultInfo sağlayarak başarılı/başarısız sonucu kaydetmesi gerekir.
build_setting BuildSetting; veya None; varsayılan değer: None
Ayarlanmışsa bu kuralın ne tür bir build setting olduğunu açıklar. config modülünü inceleyin. Bu ayarlanırsa "build_setting_default" adlı zorunlu bir özellik ayarlanır. değeri, buraya geçirilen değere karşılık gelen bir türle otomatik olarak bu kurala eklenir.
cfg varsayılan değer None
Ayarlanırsa, analizden önce kuralın kendi yapılandırmasına uygulayacağı yapılandırma geçişine işaret eder.
exec_groups dict; veya None; varsayılan değer: None
Yürütme grubu adının (dize) exec_group sn. sayısına. Ayarlanırsa kuralların tek bir hedef içinde birden fazla yürütme platformunda işlem çalıştırmasına izin verir. Daha fazla bilgi için yürütme grupları belgelerine göz atın.
initializer varsayılan değer None
Deneysel: Kuralın özelliklerini başlatan Stalark işlevi.

İşlev, kuralın her örneği için yükleme sırasında çağrılır. Kural tarafından tanımlanan herkese açık özelliklerin değerleriyle (name veya tags gibi genel özelliklerle değil) çağrılır.

Özellik adlarından istenen değerlere bir sözlük döndürmesi gerekir. Döndürülmeyen özellikler etkilenmez. None değerinin değer olarak döndürülmesi, özellik tanımında belirtilen varsayılan değerin kullanılmasıyla sonuçlanır.

Başlatıcılar, özellik tanımında belirtilen varsayılan değerlerden önce değerlendirilir. Sonuç olarak, başlatıcının imzasındaki bir parametre varsayılan değerler içeriyorsa özellik tanımındaki varsayılan değerin üzerine yazılır (None döndürülmesi hariç).

Benzer şekilde, başlatıcının imzasındaki bir parametrenin varsayılan değeri yoksa parametre zorunlu hale gelir. Bu tür durumlarda bir özellik tanımında varsayılan/zorunlu ayarların kullanılmaması önerilir.

İşlenmeyen özellikler için **kwargs kullanmak iyi bir uygulamadır.

Genişletilmiş kurallar söz konusu olduğunda tüm başlatıcılar alt öğeden üst öğeye ilerleme olarak adlandırılır. Her başlatıcıya yalnızca bilgi sahibi olduğu herkese açık özellikler aktarılır.

parent varsayılan değer None
Deneysel: Süresi uzatılan Stalark kuralı. Ayarlandığında, herkese açık özellikler, reklamı yapılan sağlayıcıların yanı sıra birleştirilir. Kural, üst öğeden executable ve test ile eşleşir. fragments, toolchains, exec_compatible_with ve exec_groups değerleri birleştirildi. Eski veya desteği sonlandırılmış parametreler ayarlanamaz. Bu kuralın gelen yapılandırmasından sonra üst kuruluş biriminin gelen yapılandırma geçişi (cfg) uygulandı.
extendable bool; veya Etiket; veya dize; veya None; varsayılan ayar None
Deneysel: Bu kuralın kapsamını genişletebilecek kuralları tanımlayan bir izin verilenler listesi etiketi. Genişletmeye her zaman izin vermek veya izin vermemek için Doğru/Yanlış olarak da ayarlanabilir. Bazel varsayılan olarak uzantılara her zaman izin verir.
subrules Alt Kural'ın sequence'ı; varsayılan değer []
Deneysel: Bu kural tarafından kullanılan alt kuralların listesi.

seç

unknown select(x, no_match_error='')

select(), kural özelliğini yapılandırılabilir hale getiren yardımcı işlevdir. Ayrıntılar için ansiklopedi oluşturma bölümüne bakın.

Parametreler

Parametre Açıklama
x zorunlu
Yapılandırma koşullarını değerlerle eşleyen bir dikte. Her anahtar, config_setting veyarestriction_value örneğini tanımlayan bir Etiket veya etiket dizesidir. Dize yerine bir Etiketin ne zaman kullanılacağı hakkında bilgi edinmek için makrolarla ilgili dokümanlara bakın.
no_match_error varsayılan değer ''
Hiçbir koşul eşleşmezse bildirilecek isteğe bağlı özel hata.

alt kural

Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])

Bir alt kuralın yeni bir örneğini oluşturur. Bu işlevin sonucu, kullanılabilmesi için bir genel değişkende depolanmalıdır.

Parametreler

Parametre Açıklama
implementation function; gerekli
Bu alt kuralı uygulayan Starlark fonksiyonu
attrs dict; varsayılan değer: {}
Alt kuralın tüm (gizli) özelliklerini bildirmek için kullanılan bir sözlük.

Alt kurallar yalnızca etiketle yazılmış (ör. etiket veya etiket listesi) gizli özelliklere sahip olabilir. Bu etiketlere karşılık gelen çözümlenen değerler Bazel tarafından alt kuralın uygulama işlevine otomatik olarak adlandırılmış bağımsız değişkenler olarak aktarılır (böylece, uygulama işlevinin özellik adlarıyla eşleşen adlandırılmış parametreleri kabul etmesi gerekir). Bu değerlerin türü şu şekilde olur:

  • executable=True içeren etiket özellikleri için FilesToRunProvider
  • allow_single_file=True içeren etiket özellikleri için File
  • Diğer tüm etiket özellikleri için Target
  • Tüm etiket listesi özellikleri için [Target]
toolchains sequence; varsayılan değer: []
Ayarlanırsa bu alt kuralın gerektirdiği araç zincirleri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchains aracılığıyla alt kuralın uygulanmasına sağlanır.
fragments sequence of dize; varsayılan değer []
Alt kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
subrules Alt Kural'ın sequence'ı; varsayılan değer []
Bu alt kuralın ihtiyaç duyduğu diğer alt kuralların listesi.

tag_class

tag_class tag_class(attrs={}, *, doc=None)

Modül uzantısı tarafından kullanılabilen veri nesneleri olan bir etiket sınıfı için özellik şemasını tanımlayan yeni bir tag_class nesnesi oluşturur.

Parametreler

Parametre Açıklama
attrs varsayılan değer {}
Bu etiket sınıfının tüm özelliklerini bildiren bir sözlük. Özellik adı, özellik nesnesiyle eşlenir (attr modülüne bakın).
doc string; veya None; varsayılan değer: None
Belge oluşturma araçları tarafından çıkarılabilecek etiket sınıfının açıklaması.

görünürlük

None visibility(value)

Şu anda başlatılmakta olan .bzl modülünün yük görünürlüğünü ayarlar.

Bir modülün yük görünürlüğü, diğer BUILD ve .bzl dosyalarının o modülü yükleyip yükleyemeyeceğini belirler. (Bu, temel .bzl kaynak dosyasının hedef görünürlüğünden farklıdır ve dosyanın başka hedeflerin bağımlılığı olarak görünüp görünmeyeceğini belirler.) Yükleme görünürlüğü, paket düzeyinde çalışır: Bir modülü yüklemek için yüklemeyi yapan dosya, modüle görünürlüğü verilen bir pakette bulunmalıdır. Bir modül, görünürlüğüne bakılmaksızın her zaman kendi paketine yüklenebilir.

visibility(), her .bzl dosyası için yalnızca bir kez ve bir işlevin içinde değil, yalnızca en üst düzeyde çağrılabilir. Tercih edilen stil, bu çağrıyı load() ifadelerinin hemen altına ve bağımsız değişkeni belirlemek için gereken kısa mantığın altına yerleştirmektir.

--check_bzl_visibility işareti yanlış değerine ayarlanırsa yükleme görünürlüğü ihlalleri uyarı verir ancak derlemede başarısız olmaz.

Parametreler

Parametre Açıklama
value zorunlu
Paket spesifikasyonu dizelerinin listesi veya tek bir paket spesifikasyonu dizesi.

Negatif paket özelliklerine izin verilmemesi dışında paket spesifikasyonları package_group ile aynı biçime sahiptir. Diğer bir deyişle, bir spesifikasyon şu biçimlerde olabilir:

  • "//foo": //foo paketi
  • "//foo/...": //foo paketi ve tüm alt paketleri.
  • "public" veya "private": sırasıyla tüm paketler veya paket yok

"@" söz dizimine izin verilmez; tüm spesifikasyonlar mevcut modülün deposuna göre yorumlanır.

value bir dize listesiyse bu modüle görünürlüğü verilen paket grubu, her bir spesifikasyon tarafından temsil edilen paketlerin birleşimidir. (Boş liste, private ile aynı etkiye sahiptir.) value tek bir dizeyse bu tekli liste [value] gibi değerlendirilir.

--incompatible_package_group_has_public_syntax ve --incompatible_fix_package_group_reporoot_syntax işaretlerinin bu bağımsız değişken üzerinde herhangi bir etkisinin olmadığını unutmayın. "public" ve "private" değerleri her zaman kullanılabilir ve "//..." her zaman "mevcut depodaki tüm paketler" olarak yorumlanır.