.bzl dosyaları

Sorun bildir Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

Üyeler

analysis_test_transition

transition analysis_test_transition(settings)

Bir analiz testi 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 özellikler açısından kısıtlanmıştı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şlerin olası kapsamı, transition() kullanılarak oluşturulan geçişlere kıyasla sınırlıdır.

Bu işlev öncelikli olarak Analysis Test Framework temel kitaplığını kolaylaştırmak için tasarlanmıştır. En iyi uygulamalar için dokümanlarını (veya uygulamasını) inceleyin.

Parametreler

Parametre Açıklama
settings dict; required
Bu yapılandırma geçişi tarafından ayarlanması gereken yapılandırma ayarlarıyla ilgili bilgileri içeren bir sözlük. Anahtarlar, derleme ayarı etiketleridir ve değerler, geçiş sonrası yeni değerlerdir. Diğer tüm ayarlar değiştirilmez. Bir analiz testinin başarılı olması için ayarlanması gereken belirli yapılandırma ayarlarını bildirmek için bu özelliği 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 görünüm oluşturur. Bu işlevin sonucu genel bir değerde saklanmalıdır. Daha ayrıntılı bilgi için lütfen Aspects'e giriş bölümünü inceleyin.

Parametreler

Parametre Açıklama
implementation function; required
Bu yönü uygulayan bir Starlark işlevi. Tam olarak iki parametreye sahiptir: Target (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, bir yönün bir hedefe her uygulanması için analiz aşamasında 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ıklar boyunca yayılır. Buradaki yaygın değerler arasında deps ve exports yer alır. Liste, bir hedefin tüm bağımlılıklarına yayılacak tek bir dize "*" da 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 {}
Yönün tüm özelliklerini bildiren bir sözlük. attr.label veya attr.string gibi bir özellik adından bir özellik nesnesine eşleme yapar (bkz. attr modülü). Görünüm özellikleri, uygulama işlevinde ctx parametresinin alanları olarak kullanılabilir.

_ ile başlayan örtülü özelliklerin varsayılan değerleri olmalı ve türü label veya label_list olmalıdır.

Açık özellikler string türünde olmalı ve values kısıtlaması kullanılmalıdır. Açık özellikler, yönün yalnızca kısıtlamaya göre aynı ada, türe ve geçerli değerlere sahip özelliklerin bulunduğu kurallarla kullanılmasını sağlar.

Bildirilen ö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ılımını yalnızca kuralları gerekli sağlayıcılarını tanıtan hedeflerle sınırlamasına olanak tanır. Değer, tek tek sağlayıcıları veya sağlayıcı listelerini içeren bir liste olmalı ancak ikisini birden içermemelidir. Ö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ı 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]] ürününe dönüştürülür.

Bazı kuralların (ör. some_rule) bir yönü hedeflemesini sağlamak için some_rule, gerekli sağlayıcı listelerinden en az birindeki tüm sağlayıcıların reklamını yapmalıdır. Örneğin, bir yönün required_providers değeri [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] ise bu yön, yalnızca some_rule, FooInfo, veya BarInfo, veya hem BazInfo hem de QuxInfo değerlerini sağlarsa some_rule hedeflerini 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, tek tek sağlayıcıları veya sağlayıcı listelerini içeren bir liste olmalı ancak ikisini birden içermemelidir. Ö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ı 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]] ürününe dönüştürülür.

Başka bir yönü (ör. other_aspect) bu yönde görünür kılmak 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 yön yalnızca other_aspect, FooInfo veya BarInfo veya hem BazInfo hem de QuxInfo sağlarsa other_aspect'yi 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 nesnesidir. Ancak eski bir sağlayıcı, bunun yerine dize adıyla temsil edilir. Kuralın hedefi, gerekli bir sağlayıcıyı bildiren bir hedefin bağımlılığı olarak kullanıldığında bu sağlayıcının burada belirtilmesi gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak bu zorunlu olmasa da belirtilmesi en iyi uygulama olarak kabul edilir. Ancak bir aspect öğesinin required_providers alanı, sağlayıcıların burada belirtilmesini gerektirir.

