yerel

Sorun bildir Kaynağı görüntüleyin Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Yerel kuralları ve diğer paket yardımcı işlevlerini destekleyen yerleşik bir modül. Tüm yerel kurallar bu modülde işlev olarak görünür (ör. native.cc_library). Yerel modülün yalnızca yükleme aşamasında kullanılabildiğini (yani kural uygulamalarında değil, makrolar için) unutmayın. Özellikler, None değerlerini yok sayar ve bunları özellik ayarlanmamış gibi değerlendirir.
Aşağıdaki işlevler de kullanılabilir:

Üyeler

existing_rule

unknown native.existing_rule(name)

Bu iş parçacığının paketinde örneklenen bir kuralın özelliklerini açıklayan, dict benzeri bir nesne veya bu ada sahip herhangi bir kural örneği yoksa None döndürür.

Burada dikkat benzeri sabit nesne, dikt benzeri yinelemeyi destekleyen x, tamamen sabit olmayan nesne x, len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values() 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ünde özellikler olduğu gibi temsil edilir.
  • 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 tuple olarak, sözlükler ise yeni ve değiştirilebilir sözlüklere dönüştürülür. Öğeleri de aynı şekilde yinelemeli olarak 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 dosyasını kırılgan ve sıraya bağlı hale getirir. Ayrıca, kural özelliği değerlerinin dahili biçimden Starlark'a yapılan diğer iki dönüşümden farklı olduğuna dikkat edin: Biri hesaplanmış varsayılanlar tarafından, diğeri ctx.attr.foo tarafından kullanılır.

Parametreler

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

existing_rules

unknown native.existing_rules()

Bu iş parçacığının paketinde şimdiye kadar örneklenen kuralları açıklayan, dikt benzeri bir 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 sonlandırıcı 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 native.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 Dize dizisi; zorunlu
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 Dize dizisi veya None; varsayılan değer None
Belirtilecek lisanslar.

glob

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

Glob, geçerli paketteki her dosya için aşağıdaki özelliklere sahip yeni, değişebilir, sıralanmış bir liste döndürür:
  • 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 değer 1
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 native.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 boş olur. 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 içinde görülen module.name alanıyla aynıdır. None değerini döndürebilir.

module_version

string native.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 değerini döndürebilir.

package_group

None native.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 dizelerin sequence'ı; varsayılan olarak []
Buna dahil olan diğer paket gruplarıdır.

package_name

string native.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 native.package_relative_label(input)

Giriş dizesini, o anda başlatılmakta olan paket (yani, geçerli makronun yürütüldüğü BUILD dosyası) bağlamında bir Label nesnesine dönüştürür. Giriş zaten Label ise değiştirilmemiş olarak 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, belirtilen dizenin BUILD dosyasında bildirilen hedefin etiket değerli özelliğine geçirilmesiyle elde edilecek 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. Derleyici gibi makroya sabit kodlu bir hedefe referans vermeniz gerektiğinde Label() kullanın. BUILD dosyası tarafından bir Label nesnesine sağlanan etiket dizesini normalleştirmeniz gerektiğinde package_relative_label() kullanın. (BUILD dosyası veya çağıran .bzl dosyası dışında bir paket bağlamında bir dizeyi Label olarak dönüştürmenin bir yolu yoktur. 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 Label nesnesi iletilirse olduğu gibi döndürülür.

repo_name

string native.repo_name()

Şu anda değerlendirilmekte olan paketi içeren deponun, önde gelen işaret işaretleri olmadan standart adı.

repository_name

string native.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 depoda bulunan paketlerde bu değer @ olarak ayarlanır.

alt paketler

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

Dosya sistemi dizin derinliğinden bağımsız olarak, geçerli paketin her doğrudan alt paketinin yeni bir değişebilir 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 gereksiz olduğu potansiyel hatayı gösterir. Doğru değerine ayarlamak, bu durumda bu işlevin başarılı olmasını sağlar.