.bzl dosyaları

Sorun bildir Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Tüm .bzl dosyalarında kullanılabilen genel 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 içeren kuralların özelliklerine uygulanabilir. Bu tür kuralların özellikleri kısıtlıdır (örneğin, 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, geçiş sonrası yeni değerleridir. Diğer tüm ayarlar değişmez. Bir analiz testinin geçmesi için ayarlanması gereken belirli yapılandırma ayarlarını belirtmek amacıyla 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 bir genel değerde depolanmalıdır. Daha fazla bilgi için lütfen yönlere giriş başlıklı makaleyi inceleyin.

Parametreler

Parametre Açıklama
implementation function; required
Bu yönü uygulayan, 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 deps ve exports'dur. Liste, bir hedefin tüm bağımlılıkları boyunca dağıtılacak tek bir dize "*" de içerebilir.
toolchains_aspects sequence; varsayılan değer []
Araç zinciri türlerinin listesi. Yön, 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 gizli özellikler varsayılan değerlere ve label veya label_list türüne sahip olmalıdır.

Açık atıf özellikleri 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ımlanmış ö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, tekil sağlayıcılar veya sağlayıcı listeleri içeren bir liste olmalıdır ancak ikisini birden içermemelidir. Ö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.

Bazı kuralların (ör. some_rule) hedeflerinin bir görünüme görünür olması için some_rule'ün, gerekli sağlayıcı listelerinden en az birindeki tüm sağlayıcıların reklamını yapması gerekir. Ö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, bu yönün diğer yönleri incelemesine olanak tanır. Değer, tekil sağlayıcılar veya sağlayıcı listeleri içeren bir liste olmalıdır ancak ikisini birden içermemelidir. Ö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.

Başka bir yönü (ör. other_aspect) bu yönü tarafından görünür hale getirmek için other_aspect, listelerden en az birindeki tüm sağlayıcıları sağlamalıdır. [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] örneğinde bu özellik, other_aspect yalnızca FooInfo, veya BarInfo, veya hem BazInfo hem de QuxInfo sağladığında other_aspect'i 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ö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 nesnesi olmasına rağmen eski bir sağlayıcı, dize adıyla temsil edilir.Kuralın bir hedefi, zorunlu bir sağlayıcıyı açıklayan bir hedefin bağımlılığı olarak kullanıldığında bu sağlayıcıyı burada belirtmeniz gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak zorunlu olmasa da bunu belirtmek en iyi uygulama olarak kabul edilir. Ancak bir yönün required_providers alanında, sağlayıcıların burada belirtilmesi gerekir.

requires Aspect sıralı; varsayılan değer []
Bu özellikten önce dağıtılması 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ı.
toolchains sequence; varsayılan değer []
Ayarlanırsa bu özelliğin gerektirdiği araç zinciri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesneleri içerebilir. Araçlar zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain aracılığıyla görünüm uygulaması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 yönün açıklaması.
apply_to_generating_rules bool; varsayılan değer False
Doğru ise bir çıkış dosyasına uygulanan yön, çıkış dosyasının oluşturma kuralına uygulanır.

Örneğin, bir özelliğin "deps" özelliği aracılığıyla aktarmalı olarak yayıldığını ve "alpha" hedefine uygulandığını varsayalım. "alpha"nın "deps = [':beta_output']" değerine sahip olduğunu varsayalım. Burada "beta_output", bir "beta" hedefinin tanımlanmış bir çıkışıdır. "beta"nın "deps" özelliklerinden biri olarak "charlie" hedefinin olduğunu varsayalım. Özellik için "apply_to_generating_rules=True" ise özellik "alpha", "beta" ve "charlie" aracılığıyla yayılır. Yanlış ise özellik yalnızca "alpha"ya yayı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 yönlerin tek bir örnek içinde birden fazla yürütme platformunda işlemler çalıştırmasına olanak tanır. Daha fazla bilgi için yürütme grupları belgelerine bakın.
subrules Alt kural dizini; varsayılan değer []
Deneysel: Bu yön tarafından kullanılan alt kuralların listesi.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Etiket türündeki bir özellik için geç bağlanmış varsayılan değeri referans alır. Bir değer, değeri belirlemeden önce yapılandırmanın oluşturulmasını gerektiriyorsa "geç bağlanma" özelliğine sahiptir. Bu değeri kullanan tüm özellikler özel olmalıdır.

Örnek kullanım:

Kural özelliğini tanımlama:

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

Kural uygulama sırasında erişim:

  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)