requires Aspect'lerin sequence'ı; varsayılan değer []
Bu yönün yayılması için önceden yayılması gereken yönlerin listesi.
fragments string'lerin sequence'ı; varsayılan değer []
Yönün hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
host_fragments Dizelerin sırası; varsayılan değer []
Yönün ana makine yapılandırmasında gerektirdiği yapılandırma parçalarının adlarının listesi.
toolchains sequence; varsayılan değer []
Ayarlandığında, bu yönün gerektirdiği araç zincirleri kümesi. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir. Araç zincirleri, mevcut platform kontrol edilerek bulunur ve ctx.toolchain aracılığıyla yönlendirme uygulamasına sağlanır.
incompatible_use_toolchain_transition bool; varsayılan değer False
Kullanımdan kaldı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ı tarafından çıkarılabilen yönün açıklaması.
apply_to_generating_rules bool; varsayılan değer False
Doğruysa yön, çıkış dosyasına uygulandığında çıkış dosyasının oluşturma kuralına uygulanır.

Örneğin, bir yönün "deps" özelliği aracılığıyla geçişli olarak yayıldığını ve "alpha" hedefine uygulandığını varsayalım. "alpha"nın "deps = [':beta_output']" olduğunu varsayalım. Burada "beta_output", "beta" hedefinin bildirilmiş bir çıkışıdır. "beta"nın "deps" özelliklerinden biri olarak "charlie" hedefi olduğunu varsayalım. Yön için "apply_to_generating_rules=True" ise yön "alpha", "beta" ve "charlie" aracılığıyla yayılır. False ise yön yalnızca "alpha"ya yayılır.

Varsayılan olarak yanlış (false) değerindedir.

exec_compatible_with sequence of strings; default is []
Yürütme platformunda bu yönün 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 sözlüğü. Ayarlanırsa yönlerin tek bir örnek içinde birden fazla yürütme platformunda işlem yapmasına olanak tanır. Daha fazla bilgi için yürütme grupları dokümanlarını inceleyin.
subrules Alt Kural'ların sırası; varsayılan değer []
Deneysel: Bu yön tarafından kullanılan alt kurallar listesi.

configuration_field

LateBoundDefault configuration_field(fragment, name)

label türündeki bir özelliğin geç bağlanan varsayılan değerine referans veriyor. Bir değer, değeri belirlemeden önce yapılandırmanın oluşturulmasını gerektiriyorsa "geç bağlanmış" olur. Değer olarak bunu kullanan tüm özellikler özel olmalıdır.

Örnek kullanım:

Kural özelliği tanımlama:

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

Kural uygulamada erişim:

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

Parametreler

Parametre Açıklama
fragment string; required
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 depset'in dolaylı öğeleri haline gelen depset'lerin listesidir. Depsset liste olarak dönüştürüldüğünde öğelerin döndürülme sırası order parametresiyle belirtilir. Daha fazla bilgi için Depset'lere genel bakış başlıklı makaleyi inceleyin.

Bir depset'in tüm öğeleri (doğrudan ve dolaylı), type(x) ifadesiyle elde edildiği gibi aynı türde olmalıdır.

Tekrarlama sırasında yinelenenleri ortadan kaldırmak için karma tabanlı bir küme kullanıldığından, bir depset'in tüm öğeleri karma oluşturulabilir olmalıdır. Ancak bu değişmez, şu anda tüm oluşturucularda 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. 10313 numaralı soruna bakın.

Ayrıca, öğeler şu anda değişmez olmalıdır. Ancak bu kısıtlama gelecekte gevşetilecektir.

Oluşturulan bağımlılık kümesinin sırası, transitive bağımlılık kümelerinin sırasıyla uyumlu olmalıdır. "default" sırası diğer sıralarla uyumludur, diğer tüm sıralar yalnızca kendi aralarında uyumludur.

Parametreler

