DERLEME dosyaları

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

BUILD dosyalarında kullanılabilen yöntemler. Ayrıca, BUILD dosyalarında da kullanılabilecek ek işlevler ve derleme kuralları için Build Encyclopedia'ya bakın.

Üyeler

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.

existing_rule

unknown existing_rule(name)

Bu iş parçacığının paketinde oluşturulan bir kuralın özelliklerini açıklayan değişmez bir sözlük benzeri nesne veya bu ada sahip bir kural örneği yoksa None döndürür.

Burada değiştirilemez sözlük benzeri nesne, sözlük benzeri yinelemeyi destekleyen x, len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values() gibi derinlemesine değiştirilemez bir nesne anlamına gelir.

Sonuç, özel olanlar (adları harfle başlamayanlar) ve birkaç temsil edilemeyen eski özellik türü hariç olmak üzere her özellik için bir giriş içerir. Ayrıca sözlük, kural örneğinin name ve kind girişlerini (örneğin, 'cc_binary') içerir.

Sonucun değerleri, özellik değerlerini aşağıdaki gibi temsil eder:

  • str, int ve bool türündeki özellikler olduğu gibi gösterilir.
  • Etiketler, aynı paketteki hedefler için ':foo' biçiminde, farklı paketteki hedefler için ise '//pkg:name' biçiminde dizelere dönüştürülür.
  • Listeler demet olarak gösterilir ve sözlükler yeni, değiştirilebilir sözlüklere dönüştürülür. Bu öğeler, aynı şekilde yinelemeli olarak dönüştürülür.
  • select değerleri, içerikleri yukarıda açıklandığı şekilde dönüştürülerek döndürülür.
  • Kural oluşturma sırasında değeri belirtilmeyen ve varsayılan değeri hesaplanan özellikler sonuçtan çıkarılır. (Hesaplanmış varsayılanlar, analiz aşamasına kadar hesaplanamaz.)

Mümkünse bu işlevi yalnızca kural sonlandırıcı sembolik makroların uygulama işlevlerinde kullanın. Bu işlevin diğer bağlamlarda kullanılması önerilmez ve gelecekteki bir Bazel sürümünde devre dışı bırakılır. Bu işlev, BUILD dosyalarını kırılgan ve sıraya bağımlı hale getirir. Ayrıca, kural özelliği değerlerinin dahili formdan Starlark'a dönüştürülmesinin diğer iki dönüşümden biraz farklı olduğunu unutmayın: Biri hesaplanmış varsayılanlar, diğeri ise ctx.attr.foo tarafından kullanılır.

Parametreler

Parametre Açıklama
name string; required
Hedefin adı.

existing_rules

unknown existing_rules()

Bu iş parçacığının paketinde şu ana kadar oluşturulan kuralları açıklayan, değiştirilemez bir sözlük benzeri nesne döndürür. Sözlük benzeri nesnenin her girişi, kural örneğinin adını existing_rule(name) tarafından döndürülecek sonuçla eşler.

Burada değiştirilemez sözlük benzeri nesne, sözlük benzeri yinelemeyi destekleyen x, len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values() gibi derinlemesine değiştirilemez bir nesne anlamına gelir.

Mümkünse bu işlevi yalnızca kural sonlandırıcı sembolik makroların uygulama işlevlerinde kullanın. Bu işlevin diğer bağlamlarda kullanılması önerilmez ve gelecekteki bir Bazel sürümünde devre dışı bırakılır. Bu işlev, BUILD dosyalarını kırılgan ve sıraya bağımlı hale getirir.

exports_files

None exports_files(srcs, visibility=None, licenses=None)

Bu pakete ait olup diğer paketlere aktarılan dosyaların listesini belirtir.

Parametreler

