DERLEME dosyaları

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

DERLE dosyalarında kullanılabilen yöntemler. Ayrıca, DERLE dosyalarında da kullanılabilecek ek işlevler ve oluşturma kuralları için Build Ansiklopedisi Oluşturma konusuna göz atın.

Üyeler

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 tabanlı bir küme kullanıldığından, kümedeki tüm öğeler karma oluşturma işlemine tabi olmalıdır. Ancak bu değiş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 sabit olmalıdır ancak bu kısıtlama ileride 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 olarak None değeridir
Bir kümenin doğrudan öğelerinin listesi.
order dize; varsayılan değer "default"
Yeni depset için tarama stratejisi. Olası değerler için buraya bakın.
transitive Depset dizisi veya None; varsayılan değer None
Öğeleri, depsetin dolaylı öğeleri olacak depsetlerin listesi.

existing_rule

unknown existing_rule(name)

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

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

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

Sonuçtaki değerler, ö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' veya farklı bir paketteki hedefler için '//pkg:name' biçiminde dizeler halinde dönüştürülür.
  • Listeler delikler olarak temsil edilir ve dikteler yeni, değişebilen diktelere dönüştürülür. Bunların öğeleri aynı şekilde yinelemeli bir şekilde dönüştürülür.
  • select değerleri, içerikleri yukarıda açıklandığı şekilde dönüştürülmüş olarak döndürülür.
  • Kuralın oluşturulması sırasında değeri belirtilmeyen ve varsayılan değeri hesaplanan özellikler sonuçtan hariç tutulur. (Hesaplanmış varsayılan değerler, analiz aşamasına kadar hesaplanamaz.).

Mümkünse bu işlevi yalnızca kural nihaileştirici sembolik makrolarını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ılacaktır. Bu işlev, BUILD dosyalarını kırılgan ve sıraya bağımlı hale getirir. Ayrıca, bu koşulun, dahili formdan Starlark'a kural özelliği değerlerini içeren diğer iki dönüşümden (biri hesaplanan varsayılanlar, diğeri ise ctx.attr.foo tarafından kullanılan) arasında belli bir fark olmadığını unutmayın.

Parametreler

Parametre Açıklama
name dize; gerekli
Hedefin adı.

existing_rules

unknown existing_rules()

Bu ileti dizisinin paketinde şimdiye kadar oluşturulan kuralları açıklayan, değiştirilemeyen 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şmez sözlük benzeri nesne, sözlük benzeri iterasyonu (len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values()) destekleyen, temelden değişmez bir nesne x anlamına gelir.

Mümkünse bu işlevi yalnızca kural nihaileştirici sembolik makrolarını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ılacaktı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/dize; gerekli
Dışa aktarılacak dosyaların listesi.
visibility sequence veya None; varsayılan değer None
Görünürlük beyanı belirtilebilir. Dosyalar, belirtilen hedefler tarafından görülebilir. Görünürlük belirtilmezse dosyalar her paket tarafından görülebilir.
licenses dizelerin sequence veya None; varsayılan olarak 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 liste:
  • include'te en az bir kalıpla eşleşir.
  • exclude (varsayılan []) içindeki kalıpların hiçbiriyle eşleşmez.
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 Dize dizisi; varsayılan değer []
Dahil edilecek genel eşleme kalıplarının listesi.
exclude sequence/dize; varsayılan olarak []
şeklindedir Hariç tutulacak glob kalıplarının listesi.
exclude_directories int; varsayılan olarak 1 şeklindedir
Dizinlerin hariç tutulup tutulmayacağını belirten bir işaret.
allow_empty varsayılan değer unbound
Glob kalıplarının hiçbir şeyle eşleşmesine izin verip vermeyeceğimizi belirtir. "allow_empty" değeri False ise her dahil etme kalıbı bir şeyle eşleşmeli ve nihai sonuç da boş olmamalıdır ("exclude" kalıplarının eşleşmeleri 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 içinde tanımlanmış bir depodaysa 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. module_ctx.modules konumunda görülen module.name alanıyla aynıdır. None değerini döndürebilir.

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 içinde tanımlanmış bir depodaysa 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. module_ctx.modules içinde görülen module.version alanıyla aynıdır. None sonucunu döndürebilir.

package_group

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

Bu işlev, bir paket grubu tanımlar ve gruba bir etiket atar. Etiket, visibility özelliklerinde referans olarak kullanılabilir.

Parametreler

Parametre Açıklama
name dize; zorunlu
Bu kuralın benzersiz adı.
packages Dize dizisi; varsayılan değer []
Bu gruptaki paketlerin tam listesi.
includes Dize dizisi; varsayılan değer []
Bu pakete dahil edilen diğer paket grupları.

package_name

string package_name()

Depo adı olmadan değerlendirilen paketin adı. Örneğin, BUILD dosyasında some/package/BUILD için değer 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.

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 Etiket nesnesine dönüştürür. Giriş zaten bir Label ise değişmeden döndürülür.

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

Bu işlevin sonucu, verilen dizenin BUILD dosyasında tanımlanan bir hedefin etiket değerli özelliğine iletilmesi sonucunda üretilecek Label değeriyle aynıdır.

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

Parametreler

Parametre Açıklama
input dize veya Etiket; zorunlu
Giriş etiketi dizesi veya Etiket nesnesi. Bir Etiket nesnesi geçilirse olduğu gibi döndürülür.

repo_name

string repo_name()

Şu anda değerlendirilmekte olan paketi içeren deponun, @ işareti içermeyen standart adı.

repository_name

string repository_name()

Deneysel. Bu API deneme aşamasındadır ve herhangi bir zamanda değişebilir. Lütfen bu yönteme güvenmeyin. --+incompatible_enable_deprecated_label_apis
Desteklenmiyor olarak ayarlanarak deneysel olarak etkinleştirilebilir. Bunun yerine, repo_name kullanmayı tercih edin. Bu karakter, sahte bir @ işareti içermez ancak diğer açılardan aynı şekilde çalışır.

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

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, config_setting veyarestriction_value örneğini tanımlayan bir Etiket veya 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 paketler

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

Dosya sistemi dizini derinliğinden bağımsız olarak, mevcut paketin her doğrudan alt paketinin yeni ve değiştirilebilir bir listesini döndürür. Döndürülen liste sıralanır ve geçerli 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 tercih etmeniz önerilir.

Parametreler

Parametre Açıklama
include Dize dizisi; zorunlu
Alt paket taramasına dahil edilecek genel eşleme kalıplarının listesi.
exclude Dize dizisi; varsayılan değer []
Alt paket taramasından hariç tutulacak genel ifade kalıplarının 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ı belirtir. Varsayılan olarak boş liste, BUILD dosyasında subpackages() çağrısının çok fazla olduğu olası hatayı gösterir. Doğru değerine ayarlamak, bu işlevin bu durumda başarılı olmasını sağlar.