Parametre Açıklama
direct sequence; veya None; varsayılan değer None
Bir depset'in direct öğelerinin listesi.
order string; varsayılan değer "default"
Yeni depset için geçiş stratejisi. Olası değerler için buraya bakın.
transitive depset'lerin sırası veya None; varsayılan değer None
Öğeleri depset'in dolaylı öğeleri haline gelecek 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 ü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ç zincirleri kümesi. Liste, herhangi bir kombinasyonda String, Label veya StarlarkToolchainTypeApi nesnelerini içerebilir.
exec_compatible_with string'lerin sequence'ı; varsayılan değer []
Yürütme platformuyla ilgili 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 özel bir sürümü. En iyi uygulamalar için dokümanlarını (veya uygulamasını) inceleyin. Yalnızca Bazel yerleşik işlevlerinden kullanılabilir.

Parametreler

Parametre Açıklama
implementation callable; required
inputs string dizisi; gerekli
outputs string dizisi; gerekli

makro

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

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

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

Sembolik makroları kullanmayla 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. Makronun özelliklerinin değerleri, uygulama işlevine anahtar kelime bağımsız değişkenleri olarak iletilir. Uygulama işlevinde en az iki adlandırılmış parametre (name ve visibility) bulunmalıdır. Makro, özellikleri devralıyorsa (aşağıdaki inherit_attrs bölümüne bakın) **kwargs artık anahtar kelime parametresi içermelidir.

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

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

Bir sembolik makro tarafından (makronun uygulama işlevinin geçişli olarak çağırdığı herhangi bir Starlark işlevi dahil) bildirilen herhangi bir hedef veya iç sembolik makronun adı, name'ya eşit olmalı (buna "ana" hedef denir) ya da name ile başlayıp bir ayırıcı karakter ("_", "-" veya ".") ve bir dize soneki ile devam etmelidir. (Bu adlandırma şemasını ihlal eden hedeflerin bildirilmesine izin verilir ancak bu hedefler oluşturulamaz, yapılandırılamaz veya bunlara bağlı kalınamaz.)

Varsayılan olarak, sembolik bir makro tarafından bildirilen 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. Sembolik makronun arayanı da dahil olmak üzere hedefleri harici olarak görünür hale getirmek için uygulama işlevinin visibility değerini uygun şekilde ayarlaması gerekir. Bu genellikle, çağrılan kurala veya makro sembolüne visibility = visibility değerini ileterek yapılır.

Aşağıdaki API'ler, bir makro uygulama işlevinde ve dolaylı olarak çağırdığı tüm Starlark işlevlerinde kullanılamaz:

attrs dict; varsayılan değer {}
Bu makronun desteklediği özelliklerin sözlüğü. rule.attrs ile benzerdir. Anahtarlar özellik adlarıdır ve değerler attr.label_list(...) gibi özellik nesneleridir (attr modülüne bakın) veya None. None girişi, makronun inherit_attrs aracılığıyla bir öznitelik devralmış olsa bile (aşağıya bakın) bu ada sahip bir özniteliği olmadığı anlamına gelir.

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

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

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

inherit_attrs rule; veya macro; veya string; veya None; varsayılan değer None
Makronun özellikleri devralması gereken bir kural sembolü, makro sembolü veya yerleşik ortak özellik listesinin adı (aşağıya bakın).

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()'nin dönüş değeri bir .bzl dosyasındaki genel değişkene atanmamışsa bu değerin kural veya makro sembolü olarak kaydedilmediğini ve bu nedenle inherit_attrs için kullanılamayacağını unutmayın.