Bir depset oluşturur. direct parametresi, bağımlılık grubunun doğrudan öğelerinin bir listesi, transitive parametresi ise öğeleri oluşturulan bağımlılık grubunun dolaylı öğeleri haline gelen bağımlılık gruplarının bir 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 oluşturmaya dayalı bir küme kullanıldığından, bir depset'in tüm öğeleri karma oluşturmaya uygun olmalıdır. Ancak bu değişmez özellik şu anda tüm kurucularda tutarlı bir şekilde kontrol edilmemektedir. Tutarlı kontrolü etkinleştirmek için --incompatible_always_check_depset_elements işaretini kullanın. Bu, gelecekteki sürümlerde varsayılan davranış olacaktır. Sayı 10313 sorununa 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 depsetin 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 Depset dizisi veya None; varsayılan değer None
Öğeleri, depsetin dolaylı öğeleri olacak depsetlerin listesi.

exec_group

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

Kural uygulama sırasında belirli bir yürütme platformu için işlem oluşturmak üzere 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ürütme geçişini tanımlamak için kullanılan transition() öğesinin özelleştirilmiş bir sürümü. En iyi uygulamalar için ilgili dokümanları (veya uygulamayı) inceleyin. Yalnızca Bazel'in yerleşik işlevlerinden kullanılabilir.

Parametreler

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

makro

macro macro(implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)

Hedefleri (muhtemelen birden fazla) tanımlamak için BUILD dosyalarında veya makrolarında (eski veya sembolik) çağrılabilecek sembolik bir makro tanımlar.

macro(...) tarafından döndürülen değer, .bzl dosyasında bir genel değişkene atanmalıdır. Genel değişkenin adı, makro sembolünün adıdır.

Sembolik makroların nasıl kullanılacağıyla ilgili kapsamlı bir kılavuz için Makrolar başlıklı makaleyi inceleyin.

Parametreler

Parametre Açıklama
implementation function; required
Bu makroyu uygulayan Starlark işlevi. Makro özelliklerinin değerleri, uygulama işlevine anahtar kelime bağımsız değişkenleri olarak iletilir. Uygulama işlevi en az iki adlandırılmış parametreye (name ve visibility) sahip olmalıdır. Makro, özellikleri devralıyorsa (aşağıdaki inherit_attrs bölümüne bakın) **kwargs artık anahtar kelime parametresine sahip olmalıdır.

Kural olarak, uygulama işlevinde makronun "ana" olmayan hedeflere incelemesi, değiştirmesi veya iletmesi gereken tüm özellikler için adlandırılmış bir parametre bulunmalıdır. "Ana" hedefe değiştirilmeden iletilecek "toplu" devralınan özellikler ise **kwargs olarak iletilir.

Uygulama işlevi bir değer döndürmemelidir. Bunun yerine uygulama işlevi, kural veya makro simgelerini çağırarak hedefleri tanımlar.

Bir sembolik makro tarafından tanımlanan herhangi bir hedefin veya iç sembolik makronun adı (makronun uygulama işlevinin geçişli olarak çağırdığı herhangi bir Starlark işlevi dahil), name'e eşit olmalı (buna "ana" hedef denir) veya name ile başlamalı, ardından bir ayırıcı karakter ("_", "-" veya ".") ve bir dize son eki gelmelidir. (Bu adlandırma şemasını ihlal eden hedeflerin tanımlanmasına izin verilir ancak bu hedefler oluşturulamaz, yapılandırılamaz veya bunlara bağımlı olunamaz.)

Varsayılan olarak, sembolik bir makro tarafından tanımlanan hedefler (makronun uygulama işlevinin geçişli olarak çağırdığı tüm Starlark işlevleri dahil) yalnızca makroyu tanımlayan .bzl dosyasını içeren pakette görünür. Hedefleri harici olarak görünür olarak beyan etmek için (sembolik makroyu çağıran dahil), uygulama işlevi visibility'yi uygun şekilde ayarlamalıdır. Bu genellikle, visibility = visibility çağrılan kurala veya makro sembolüne iletilerek yapılır.