Parametre Açıklama
srcs sequence of strings; required
Dışa aktarılacak dosyaların listesi.
visibility sequence veya None; varsayılan değer None
Görünürlük bildirimi belirtilebilir. Dosyalar, belirtilen hedefler tarafından görülebilir. Görünürlük belirtilmezse dosyalar her pakette görünür.
licenses Dize dizisi veya None; varsayılan değer None
Belirtilecek lisanslar.

glob

sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

Glob, geçerli paketteki her dosyanın yeni, değiştirilebilir ve sıralanmış bir listesini döndürür. Bu dosyalar:
  • include içinde en az bir kalıpla eşleşir.
  • exclude içindeki kalıplardan biriyle eşleşmiyor (varsayılan []).
exclude_directories bağımsız değişkeni etkinleştirilirse (1 olarak ayarlanırsa) dizin türündeki dosyalar sonuçlardan çıkarılır (varsayılan 1).

Parametreler

Parametre Açıklama
include Dizelerin sırası; varsayılan değer []
Dahil edilecek glob desenlerinin listesi.
exclude string'lerin sırası; varsayılan değer []
Hariç tutulacak glob desenlerinin listesi.
exclude_directories int; varsayılan değer 1
Dizinlerin hariç tutulup tutulmayacağını belirten bir işaret.
allow_empty Varsayılan değer unbound
'dir. Glob kalıplarının hiçbir şeyle eşleşmesine izin verilip verilmeyeceği. `allow_empty` False ise her bir dahil etme kalıbı bir şeyle eşleşmeli ve son sonuç da boş olmamalıdır (eşleşen `exclude` kalıpları hariç tutulduktan sonra).

module_name

string module_name()

Bu paketin bulunduğu depoyla ilişkili Bazel modülünün adı. Bu paket, MODULE.bazel yerine WORKSPACE'te tanımlanan bir depodan geliyorsa bu alan boştur. Modül uzantıları tarafından oluşturulan depolar için bu, uzantıyı barındıran modülün adıdır. Bu, module_ctx.modules içinde görünen module.name alanı ile aynıdır. None iade edilebilir.

module_version

string module_version()

Bu paketin bulunduğu depoyla ilişkili Bazel modülünün sürümü. Bu paket, MODULE.bazel yerine WORKSPACE'te tanımlanan bir depodan geliyorsa bu alan boştur. Modül uzantıları tarafından oluşturulan depolar için bu, uzantıyı barındıran modülün sürümüdür. Bu, module_ctx.modules içinde görünen module.version alanı ile aynıdır. None iade edilebilir.

paket

unknown package(**kwargs)

Paketteki her kural için geçerli olan meta verileri bildirir. Bir paket (BUILD dosyası) içinde en fazla bir kez çağrılmalıdır. Çağrılırsa BUILD dosyasındaki ilk çağrı olmalı ve load() ifadelerinden hemen sonra gelmelidir.

Parametreler

Parametre Açıklama
kwargs required
Geçerli bağımsız değişkenler için Yapı Ansiklopedisi'ndeki package() işlevine bakın.

package_default_visibility

List package_default_visibility()

Değerlendirilen paketin varsayılan görünürlüğünü döndürür. Bu, paketin kendisini de içerecek şekilde genişletilmiş package() öğesinin default_visibility parametresinin değeridir.

package_group

None package_group(name, packages=[], includes=[])

Bu işlev, bir paket grubu tanımlar ve gruba bir etiket atar. Etikete visibility özelliklerinde referans verilebilir.

Parametreler

Parametre Açıklama
name string; required
Bu kuralın benzersiz adı.
packages sequence of strings; default is []
Bu gruptaki paketlerin tam listesi.
includes string'lerin sequence'ı; varsayılan değer []
Buna dahil edilen diğer paket grupları.

package_name

string package_name()

Değerlendirilen paketin adı (depo adı hariç). Örneğin, some/package/BUILD BUILD dosyasında değeri some/package olur. BUILD dosyası, .bzl dosyasında tanımlanan bir işlevi çağırıyorsa package_name(), çağıran BUILD dosyası paketiyle eşleşir. Değer, kök paket için her zaman boş bir dize olur.