Devralma mekanizması şu şekilde işler:

  1. Özel name ve visibility özellikleri hiçbir zaman devralınmaz.
  2. Gizli özellikler (adı "_" ile başlayanlar) hiçbir zaman devralınmaz.
  3. Adları attrs sözlüğünde tanımlanmış olan özellikler hiçbir zaman devralınmaz (attrs sözlüğündeki giriş önceliklidir; bu adla hiçbir özelliğin makroda tanımlanmaması 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üğünde etkili bir şekilde birleştirilir.

Zorunlu olmayan bir özellik devralındığında, orijinal kuralda veya makroda ne belirtildiğine bakılmaksızın özelliğin varsayılan değeri None olarak geçersiz kılınır. Bu, makro, özelliğin değerini sarmalanmış kuralın veya makronun bir örneğine yönlendirdiğinde (ör. değiştirilmemiş **kwargs değerini 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 (çünkü None değerini bir özelliğe iletmek, özelliği atlamakla aynı şekilde değerlendirilir). Bir özelliğin atlanması, görünür varsayılan değerinin iletilmesinden biraz farklı bir anlama sahip olduğundan bu ö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. Makronun, devralınan bir özelliği incelemesi veya değiştirmesi gerekiyorsa (örneğin, devralınan bir tags özelliğine değer eklemek için) None durumunu makronun uygulama işlevinde ele aldığınızdan emin olmanız gerekir.

Örneğin, aşağıdaki makro, native.cc_library dışındaki tüm özellikleri devralır. cxxopts (özellik listesinden kaldırılır) ve copts (yeni bir tanım verilir) özellikleri hariçtir. 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 kesinlikle bir **kwargs artık anahtar kelime parametresi olmalıdır.

Bir kurala göre, makro, devralınan ve geçersiz kılınmayan özellikleri, makronun sarmaladığı "ana" kurala veya makro sembolüne değiştirmeden iletmelidir. Genellikle, devralınan çoğu özelliğin uygulama işlevinin parametre listesinde parametresi olmaz ve yalnızca **kwargs üzerinden iletilir. Makronun 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 makronun bu özellikleri de incelemesi veya değiştirmesi gerekiyorsa zorunlu olmayan devralınan özelliklerin None varsayılan değerini işlemeye dikkat etmeniz gerekir.

finalizer bool; varsayılan değer False
'tür Bu makronun, BUILD dosyasındaki konumundan bağımsız olarak, paket yükleme işleminin sonunda, tüm sonlandırıcı olmayan hedefler tanımlandıktan sonra değerlendirilen bir kural sonlandırıcısı olup olmadığı.

Normal sembolik makroların aksine, kural sonlandırıcıları, geçerli pakette tanımlanan sonlandırıcı olmayan kural hedefleri kümesini sorgulamak için native.existing_rule() ve native.existing_rules() öğelerini çağırabilir. native.existing_rule() ve native.existing_rules()'nin bu kural sonlandırıcı da dahil olmak üzere herhangi bir kural sonlandırıcı tarafından tanımlanan hedeflere erişemeyeceğini unutmayın.

doc string; veya None; varsayılan değer None
Dokümantasyon oluşturma araçları tarafından çıkarılabilen makro açıklaması.

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. use_extension ile bir MODULE.bazel dosyasına aktarılıp kullanılabilmesi için bu değeri genel 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. Kullanılabilir depoların kümesini belirlemek için derlemenin başında işlev 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ı bildirmek için kullanılan sözlük. Etiket sınıfının adından bir tag_class nesnesine eşleme yapar.
doc string; veya None; varsayılan değer None
Belge oluşturma araçları tarafından çıkarılabilen modül uzantısının açıklaması.
environ Dizelerin sırası; 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ı gösterir.
arch_dependent bool; varsayılan değer False
'dır Bu uzantının mimariye bağlı olup olmadığını gösterir.

sağlayıcı

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

Sağlayıcı simgesini tanımlar. Bu işlevin sonucu genel bir değerde saklanmalıdır. Sağlayıcı, çağrılarak örneklenebilir veya doğrudan hedefteki 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ı kullanmayla ilgili kapsamlı bir kılavuz için Kurallar (Sağlayıcılar) başlıklı makaleyi inceleyin.

init belirtilmemişse Provider çağrılabilir değerini döndürür.

init belirtilirse 2 öğeden oluşan bir demet döndürür: Provider çağrılabilir değeri ve raw constructor çağrılabilir değeri. Ayrıntılar için Kurallar (Özel sağlayıcıların özel olarak başlatılması) ve aşağıdaki init parametresiyle ilgili tartışma bölümüne bakın.

Parametreler

Parametre Açıklama
doc string; veya None; varsayılan değer None
Belge oluşturma araçları tarafından çıkarılabilen sağlayıcı açıklaması.
fields string'lerin sequence'ı; veya dict; veya None; varsayılan değer None
Belirtilirse izin verilen alanlar kümesini kısıtlar.
Olası değerler:
  • alan listesi:
    provider(fields = ['a', 'b'])

  • sözlük alan adı -> doküman:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Tüm alanlar isteğe bağlıdır.
init callable; veya None; varsayılan değer None
Sağlayıcının alan değerlerini örnekleme sırasında önceden işlemek ve doğrulamak için isteğe bağlı geri çağırma. init belirtilirse provider(), 2 öğeli bir demet döndürür: normal sağlayıcı sembolü ve bir raw constructor.

Ayrıntılı bir açıklama aşağıda verilmiştir. Sezgisel bir tartışma ve kullanım alanları için Kurallar (Sağlayıcıların özel olarak başlatılması) başlıklı makaleye bakın.

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

  • args boş değilse hata oluşur.
  • provider() çağrıldığında fields parametresi belirtilmişse ve kwargs, fields içinde listelenmeyen herhangi bir anahtar içeriyorsa hata oluşur.
  • Aksi takdirde, c, kwargs içindeki her k: v girişi için v değerine sahip k adlı bir alan içeren yeni bir örnek döndürür.
init geri çağırması verilmediği durumlarda, P sembolüne yapılan bir çağrı, varsayılan oluşturucu işlevi c'ya yapılan bir ç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 öğesinin m.foo == 1 ile MyInfo örneği olmasını doğrudan sağlar.

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

  1. Geri çağırma, init(*args, **kwargs) olarak çağrılır. Yani, P'ye iletilen konum ve anahtar kelime bağımsız değişkenleriyle aynı şekilde çağrılır.
  2. init işlevinin dönüş değerinin, anahtarları alan adı dizeleri olan bir sözlük (d) olması beklenir. Aksi takdirde hata oluşur.
  3. P öğesinin yeni bir örneği, d girişleri anahtar kelime bağımsız değişkenleri olarak kullanılarak varsayılan oluşturucu çağrılıyormuş gibi oluşturulur (ör. c(**d)).

NB: Yukarıdaki adımlar, *args veya **kwargs, init'nin imzasıyla eşleşmiyorsa ya da init'nin gövdesinin değerlendirilmesi başarısız olursa (belki de fail() çağrısıyla kasıtlı olarak) veya init'nin dönüş değeri beklenen şemaya sahip bir sözlük değilse bir hata oluştuğu anlamına gelir.

Bu şekilde, init geri çağırma, konum bağımsız argümanlara 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 atlanmasını sağlamaz.

init belirtildiğinde, provider() işlevinin dönüş değeri (P, r) demeti olur. Burada r, ham oluşturucudur. Aslında, r öğesinin davranışı, yukarıda bahsedilen varsayılan oluşturucu işlevi c ile aynıdır. Genellikle r, adı alt çizgiyle başlayan bir değişkene bağlanır. Böylece yalnızca mevcut .bzl dosyası değişkene 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üklenebilmesi ve çağrılabilmesi veya use_repo_rule() tarafından kullanılabilmesi için global bir değerde saklayın.

Parametreler

Parametre Açıklama
implementation callable; required
the function that implements this rule. 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
Depo kuralının tüm özelliklerini bildirmek için kullanılan sözlük. Bir özellik adından bir özellik nesnesine eşleme yapar (bkz. attr modülü). _ ile başlayan özellikler özeldir ve bir dosyaya etikete yönelik örtülü bir bağımlılık eklemek için kullanılabilir (bir depo kuralı, oluşturulan bir yapıya bağlı olamaz). name özelliği örtülü olarak eklenir ve belirtilmemelidir.

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

local bool; varsayılan değer False
Bu kuralın yerel sistemden her şeyi getirdiğini ve her getirme işleminde yeniden değerlendirilmesi gerektiğini belirtin.
environ Dize sırası; varsayılan değer []
Desteği sonlandırıldı. Bu parametrenin desteği sonlandırıldı. Bunun yerine repository_ctx.getenv'ya 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 belirtin.
remotable bool; varsayılan değer False
Deneysel. Bu parametre deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu bilgileri kullanmayın. --experimental_repo_remote_exec
Uzaktan yürütmeyle uyumlu ayarını yaparak deneysel olarak etkinleştirilebilir.
doc string; veya None; varsayılan değer None
Belge oluşturma araçları tarafından çıkarılabilen, 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 BUILD dosyasından veya makrodan çağrılabilen yeni bir kural oluşturur.

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

Test kurallarının adı _test ile bitmelidir. Diğer tüm kurallar bu soneki içermemelidir. (Bu kısıtlama yalnızca kurallar için geçerli olup hedefleri için geçerli değildir.)

Parametreler

Parametre Açıklama
implementation function; required
Bu kuralı uygulayan Starlark işlevi, tam olarak bir parametreye sahip 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 olamayacağı. Tüm test kuralları otomatik olarak yürütülebilir kabul edilir. Bir test kuralı için executable = True değerini açıkça ayarlamak gereksizdir (ve önerilmez). Değer varsayılan olarak False olur. 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 sözlük. Bir özellik adından bir özellik nesnesine eşleme yapar (bkz. attr modülü). _ ile başlayan özellikler özeldir ve bir etikete örtülü bağımlılık eklemek için kullanılabilir. name özelliği örtülü 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 bildirilebilecek özellik sayısına bir sınır uygulanır.

Bildirilen ö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 parametre artık kullanılmıyor ve yakında tamamen kaldırılacak. Lütfen bu bilgileri kullanmayın. --incompatible_no_rule_outputs_param ile devre dışı bırakılır. Kodunuzun bu özelliğin yakında kaldırılmasıyla uyumlu olduğunu doğrulamak için bu işareti kullanın.
Bu parametre kullanımdan kaldırılmıştır. Kuralları, bunun yerine OutputGroupInfo veya attr.output kullanacak şekilde taşıyın.

Önceden bildirilmiş çıkışları tanımlamak için kullanılan ş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, hesaplanmış bağımlılık özelliklerine benzer şekilde çalışır: İşlevin parametre adları, kuralın özellikleriyle eşleştirilir. Örneğin, outputs = _my_func bağımsız değişkenini def _my_func(srcs, deps): ... tanımıyla 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 tanımlayıcı, değerin ise çıkışın etiketini belirleyen bir dize şablonu olduğu önceden bildirilmiş bir çıkış oluşturur. Kuralın uygulama işlevinde tanımlayıcı, ctx.outputs içinde çıkışın File öğesine erişmek için kullanılan alan adı olur. Çıkışın etiketi, kuralın paketiyle aynıdır ve paketten sonraki bölü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 bire bir değiştirilir.
  • Etiket türündeki özellikler, paketten sonraki etiketin bir parçası olur (dosya uzantısı hariç). Örneğin, "//pkg:a/b.c" etiketi "a/b" olur.
  • Çıkış türü ö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 (ör. attr.label_list) tam olarak bir öğesi olması gerekir. Dönüşümleri, liste dışı sürümleriyle aynıdır (attr.label).
  • Diğer özellik türleri yer tutucularda görünmeyebilir.
  • Özel olmayan özellik yer tutucuları %{dirname} ve %{basename}, kuralın etiketinin paket hariç tutularak bu bölümlerine genişletilir. Örneğin, "//pkg:a/b.c" içinde dirname a, basename ise b.c'dir.

Uygulamada, en yaygın yer tutucu "%{name}"'dır. Örneğin, "foo" adlı bir hedef için çıkış 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 olup olmadığı, yani blaze run komutuna tabi olup olamayacağı. 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ğruysa dosyalar bin dizini yerine genfiles dizininde oluşturulur. Mevcut kurallarla uyumluluk için (ör. C++ için başlık dosyaları oluştururken) gerekli olmadığı sürece bu işareti ayarlamayın.
fragments string'lerin sequence'ı; 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ının listesi.
_skylark_testable bool; varsayılan değer False
(Deneysel)

Doğruysa bu kural, Actions sağlayıcısı aracılığıyla kendisine bağlı olan kurallar tarafından incelenmek üzere işlemlerini kullanıma sunar. Sağlayıcı, ctx.created_actions() çağrılarak kuralın kendisi için de kullanılabilir.

Bu, yalnızca Starlark kurallarının analiz zamanı davranışını test etmek için kullanılmalıdır. Bu işaret gelecekte kaldırılabilir.
toolchains sequence; varsayılan değer []
Ayarlandığında, bu kuralın gerektirdiği araç zincirleri kümesi. 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 uygulamasına sağlanır.
incompatible_use_toolchain_transition bool; varsayılan değer False
Kullanımdan kaldırıldı. Artık kullanılmıyor ve kaldırılması gerekiyor.
doc string; veya None; varsayılan değer None
Kuralın, doküman oluşturma araçları tarafından çıkarılabilecek 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 bir sağlayıcı, bunun yerine dize adıyla temsil edilir. Kuralın hedefi, gerekli bir sağlayıcıyı bildiren bir hedefin bağımlılığı olarak kullanıldığında bu sağlayıcının burada belirtilmesi gerekmez. Uygulama işlevinin bunu döndürmesi yeterlidir. Ancak bu zorunlu olmasa da belirtilmesi en iyi uygulama olarak kabul edilir. Ancak bir aspect öğesinin required_providers alanı, sağlayıcıların burada belirtilmesini gerektirir.

dependency_resolution_rule bool; varsayılan değer False
'dir. Ayarlanırsa kural, materyal oluşturucularda kullanılabilir olarak işaretlenen özellikler aracılığıyla da bağımlılık olabilir. Bu işaretin ayarlandığı kuralların her özelliği, materyalizasyon araçlarında da kullanılabilir olarak işaretlenmelidir. Bu sayede, bu şekilde işaretlenen kurallar, bu şekilde işaretlenmeyen kurallara bağlı olamaz.
exec_compatible_with string'lerin sequence'ı; varsayılan değer []
Bu kural türünün tüm hedefleri için geçerli olan, yürütme platformundaki kısıtlamaların listesi.
analysis_test bool; varsayılan değer False
Doğruysa bu kural, analiz testi olarak değerlendirilir.

Not: Analiz testi kuralları öncelikli olarak 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 uygulanır:

  • Bu kuralın hedefleri, sahip olabilecekleri geçişli bağımlılıkların sayısı bakımından sınırlıdır.
  • Kural, test kuralı olarak kabul edilir (test=True ayarlanmış gibi). Bu, test değerinin yerine geçer.
  • Kural uygulama işlevi, işlemleri kaydetmeyebilir. 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 ayar belirlenirse bu kurala, buraya iletilen değere karşılık gelen bir türle birlikte "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 sözlüğü. Ayarlanırsa kuralların tek bir hedef içinde birden fazla yürütme platformunda işlem yapmasına olanak tanır. Daha fazla bilgi için yürütme grupları dokümanlarını inceleyin.
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 zamanında çağrılır. name ile çağrılır ve kural tarafından tanımlanan herkese açık özelliklerin değerlerini (örneğin, tags gibi genel özelliklerle değil) kullanır.

Özellik adlarından istenen değerlere bir sözlük döndürmesi gerekir. Döndürülmeyen özellikler 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. Dolayısıyla, başlatıcının imzasındaki bir parametre varsayılan değerler içeriyorsa (None döndürülmediği sürece) özellik tanımındaki varsayılan değerin üzerine yazar.

Benzer şekilde, başlatıcının imzasındaki bir parametrenin varsayılan değeri yoksa parametre zorunlu hale gelir. Bu gibi durumlarda, bir özellik tanımındaki varsayılan/zorunlu ayarları atlamak 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
Experimental: the Stalark rule that is extended. Ayarlandığında, herkese açık özellikler ve reklamı yapılan sağlayıcılar birleştirilir. Kural, üst öğedeki executable ve test ile eşleşiyor. fragments, toolchains, exec_compatible_with ve exec_groups değerleri birleştirilir. Eski veya kullanımdan kaldırılmış parametreler ayarlanmamış olabilir. Üst öğenin gelen yapılandırma geçişi cfg, bu kuralın 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 bir izin verilenler listesi etiketi. Her zaman uzatmaya izin vermek/vermemek için True/False olarak da ayarlanabilir. Bazel, varsayılan olarak uzantılara her zaman izin verir.
subrules Alt Kural'ların sırası; varsayılan değer []
Deneysel: Bu kural tarafından kullanılan alt kurallar listesi.

seç

unknown select(x, no_match_error='')

select(), bir kural özelliğini yapılandırılabilir hale getiren yardımcı işlevdir. Ayrıntılar için yapı ansiklopedisine bakın.

Parametreler

Parametre Açıklama
x dict; required
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 ne zaman etiket kullanılması gerektiği hakkında bilgi edinmek için makrolarla ilgili dokümanları inceleyin.
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=[])

Bir alt kuralın yeni bir örneğini oluşturur. Bu işlevin sonucu, kullanılmadan önce 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 (özel) özelliklerini bildirmek için kullanılan sözlük.

Alt kurallar yalnızca etiket türünde (ör. etiket veya etiket listesi) özel özelliklere sahip olabilir. 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 şunlar olacaktır:

  • FilesToRunProvider için executable=True ile etiket özellikleri
  • File için allow_single_file=True ile etiket özellikleri
  • Diğer tüm etiket özellikleri için Target
  • Tüm etiket listesi özellikleri için [Target]
toolchains sequence; varsayılan değer []
Ayarlandığında, bu alt kuralın gerektirdiği araç zincirleri kümesi. 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 uygulamasına sağlanır. Bu parametre ayarlanırsa AE'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 adresini ziyaret edin.
fragments string'lerin sırası; varsayılan değer []
Alt kuralın hedef yapılandırmada gerektirdiği yapılandırma parçalarının adlarının listesi.
subrules Alt Kural'ların sırası; 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 bir etiket sınıfı için bir özellik şeması 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 sözlük. Bir özellik adından bir özellik nesnesine eşleme yapar (bkz. attr modülü).

rule(), aspect() ve repository_rule()'dan farklı olarak, bildirilen özelliklerin None değerini varsayılan değere dönüştürmeyeceğini unutmayın. Varsayılanın kullanılabilmesi için arayan kişi özelliği tamamen atlamalıdır.

doc string; 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 belirleyen 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ü yüklemek için yükleme işlemini yapan dosyanın, modülün görünürlüğünün verildiği bir pakette bulunması gerekir. Bir modül, görünürlüğünden bağımsız olarak her zaman kendi paketi içinde yüklenebilir.

visibility(), .bzl dosyası başına yalnızca bir kez ve yalnızca üst düzeyde (bir işlevin içinde değil) ç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ış (false) olarak ayarlanırsa yükleme görünürlüğü ihlalleri uyarı verir ancak derleme başarısız olmaz.

Parametreler

Parametre Açıklama
value gerekli
Paket belirtimi dizelerinin listesi veya tek bir paket belirtimi dizesi.

Paket özellikleri, package_group ile aynı biçime sahiptir ancak negatif paket özelliklerine izin verilmez. Yani, bir spesifikasyon şu biçimlerde olabilir:

  • "//foo": paket //foo
  • "//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 dizeler listesiyse bu modüle görünürlük verilen paketler kümesi, her spesifikasyonun temsil ettiği paketlerin birleşimidir. (Boş bir liste, private ile aynı etkiye sahiptir.) value tek bir dizeyse [value] tek öğeli listesiymiş 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 hiçbir etkisi olmadığını unutmayın. "public" ve "private" değerleri her zaman kullanılabilir ve "//..." her zaman "mevcut depodaki tüm paketler" olarak yorumlanır.