Aşağıdaki API'ler, makro uygulama işlevinde ve bu işlevin aktarmalı olarak çağırdığı Starlark işlevlerinde kullanılamaz:

attrs dict; varsayılan değer {}
Bu makronun desteklediği özelliklerin sözlüğüdür (rule.attrs ile benzer). Anahtarlar özellik adları, değerler ise attr.label_list(...) gibi özellik nesneleri (attr modülüne bakın) veya None'tır. None girişi, makronun inherit_attrs aracılığıyla devralabileceği halde bu ada sahip bir özelliğinin olmadığı anlamına gelir (aşağıya bakın).

Özel name özelliği önceden bildirilir ve sözlüğe dahil edilmemelidir. visibility özellik adı ayrılmıştır ve sözlüğe dahil edilmemelidir.

Adları _ ile başlayan özellikler özeldir ve kuralın çağrı sitesinde iletilemez. Bu tür özelliklere, etikete gizli bir bağımlılık oluşturmak için varsayılan bir değer (attr.label(default="//pkg:foo")'te olduğu gibi) atanabilir.

Bellek kullanımını sınırlamak için tanımlanabilecek özellik sayısına bir sınır uygulanır.

inherit_attrs rule; veya macro; veya string; veya None; varsayılan değer None
Deneysel. Bu parametre deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu yönteme güvenmeyin. --experimental_enable_macro_inherit_attrs
Makronun özelliklerini devralacağı bir kural sembolü, makro sembolü veya yerleşik bir ortak özellik listesinin adı (aşağıya bakın) ayarlanarak deneysel olarak etkinleştirilebilir.

inherit_attrs, "common" dizesine ayarlanırsa makro, tüm Starlark kuralları tarafından kullanılan ortak kural özelliği tanımlarını devralır.

rule() veya macro() işlevinin döndürdüğü değer bir .bzl dosyasında global bir değişkene atanmamışsa bu tür bir değerin kural veya makro sembolü olarak kaydedilmediğini ve bu nedenle inherit_attrs için kullanılamayacağını unutmayın.

Miras mekanizması şu şekilde çalışır:

  1. Özel name ve visibility özellikleri hiçbir zaman devralınmaz;
  2. Gizli özellikler (adları "_" ile başlayanlar) hiçbir zaman devralınmaz;
  3. Adları attrs sözlüğünde tanımlanmış özellikler hiçbir zaman devralınmaz (attrs'teki giriş önceliklidir; makroda bu ada sahip bir özelliğin tanımlanmamasını sağlamak için bir girişin None olarak ayarlanabileceğini unutmayın);
  4. Diğer tüm özellikler kuraldan veya makrodan devralınır ve attrs sözlüğüne etkili bir şekilde birleştirilir.

Zorunlu olmayan bir özellik devralındığında, özelliğin varsayılan değeri, orijinal kuralda veya makroda ne belirtilmiş olursa olsun None olarak geçersiz kılınır. Bu, makro özelliğin değerini sarmalanmış kuralın veya makronun bir örneğine ilettiğinde (ör. değiştirilmemiş **kwargs ileterek) dış makronun çağrısında bulunmayan bir değerin iç kuralın veya makronun çağrısında da bulunmamasını sağlar (None'un bir özelliğe iletilmesi, özelliğin atlanması ile aynı şekilde değerlendirilir). Bir özelliğin atlanması, görünen varsayılan değerinin iletilmesinden farklı bir anlam taşıdığından bu durum önemlidir. Özellikle, atlanan özellikler bazı bazel query çıkış biçimlerinde gösterilmez ve hesaplanan varsayılanlar yalnızca değer atlandığında yürütülür. Makro'nun, devralınan bir özelliği incelemesi veya değiştirmesi gerekiyorsa (ör. devralınan bir tags özelliğine değer eklemek için) makronun uygulama işlevinde None durumunu ele almanız gerekir.

Örneğin, aşağıdaki makro, cxxopts (özellik listesinden kaldırılır) ve copts (yeni bir tanım verilir) hariç olmak üzere native.cc_library'teki tüm özellikleri devralır. Ayrıca, ek bir etiket eklemeden önce devralınan tags özelliğinin varsayılan None değerini kontrol eder.

def _my_cc_library_impl(name, visibility, tags, **kwargs):
    # Append a tag; tags attr was inherited from native.cc_library, and
    # therefore is None unless explicitly set by the caller of my_cc_library()
    my_tags = (tags or []) + ["my_custom_tag"]
    native.cc_library(
        name = name,
        visibility = visibility,
        tags = my_tags,
        **kwargs
    )

my_cc_library = macro(
    implementation = _my_cc_library_impl,
    inherit_attrs = native.cc_library,
    attrs = {
        "cxxopts": None,
        "copts": attr.string_list(default = ["-D_FOO"]),
    },
)

inherit_attrs ayarlanmışsa makronun uygulama işlevinde **kwargs artık anahtar kelime parametresi olmalıdır.

Kural olarak, bir makro, devralınan ve geçersiz kılınmayan özellikleri, makronun sarmaladığı "ana" kurala veya makro simgesine değiştirilmeden iletmelidir. Genellikle, devralınan özelliklerin çoğunun uygulama işlevinin parametre listesinde bir parametresi olmaz ve **kwargs aracılığıyla iletilir. Makro'nun bu özellikleri hem "ana" hem de "ana" olmayan hedeflere iletmesi gerekiyorsa uygulama işlevinin bazı devralınan özellikler (en yaygın olarak tags ve testonly) için açık parametrelere sahip olması uygun olabilir. Ancak makro'nun bu özellikleri incelemesi veya değiştirmesi de gerekiyorsa zorunlu olmayan devralınan özelliklerin None varsayılan değerini işlemeye özen göstermeniz gerekir.

finalizer bool; varsayılan değer False
Bu makronun kural sonlandırıcı olup olmadığını belirtir. Kural sonlandırıcı, BUILD dosyasında bulunduğu konumdan bağımsız olarak, paket yüklemenin sonunda, sonlandırıcı olmayan tüm hedefler tanımlandıktan sonra değerlendirilen bir makrodur.

Normal sembolik makroların aksine kural sonlandırıcılar, mevcut pakette tanımlanan sonlandırıcı olmayan kural hedeflerinin kümesini sorgulamak için native.existing_rule() ve native.existing_rules() çağrılabilir. native.existing_rule() ve native.existing_rules()'un, bu kural dahil olmak üzere herhangi bir kural tamamlayıcısı tarafından tanımlanan hedeflere erişemediğini unutmayın.

doc dize veya None; varsayılan değer None
Makro için doküman oluşturma araçları tarafından ayıklanabilir bir açıklama.

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 saklayın.

Parametreler

Parametre Açıklama
implementation callable; required
Bu modül uzantısını uygulayan işlev. Tek bir parametre (module_ctx) almalıdır. Mevcut depo grubunu 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 nesnesine eşlenir.
doc dize; veya None; varsayılan değer None
Doküman oluşturma araçları tarafından ayıklanabilen 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)

Bir sağlayıcı simgesini 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 tuple döndürür: Provider çağrılabilir değer ve ham kurucu ç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 dize veya None; varsayılan değer None
Sağlayıcının, doküman oluşturma araçları tarafından ayıklanabilen 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:
  • 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 tuple döndürür: normal sağlayıcı sembolü ve bir ham kurucu.

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ı yapılarak 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 hata oluşur.
  • provider() çağrılırken fields parametresi belirtilmişse ve kwargs, fields'te listelenmeyen bir anahtar içeriyorsa hata meydana gelir.
  • 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) döndürür. Örneğin,
MyInfo = provider()
m = MyInfo(foo = 1)
, m'ın m.foo == 1 içeren bir MyInfo örneği olmasını sağlar.

Ancak init belirtilirse P(*args, **kwargs) çağrısı bunun yerine aşağıdaki adımları gerçekleştirir:

  1. Geri çağırma işlevi init(*args, **kwargs) olarak çağrılır. Yani P'a iletilen konumsal ve anahtar kelime bağımsız değişkenleriyle aynı bağımsız değişkenler kullanı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. P sınıfının yeni bir örneği, c(**d)'de olduğu gibi d girişlerini anahtar kelime bağımsız değişkenleri olarak kullanarak varsayılan kurucuyu çağırmış gibi oluşturulur.

Not: Yukarıdaki adımlar, *args veya **kwargs'nin init'nin imzasıyla eşleşmemesi, init'nin gövdesinin değerlendirilmesinin başarısız olması (fail() çağrısı yoluyla kasıtlı olarak) veya init'nin döndürdüğü değerin beklenen şemaya sahip bir sözlük olmaması durumunda hata oluştuğunu belirtir.

Bu şekilde init geri çağırma işlevi, ön işleme ve doğrulama için konumsal bağımsız değişkenlere ve keyfi mantığa izin vererek normal sağlayıcı oluşumunu genelleştirir. İzin verilen fields listesinin etrafından dolanmayı etkinleştirmez.

init belirtildiğinde provider()'un döndürdüğü değer bir tuple (P, r) olur. Burada r, ham kurucu olur. Aslında r işlevinin davranışı, yukarıda açıklanan varsayılan oluşturucu işlevi c ile aynıdır. Genellikle r, adının önüne alt çizgi eklenen bir değişkene bağlanır. Böylece yalnızca mevcut .bzl dosyası buna 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. Bir module_extension() uygulama işlevinden yüklenmesi ve çağrılabilmesi ya da use_repo_rule() tarafından kullanılabilmesi için global bir değerde saklayı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ımlanmış ö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 geçin.
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ütme ile uyumlu olarak ayarlanarak deneme amaçlı olarak etkinleştirilebilir.
doc dize veya None; varsayılan değer None
Depolama alanı kuralının, doküman oluşturma araçları tarafından ayıklanabilen 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 BUILD dosyasından veya makrodan çağrılabilecek yeni bir kural oluşturur.

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

Test kurallarının adının _test ile bitmesi gerekir. Diğer tüm kuralların adında 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ı tarafından sağlanan ö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 test kuralı olup olmadığı, yani blaze test komutuna tabi 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). Varsayılan değer False'tür. Daha fazla bilgi için Kurallar sayfasına bakı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 dolaylı 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ılmıştır. Bu parametrenin desteği sonlandırıldı ve yakında kaldırılacak. Lütfen bu yönteme güvenmeyin. --incompatible_no_rule_outputs_param ile devre dışı bırakılır. Kodunuzun yakında kaldırılacak olan özellikle uyumlu olup olmadığını doğrulamak için bu işareti kullanın.
Bu parametrenin desteği sonlandırılmıştır. Kuralları, OutputGroupInfo veya attr.output yerine 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 bildirilmiş çıkışlar hakkında daha fazla bilgi için Kurallar sayfasına bakın.

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 işlevi, hesaplanmış bağımlılık özelliklerine benzer şekilde çalışır: İşlevin parametre adları, kuralın özellikleriyle eşleştirilir. Örneğin, outputs = _my_func parametresini def _my_func(srcs, deps): ... tanımı ile iletirseniz 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ükteki her giriş, anahtarın bir tanımlayıcı ve değerin, çıktının etiketini belirleyen bir dize şablonu olduğu önceden bildirilmiş bir çıktı oluşturur. Kuralın uygulama işlevinde tanımlayıcı, ctx.outputs içindeki çıkışın File alanına erişmek için kullanılan alan adı olur. Çıktının etiketi, kuralla aynı pakete sahiptir ve paketten sonraki kısım, "%{ATTR}" biçimindeki her yer tutucunun ATTR özelliğinin değerinden oluşturulan bir dizeyle değiştirilmesiyle üretilir:

  • 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ündeki özellikler, dosya uzantısı da dahil olmak üzere paketten sonra etiketin bir parçası olur (yukarıdaki örnekte "a/b.c").
  • Yer tutucularda kullanılan tüm liste türündeki ö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örünmeyebilir.
  • Özel özellik olmayan yer tutucular %{dirname} ve %{basename}, paketi hariç olmak üzere kuralın etiketinin bu bölümlerini genişletir. Ö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 çıkışlar sözlüğü {"bin": "%{name}.exe"}, 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
