.bzl dosyaları

Sorun bildirin

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 gerekli
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 gerekli
Tam olarak iki parametre ile bu özelliği uygulayan bir Starlark işlevi: Target (entenin 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 dizelerin sequence'ı; varsayılan []
Özellik adlarının listesidir. 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 olarak [] şeklindedir
Bu özellik, özelliğin yayılmasını, yalnızca kuralları zorunlu sağlayıcıların reklamını yapan hedeflerle sınırlandırması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 ya da BazInfo ve QuxInfo sağlandığı takdirde some_rule hedeflerini görebilir.

required_aspect_providers Varsayılan değer [] şeklindedir
Bu özellik, bu özelliğin 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'in sequence'ı; varsayılan olarak [] şeklindedir
Bu özellikten önce uygulanması gereken özelliklerin listesi.
fragments dizi / dizes; varsayılan []
hedef yapılandırmada yönün gerektirdiği yapılandırma parçalarının adlarının listesi.
host_fragments dize'nin sequence'ı; varsayılan []
Ö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 olarak [] şeklindedir
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 False şeklindedir
Bu özellik artık kullanılmamaktadır ve kaldırılmalıdır.
doc string; veya None; varsayılan değer None
Belge oluşturma araçları tarafından çıkarılabilecek özelliğin açıklaması.
apply_to_generating_rules varsayılan değer False şeklindedir
True (doğru) ise en boy değeri, çı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 varsayalım. Burada "beta_çıkış", bir hedef "beta"nın bildirilen çıkışıdır. "beta"nın, "deps" en boy özelliğinden biri olarak "beta" alfa" en boy değerini uygular ve ardından "alfa", "deps" en-boyunu "doğru_" en boy biçiminde uygulayacaktır. Böylece "alfa"nın "deps = [":beta_çıkış"]" olduğunu varsayalım.

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

exec_compatible_with dizelerin sequence'ı; varsayılan []
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 olarak None şeklindedir
Yürütme grubu adının (dize) adı exec_groups olarak ayarlanır. 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 sequence; varsayılan olarak []
Deneysel: Bu özelliğin kullandığı 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, değeri belirlemeden önce yapılandırmanın oluşturulması gerekiyorsa "geç sınır"dır. 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 gerekli
Geç sınır değerini içeren bir yapılandırma parçasının adı.
name gerekli
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 --inuyumlu_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 olarak None değeridir
Depset'in doğrudan öğelerinin listesi.
order varsayılan değer "default"
Yeni görünüm için geçiş stratejisidir. Olası değerler için buraya bakın.
transitive depset'lerin sequence; veya None; varsayılan değer None
Öğeleri, uygulamanın dolaylı öğeleri olacak depsetlerin 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 olarak [] şeklindedir
Bu yürütme grubunun gerektirdiği araç zincirleri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir.
exec_compatible_with dizelerin sequence'ı; varsayılan []
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 gerekli
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 {}'tir
Uzantının kullandığı 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 olarak None şeklindedir
Belge oluşturma araçları tarafından çıkarılabilecek modül uzantısının bir 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 False şeklindedir
Bu uzantının işletim sistemine bağlı olup olmadığını belirtir
arch_dependent varsayılan False şeklindedir
Bu uzantının mimariye bağlı olup olmadığını belirtir

provider

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 rehber 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 olarak None şeklindedir
Belge oluşturma araçları tarafından ayıklanabilecek, sağlayıcının açıklaması.
fields dizelerin sequence; veya dict; None; varsayılan değer None
Belirtilirse izin verilen alan 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 None şeklindedir
Ö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.

Ayrıntılı açıklamanın ardından, sezgisel bir tartışma ve kullanım alanları için Kurallar (Sağlayıcıların özel başlatılması) bölümüne göz atın.

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şlevine (c) yapılan 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 öğesini 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. Yeni bir P örneği, 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 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. r, genellikle 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 gerekli
bu kuralı uygulayan işlevin gerçekleştirilmesi gerekir. 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 olarak, kuralın tüm özelliklerini bildirmek için None
sözlüktür. Ö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'dir
Bu kuralın yerel sistemdeki her şeyi aldığını ve her getirmede yeniden değerlendirilmesi gerektiğini belirtin.
environ dizelerin sequence'ı; varsayılan []
Kullanımdan kaldırıldı. Bu parametre kullanımdan kaldırıldı. Bunun yerine repository_ctx.getenv ürününe geçiş yapın.
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 belirtin
remotable varsayılan ayar False
Deneysel'dir. 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ı tarafından çı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 gerekli
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; kuralın tüm özelliklerini bildirmek için varsayılan olarak {}
sözlük kullanılır. Ö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 ya 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 edilmeyeceğini, yani bir blaze run komutunun konusu olup olmadığını belirtir. 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 olarak False şeklindedir
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 sıra / dizes; varsayılan []
Kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
host_fragments sıra/dizes; varsayılan []
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ğerdir: False
(Deneysel)

Doğru değerine ayarlanırsa bu kural, işlemlerini 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 olarak [] şeklindedir
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 False şeklindedir
Bu özellik artık kullanılmamaktadır ve kaldırılmalıdır.
doc string; veya None; varsayılan değer None
Belge oluşturma araçları tarafından çı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 dizelerin sequence'ı; varsayılan []
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ğeri False şeklindedir
True (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 olarak None olur
Ayarlanırsa, bu kuralın ne tür bir build setting olduğunu açıklar. config modülüne bakın. Bu ayarlanırsa bu kurala, "build_setting_default" adında bir zorunlu özellik, buraya geçirilen değere karşılık gelen bir türle otomatik olarak eklenir.
cfg varsayılan değer None şeklindedir
Ayarlanırsa kuralın analizden önce kendi yapılandırmasına uygulayacağı yapılandırma geçişine işaret eder.
exec_groups dict; veya None; varsayılan olarak None şeklindedir
Yürütme grubu adının (dize) adı exec_groups olarak ayarlanır. 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 ayar None şeklindedir
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. name ve kural tarafından tanımlanan herkese açık özelliklerin değerleriyle (ör. 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 ayar None şeklindedir
Deneysel: Uzatılmış 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 Label; veya dize; veya None; varsayılan olarak None
Deneysel: Bu kuralı hangi kuralların uzatabileceğini 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 gerekli
Yapılandırma koşullarını değerlerle eşleyen bir diktedir. 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 raporlanacak 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; required
Bu alt kuralı uygulayan Starlark işlevi
attrs dict; varsayılan olarak {} şeklindedir
Alt kuralın tüm (private) ö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 olarak [] şeklindedir
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 sıra / dizes; varsayılan []
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: []
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 {}'tir.
Bu etiket sınıfının tüm özelliklerini bildiren bir sözlüktür. Ö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ı 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 gerekli
Paket spesifikasyonu dizelerinin listesi veya tek bir paket spesifikasyonu dizesi.

Negatif paket teknik ö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 verilmiyor. Tüm özellikler mevcut modülün deposuna göre yorumlanır.

value bir dize listesiyse bu modüle görünürlüğü verilen paket grubu, her 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.