.bzl dosyaları

Sorun bildir Nightly · 7.4 . 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 (ör. bağımlılık ağaçları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, öncelikle Analysis Test Framework temel kitaplığını kolaylaştırmak için tasarlanmıştır. En iyi uygulamalar için ilgili dokümanları (veya uygulamayı) inceleyin.

Parametreler

Parametre Açıklama
settings dict; 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 tüm 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=[], toolchains_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 boyut oluşturur. 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 function; required
Bu yönü uygulayan ve tam olarak iki parametre içeren bir Starlark işlevi: Hedef (yönün uygulandığı hedef) ve ctx (hedefin oluşturulduğu kural bağlamı). Hedefin özellikleri ctx.rule alanı üzerinden kullanılabilir. Bu işlev, analiz aşamasında bir özelliğin hedefe her uygulanması için değerlendirilir.
attr_aspects Dize dizisi; varsayılan değer []
Özellik adlarının listesi. Yön, bu adlara sahip bir hedefin özelliklerinde belirtilen bağımlılıklara göre 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.
toolchains_aspects sequence; varsayılan değer []
Araç zinciri türlerinin listesi. Özellik, bu araç zinciri türleriyle eşleşen hedef araç zincirlerine yayılır.
attrs dict; varsayılan değer {}
Boyutun tüm özelliklerini açıklayan bir sözlük. Bir özellik adından attr.label veya attr.string gibi bir özellik nesnesine eşleme yapar (bkz. attr modülü). Yön özellik değerleri, uygulama işlevi tarafından ctx parametresinin alanları olarak kullanılabilir.

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

Açıkça atıf yapılan özellikler string türüne sahip olmalı ve values kısıtlamasını kullanmalıdır. Belirli özellikler, görünümün yalnızca kısıtlamaya göre aynı ada, türe ve geçerli değerlere sahip özellikler içeren kurallarla kullanılmasını kısıtlar.

Tanımlanan özellikler None değerini varsayılan değere dönüştürür.

required_providers sequence; varsayılan değer []
Bu özellik, yönün yayılmasını yalnızca kuralları gerekli sağlayıcılarını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 (ikisini birden değil) bir liste olmalıdır. Örneğin, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] geçerli bir değerken [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]]'e 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 değeri [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] ise bu özellik, some_rule hedeflerini yalnızca some_rule FooInfo, veya BarInfo, veya hem BazInfo ve QuxInfo sağladığında görebilir.

required_aspect_providers sequence; 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 (ikisini birden değil) bir liste olmalıdır. Örneğin, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] geçerli bir değerken [FooInfo, BarInfo, [BazInfo, QuxInfo]] geçerli değildir.

İç içe yerleştirilmemiş bir sağlayıcı listesi, otomatik olarak tek bir sağlayıcı listesi içeren bir listeye dönüştürülür. Yani [FooInfo, BarInfo], otomatik olarak [[FooInfo, BarInfo]]'e 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 sequence; 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 yön required_providers alanının burada sağlayıcıların belirtilmesini gerektirir.

requires Aspect'lerin sequence (dizi) varsayılan değer []
Bu özellikten önce uygulanması gereken özelliklerin listesi.
fragments Dize dizisi; varsayılan değer []
Yönelinmenin hedef yapılandırmada gerektirdiği yapılandırma parçalarının adları.
host_fragments Dize dizisi; varsayılan değer []
Yönelinmenin ana makine yapılandırmasında gerektirdiği yapılandırma parçalarının adları listesi.
toolchains sequence; varsayılan değer []
Ayarlanırsa bu özelliğin gerektirdiği araç zinciri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain üzerinden özelliğin uygulanmasına olanak tanır.
incompatible_use_toolchain_transition bool; varsayılan değer False
Desteği sonlandırıldı, 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 bool; 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 bir 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 yanlıştır.

exec_compatible_with Dize dizisi; varsayılan değer []
Yürütme platformundaki, 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_groups olarak dize dizini. 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'ları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. Değerin belirlenmesinden önce yapılandırmanın oluşturulmasını gerektiren değerler "geç bağlanma" özelliğine sahiptir. Bunu değer olarak kullanan tüm özellikler gizli olmalıdır.