Doğru ise 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 Dize dizisi; varsayılan değer []
Kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adları.
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 ise bu kural, işlemlerini bir Actions sağlayıcı aracılığıyla kendisine bağlı kurallar tarafından incelenmek üzere gösterir. 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ç zinciri grubu. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesneleri içerebilir. Araçlar zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain aracılığıyla kural uygulaması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 nesnesi olmasına rağmen eski bir sağlayıcı, dize adıyla temsil edilir.Kuralın bir hedefi, zorunlu bir sağlayıcıyı açıklayan bir hedefin bağımlılığı olarak kullanıldığında bu sağlayıcıyı burada belirtmeniz gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak zorunlu olmasa da bunu belirtmek en iyi uygulama olarak kabul edilir. Ancak bir yönün required_providers alanında, sağlayıcıların burada belirtilmesi gerekir.

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şaretin ayarlandığı kuralların her özelliği, materyalize ediciler için de kullanılabilir olarak işaretlenmelidir. Bu, işaretlenen kuralların işaretlenmemiş kurallara bağlı olmaması içindir.
exec_compatible_with Dize dizisi; varsayılan değer []
Yürütme platformundaki, 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: Analiz testi 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 olabilecekleri geçişli bağımlılık 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 kaydedemeyebilir. Bunun yerine, AnalysisTestResultInfo sağlayarak başarılı/başarısız sonucunu kaydetmelidir.
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ında 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ında varsayılan değeri olmayan bir parametre varsa bu 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, reklamı yapılan sağlayıcıların yanı sıra herkese açık özellikler de birleştirilir. Kural, üst öğedeki 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. Üst öğenin gelen yapılandırma geçişi cfg, thisrule öğesinin gelen yapılandırmasından sonra uygulanır.
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. Uzatma işlemine her zaman izin vermek/vermemek için True/False olarak da ayarlanabilir. Bazel varsayılan olarak uzantılara her zaman izin verir.
subrules Alt kural dizisi; varsayılan değer []
Deneysel: Bu kuralın kullandığı 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; zorunlu
Yapılandırma koşullarını değerlerle eşleyen bir sözlük. Her anahtar, bir config_setting veya constraint_value örneğini tanımlayan bir etiket ya da etiket dizesidir. Dize yerine etiketin ne zaman kullanılacağı hakkında bilgi edinmek için makrolarla ilgili dokümanlara bakın.
no_match_error dize; varsayılan olarak ''
Hiçbir koşul eşleşmezse raporlanacak 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 saklanmalıdır.