package_relative_label

Label package_relative_label(input)

Giriş dizesini, şu anda başlatılmakta olan paket bağlamında (yani mevcut makronun yürütüldüğü BUILD dosyası) bir Label nesnesine dönüştürür. Giriş zaten bir Label ise değiştirilmeden döndürülür.

Bu işlev yalnızca bir BUILD dosyası ve doğrudan veya dolaylı olarak çağırdığı makrolar değerlendirilirken çağrılabilir. Örneğin, bir kural uygulama işlevinde çağrılamaz.

Bu işlevin sonucu, verilen dizeyi BUILD dosyasında belirtilen bir hedefin etiket değerli özelliğine ileterek elde edilen Label değeriyle aynıdır.

Kullanım notu: Bu işlev ile Label() arasındaki fark, Label() işlevinin BUILD dosyasının değil, kendisini çağıran .bzl dosyasının paket bağlamını kullanmasıdır. Bir derleyici gibi makroya sabit kodlanmış bir hedefe başvurmanız gerektiğinde Label() kullanın. BUILD dosyası tarafından sağlanan bir etiket dizesini package_relative_label() nesnesine normalleştirmeniz gerektiğinde package_relative_label() işlevini kullanın.Label (BUILD dosyası veya çağıran .bzl dosyası dışındaki bir paket bağlamında bir dizeyi Label öğesine dönüştürmenin bir yolu yoktur. Bu nedenle, dış makrolar her zaman etiket dizeleri yerine etiket nesnelerini iç makrolara geçirmeyi tercih etmelidir.)

Parametreler

Parametre Açıklama
input string veya Label; required
Giriş etiketi dizesi veya Etiket nesnesi. Bir Etiket nesnesi iletilirse olduğu gibi döndürülür.

repo_name

string repo_name()

Şu anda değerlendirilmekte olan paketi içeren deponun, başında @ işareti olmayan kanonik adı.

repository_name

string repository_name()

Deneysel. Bu API deneyseldir ve herhangi bir zamanda değişebilir. Lütfen bu bilgileri kullanmayın. --+incompatible_enable_deprecated_label_apis
Kullanımdan kaldırıldı. ayarlanarak deneysel olarak etkinleştirilebilir. Bunun yerine, başında gereksiz @ işareti içermeyen ancak diğer açılardan aynı şekilde çalışan repo_name kullanılması tercih edilir.

Şu anda değerlendirilmekte olan paketi içeren deponun standart adı. Tek bir @ işareti (@) ile başlar. Örneğin, WORKSPACE stanza local_repository(name='local', path=...) tarafından oluşturulan paketlerde @local olarak ayarlanır. Ana depodaki paketlerde @ olarak ayarlanır.

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 paketler

sequence subpackages(include, exclude=[], allow_empty=False)

Dosya sistemi dizin derinliğinden bağımsız olarak, mevcut paketin her doğrudan alt paketinin yeni bir değiştirilebilir listesini döndürür. Döndürülen liste sıralanır ve mevcut pakete göre alt paketlerin adlarını içerir. Bu işlevi doğrudan çağırmak yerine bazel_skylib.subpackages modülündeki yöntemleri kullanmanız önerilir.

Parametreler

Parametre Açıklama
include sequence of strings; required
Alt paket taramasına dahil edilecek glob kalıplarının listesi.
exclude string'lerin sequence'ı; varsayılan değer []
Alt paket taramasından hariç tutulacak glob desenlerinin listesi.
allow_empty bool; varsayılan değer False
Çağrı boş bir liste döndürürse başarısız olup olmayacağımız. Varsayılan olarak boş liste, subpackages() çağrısının gereksiz olduğu BUILD dosyasında olası bir hatayı gösterir. Doğru olarak ayarlamak, bu işlevin söz konusu durumda başarılı olmasını sağlar.