Örnek kullanım:

Kural özelliğini tanımlama:

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

Kural uygulamada erişme:

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

Parametreler

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

depset

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 parametresi tarafından belirtilir. Daha fazla bilgi için Depset'lere genel bakış başlıklı makaleyi inceleyin.

Bir depsetteki tüm öğeler (doğrudan ve dolaylı), type(x) ifadesiyle elde edilen 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 oluşturma işlemine tabi olmalıdır. Ancak bu değişken, şu anda tüm kurucularda tutarlı bir şekilde kontrol edilmemektedir. Tutarlı kontrol 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 değiştirilemez olmalıdır ancak bu kısıtlama gelecekte gevşetilecektir.

Oluşturulan depo grubunun sırası, transitive depo gruplarının sırasıyla uyumlu olmalıdır. "default" siparişi diğer tüm siparişlerle uyumludur. Diğer tüm siparişler yalnızca kendileriyle uyumludur.

Parametreler

Parametre Açıklama
direct sequence; veya None; varsayılan değer: None
Bir kümenin doğrudan öğelerinin listesi.
order dize; varsayılan değer "default"
Yeni depset için tarama 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ç zinciri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesneleri içerebilir.
exec_compatible_with Dize dizisi; varsayılan değer []
Yürütme platformundaki kısıtlamaların listesi.

exec_transition

transition exec_transition(implementation, inputs, outputs)

Yönetici geçişini tanımlamak için kullanılan özel bir transition() sürümü. En iyi uygulamalar için dokümanlarına (veya uygulanmasına) bakın. Yalnızca Bazel yerleşiklerinden kullanılabilir.

Parametreler

Parametre Açıklama
implementation callable; zorunlu
inputs dize dizisi; zorunlu
outputs dize dizisi; zorunlu

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 use_extension ile MODULE.bazel dosyasında kullanılabilmesi için global bir değerde depolayın.

Parametreler

Parametre Açıklama
implementation callable; zorunlu
Bu modül uzantısını uygulayan işlev. Tek bir parametre olmalıdır: module_ctx. Mevcut depoların kümesini belirlemek için işlev, derlemenin başında bir kez çağrılır.
tag_classes dict; 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 Dize dizisi; varsayılan değer []
Bu modül uzantısının bağlı olduğu ortam değişkenlerinin listesini sağlar. Bu listedeki bir ortam değişkeni değişirse uzantı yeniden değerlendirilir.
os_dependent bool; varsayılan değer False
Bu uzantının işletim sistemine bağlı olup olmadığını belirtir
arch_dependent bool; 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. Bu işlevin sonucu, bir kural veya özellik uygulamasında kullanılabilmesi için genel bir değerde depolanmalıdır. Sağlayıcılar, elde edilen değer işlev olarak çağrılarak örneklendirilebilir veya bir hedeften ilgili sağlayıcının bir örneğini almak için doğrudan dizin 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şlatılması) bölümüne ve aşağıdaki init parametresi tartışmasına bakı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 Dize dizisi; veya dizin; veya 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'])

  • dictionary field name -> documentation:
    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
Oluşturma 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 işlevi. init belirtilirse provider(), 2 öğeden oluşan bir öğe döndürür: normal sağlayıcı sembolü ve ham oluşturucu.

Aşağıda bu konu hakkında ayrıntılı bir açıklama verilmiştir. 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, P örneği, aşağıdakileri yapan varsayılan bir oluşturucu işlevi c(*args, **kwargs) çağrılarak oluşturulur:

  • args boş değilse bir hata oluşur.
  • provider() çağrılırken fields parametresi belirtildiyse 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.
init geri çağırma işlevi verilmediği takdirde, P simgesine yapılan çağrı, varsayılan yapıcı işlevi c'e yapılan çağrı gibi davranı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'un m.foo == 1 içeren bir MyInfo örneği olmasını sağlar.

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 öğesine iletilen konum ve anahtar kelime bağımsız değişkenleriyle tamamen aynı şekilde çağrılır.
  2. init işlevinin döndürdüğü değerin, anahtarları alan adı dizeleri olan bir sözlük (d) olması beklenir. Aksi takdirde 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()'un döndürdüğü değer bir tuple (P, r) olur. Burada r, ham kurucu olur. Aslında r'ün davranışı, yukarıda açıklanan varsayılan kurucu işlevi c ile tamamen 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. module_extension() uygulama işlevinden yüklenip çağrılabilmesi veya use_repo_rule() tarafından kullanılabilmesi için genel bir değerde depolayın.