Parametreler

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

Alt kurallarda yalnızca etiket türüne sahip gizli özellikler (ör. etiket veya etiket listesi) bulunabilir. Bu etiketlere karşılık gelen çözümlenmiş değerler, Bazel tarafından alt kuralın uygulama işlevine adlandırılmış bağımsız değişkenler olarak otomatik olarak iletilir (bu nedenle 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 ile etiket özellikleri için FilesToRunProvider
  • allow_single_file=True ile 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 uygulamasına sağlanır. Bu parametre ayarlanırsa AEG'lerin, tüketen kurallarda etkinleştirilmesi gerektiğini unutmayın. Henüz AEG'lere geçmediyseniz https://bazel.build/extending/auto-exec-groups#migration-aegs adresine bakın.
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 sıralı listesi; 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)

Bir modül uzantısı tarafından kullanılabilen veri nesneleri olan etiket sınıfı için bir ö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()'ten farklı olarak, tanımlanan özelliklerin None değerini varsayılan değere dönüştürmeyeceğini unutmayın. Varsayılanın kullanılması için özelliğin arayan 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ükleme görünürlüğünü ayarlar.

Bir modülün yükleme görünürlüğü, diğer BUILD ve .bzl dosyalarının bu modülü yükleyip yükleyemeyeceğini belirler. (Bu, dosyanın diğer hedeflerin bağımlılığı olarak görünüp görünmeyeceğini yöneten temel .bzl kaynak dosyasının hedef görünürlüğünden farklıdır.) 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ük görünürlüğü ihlalleri uyarı verir ancak derleme başarısız olmaz.

Parametreler

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

Paket özellikleri, negatif paket özelliklerine izin verilmemesi dışında package_group ile aynı biçimi izler. 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 özellikler geçerli modülün deposuna göre yorumlanır.

value bir dize listesiyse bu modüle görünürlük verilen paket grubu, her spesifikasyonla temsil edilen paketlerin birleşimidir. (Boş liste, private ile aynı etkiye sahiptir.) value tek bir dize ise [value] tek öğeli liste gibi işlenir.

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