Parametreler

Parametre Açıklama
implementation callable; required
Bu kuralı uygulayan işlev. Tek bir parametre (repository_ctx) içermelidir. İş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
Depolama alanı kuralının tüm özelliklerini bildiren bir sözlük. Bir özellik adından özellik nesnesine eşleme yapar (attr modülüne bakın). _ ile başlayan özellikler gizlidir ve bir dosyaya etikete yönelik gizli bir 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.

Tanımlanan özellikler None değerini varsayılan değere dönüştürür.

local bool; varsayılan değer False
Bu kuralın her şeyi yerel sistemden getirdiğini ve her getirme işleminde yeniden değerlendirilmesi gerektiğini belirtir.
environ Dize dizisi; varsayılan değer []
Desteği sonlandırıldı. Bu parametrenin desteği sonlandırılmıştır. Bunun yerine repository_ctx.getenv'e taşıyın.
Bu depo kuralının bağlı olduğu ortam değişkenlerinin listesini sağlar. Bu listedeki bir ortam değişkeni değişirse depo yeniden getirilir.
configure bool; varsayılan değer False
Deponun, yapılandırma amacıyla sistemi incelediğini belirtir
remotable bool; varsayılan değer: False
Deneysel. Bu parametre deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu yönteme güvenmeyin. --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=[], dependency_resolution_rule=False, 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 bu son ek bulunmamalıdır. (Bu kısıtlama yalnızca kurallar için geçerli olup hedeflerinin kapsamına girmez.)

Parametreler

Parametre Açıklama
implementation function; 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. Bildirilen tüm çıkışları oluşturmak için işlemler oluşturmalıdır.
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 olarak kabul edilir. Test kuralları için executable = True değerini açıkça ayarlamak 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 {}
Kuralın tüm özelliklerini bildirmek için kullanılan bir sözlük. Bir özellik adından özellik nesnesine eşleme yapar (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. Bellek kullanımını sınırlamak için tanımlanabilecek özellik sayısına bir sınır uygulanır.

Tanımlanmış özellikler, None değerini varsayılan değere dönüştürür.

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 yönteme güvenmeyin. --incompatible_no_rule_outputs_param ile devre dışı bırakıldı. Kodunuzun yakında kaldırılacak olan işlevlerle uyumlu olup olmadığını 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 edilen çıkışları tanımlamak için kullanılan bir şema. output ve output_list özelliklerinden farklı olarak, kullanıcı bu dosyaların etiketlerini 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 veya 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 doğrudan veya bir işlev aracılığıyla belirtilmiş olsun, aşağıdaki ş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 olduğu gibi değiştirilir.
  • Etiket türündeki özellikler, paketten sonra dosya uzantısı çıkarılarak etiketin bir parçası olur. Ö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 özelliklerin (örneğin, attr.label_list) tam olarak bir öğeye sahip olması gerekir. Dönüşümleri, liste dışı sürümleriyle (attr.label) aynıdır.
  • 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" dosyasında dirname a, basename ise b.c olur.

Uygulamada en yaygın yer tutucu "%{name}"'tür. Ö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 olamayacağını belirtir. Varsayılan olarak False değerine ayarlanır. Daha fazla bilgi için Kurallar sayfasına bakın.
output_to_genfiles bool; 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 ihtiyacınız olmadığı sürece (ör. C++ için başlık dosyaları oluştururken) bu işareti ayarlamayınız.
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 Dize dizisi; varsayılan değer []
Kuralın ana makine yapılandırmasında gerektirdiği yapılandırma parçalarının adları.
_skylark_testable bool; varsayılan değer: False
(Deneysel)

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

Bu, yalnızca Starlark kurallarının analiz sırasındaki davranışını test etmek için kullanılmalıdır. Bu işaret gelecekte 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 bool; varsayılan değer False
Desteği sonlandırıldı, artık kullanılmıyor ve kaldırılması gerekiyor.
doc dize veya None; varsayılan değer None
Belge oluşturma araçları tarafından ayıklanabilen kural açıklaması.
provides sequence; 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önüş değerinden çıkarırsa hata oluşur. 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 yön required_providers alanının burada sağlayıcıların belirtilmesini gerektirir.

dependency_resolution_rule bool; varsayılan değer False
Ayarlanırsa kural, materyalize ediciler tarafından kullanılabilir olarak da işaretlenen özellikler aracılığıyla bağımlılık olabilir. Bu işaret kümesine sahip kuralların her özelliği, materyalleştiricilerde de kullanılabilir olarak işaretlenmelidir. Burada amaç, bu şekilde işaretlenen kuralların, özel olarak işaretlenmemiş kurallara dayalı olmamasıdır.
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 bool; 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. Yardım için Test bölümüne bakın.

Bir kural analiz testi 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, 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 sonuç kaydetmesi gerekir.
build_setting BuildSetting veya None; varsayılan değer None
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, burada iletilen değere karşılık gelen bir türde "build_setting_default" adlı zorunlu bir özellik otomatik olarak eklenir.
cfg varsayılan değer None
Ayarlanırsa kuralın analizden önce kendi yapılandırmasına uygulayacağı yapılandırma geçişini gösterir.
exec_groups dict veya None; varsayılan değer None
Yürütme grubu adının (dize) exec_groups olarak dize dizini. Ayarlanırsa kuralların tek bir hedef içinde birden fazla yürütme platformunda işlemler yapmasını sağlar. Daha fazla bilgi için yürütme grupları belgelerine bakı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. name ve kural tarafından tanımlanan herkese açık özelliklerin değerleriyle çağrılır (tags gibi genel özelliklerle değil).

Özellik adlarından istenen değerlere giden bir sözlük döndürmelidir. Döndürülmeyen özellikler bu durumdan etkilenmez. Değer olarak None döndürülmesi, özellik tanımında belirtilen varsayılan değerin kullanılmasına neden olur.

Başlatıcılar, bir ö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 gibi durumlarda, özellik tanımında varsayılan/zorunlu ayarları çıkarmak iyi bir uygulamadır.

İş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 öğelere doğru çağrılır. Her başlatıcıya yalnızca bildiği herkese açık özellikler iletilir.

parent Varsayılan değer None
Deneme: 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ştirilir. Eski veya kullanımdan kaldı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 string; veya None; varsayılan değer None
Deneysel: Bu kuralı hangi kuralların genişletebileceğini tanımlayan 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'ları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 derleme ansiklopedisine bakın.

Parametreler

Parametre Açıklama
x dict; gerekli
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 Etiket ne zaman kullanılacağını öğrenmek için makrolarla ilgili dokümanlara bakın.
no_match_error string; 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=[])

Alt kuralın yeni bir örneğini oluşturur. Bu işlevin sonucu, kullanılabilmesi için genel bir 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ürleri şunlardır:

  • 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ç zinciri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesneleri içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchains aracılığıyla alt kuralın uygulanmasına sağlanır.
fragments Dize dizisi; varsayılan değer []
Alt kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adları.
subrules Alt Kural'ları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 dict; varsayılan değer {}
Bu etiket sınıfının tüm özelliklerini bildirmek için kullanılan bir sözlük. Bir özellik adından özellik nesnesine eşleme yapar ( attr modülüne bakın).

rule(), aspect() ve repository_rule()'ın aksine, bildirilen özellikler None değerini varsayılan değere dönüştürmez. Özelliğin varsayılan olarak kullanılabilmesi için çağrı yapan kullanıcı tarafından tamamen atlanması gerekir.

doc dize veya None; varsayılan değer None
Belge oluşturma araçları tarafından ayıklanabilen 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ün yüklenmesi için yüklemeyi yapan dosyanın, modüle görünürlük izni verilmiş bir pakette bulunması gerekir. Bir modül, görünürlüğünden bağımsız olarak her zaman kendi paketinde yüklenebilir.

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

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

Parametreler

Parametre Açıklama
value required
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. Yani 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 hiçbir paket

"@" 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.