yerel

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 (ör. makrolar için, kural uygulamaları için değil) unutmayın. Özellikler, None değerlerini yoksayar ve bunları, özellik ayarlanmamış gibi kabul eder.
Ayrıca şu işlevler kullanılabilir:

Üyeler

existing_rule

unknown native.existing_rule(name)

Bu iş parçacığının paketinde somutlaşan bir kuralın özelliklerini açıklayan sabit, dikte benzeri bir nesne veya bu adın herhangi bir kural örneği yoksa None döndürür.

Burada, değişmez dikte benzeri bir nesne, dikte benzeri yinelemeyi destekleyen, son derece sabit bir x nesnesi anlamına gelir. Bu nesne, len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values() anlamına gelir.

--noincompatible_existing_rules_immutable_view işareti ayarlanmışsa bunun yerine, aynı içeriğe sahip yeni bir değişken komut döndürür.

Sonuç, gizli özellikler (adları harfle başlamayan) ve temsil edilemeyen birkaç eski özellik türü dışında her özellik için bir giriş içerir. Dict ayrıca, kural örneğinin name ve kind (örneğin, 'cc_binary') ile ilgili girişler de 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' veya farklı bir paketteki hedefler için '//pkg:name' biçiminde dizelere dönüştürülür.
  • Listeler tuple'lar olarak temsil edilir ve dikteler yeni, değişebilir komutlara dönüştürülür. Öğelerin öğeleri aynı şekilde yinelemeli olarak dönüştürülür.
  • select değerleri, içerikleri yukarıda açıklandığı gibi dönüştürülerek döndürülür.
  • Kural örneklendirmesi sırasında herhangi bir değer belirtilmemiş ve varsayılan değeri hesaplanan özellikler sonuçtan hariç tutulur. (Hesaplanan varsayılan değerler, analiz aşamasına kadar hesaplanamaz.)

Mümkünse bu işlevi kullanmaktan kaçının. BUILD dosyalarını kırılgan ve sıraya bağımlı hale getirir. Ayrıca, bu metriğin dahili biçimden Starlark'a ait diğer iki kural özelliği değeri dönüşümünden biraz farklı olduğuna dikkat edin: bir tanesi hesaplanan varsayılanlar tarafından, diğeri ctx.attr.foo tarafından kullanılır.

Parametreler

Parametre Açıklama
name gerekli
Hedefin adı.

existing_rules

unknown native.existing_rules()

Bu iş parçacığının paketinde o ana kadar gösterilen kuralları açıklayan sabit, dikte benzeri bir nesne döndürür. Dikte benzeri nesnenin her girişi, kural örneğinin adını existing_rule(name) tarafından döndürülecek sonuçla eşleştirir.

Burada, değişmez dikte benzeri bir nesne, dikte benzeri yinelemeyi destekleyen, son derece sabit bir x nesnesi anlamına gelir. Bu nesne, len(x), name in x, x[name], x.get(name), x.items(), x.keys() ve x.values() anlamına gelir.

--noincompatible_existing_rules_immutable_view işareti ayarlanmışsa bunun yerine, aynı içeriğe sahip yeni bir değişken komut döndürür.

Not: Mümkünse bu işlevi kullanmaktan kaçının. BUILD dosyalarını kırılgan ve sıraya bağımlı hale getirir. Ayrıca, --noincompatible_existing_rules_immutable_view işareti ayarlanmışsa bu işlev, özellikle de döngü içinde çağrıldığında çok pahalı olabilir.

exports_files

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

Diğer paketlere aktarılan, bu pakete ait dosyaların listesini belirtir.

Parametreler

Parametre Açıklama
srcs sequence of strings; zorunlu
Dışa aktarılacak dosyaların listesi.
visibility sequence; or None; varsayılan = Yok
Görünürlük bildirimi belirtilebilir. Dosyalar, belirtilen hedeflere görünür olacak. Görünürlük belirtilmezse dosyalar her paket tarafından görülebilir.
licenses sequence of strings; or None; varsayılan = Yok
Belirtilecek lisanslar.

yerküre

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

Glob, mevcut paketteki her dosyanın yeni, değişebilir, sıralanmış listesini döndürür:
  • include içindeki en az bir kalıpla eşleşiyor.
  • exclude içindeki kalıpların hiçbiriyle eşleşmiyor (varsayılan []).
exclude_directories bağımsız değişkeni etkinleştirilirse (1 değerine ayarlanır) dizin türündeki dosyalar sonuçlardan çıkarılır (varsayılan 1).

Parametreler

Parametre Açıklama
include sequence of strings; default = []
Dahil edilecek glob kalıplarının listesi.
exclude sequence of strings; default = []
Hariç tutulacak glob kalıpları listesi.
exclude_directories default = 1
Dizinlerin hariç tutulup tutulmayacağına dair bir işaret.
allow_empty default = unbound
Glob kalıplarının hiçbir şeyle eşleşmemesine izin verilip verilmeyeceği. "allow_empty" Yanlış değerine ayarlanırsa her bağımsız içerme kalıbı bir şeyle eşleşmelidir ve nihai sonuç da boş olmamalıdır ("hariç tut" 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 içinde tanımlanan bir depodan geliyorsa bu alan boş olur. Modül uzantıları tarafından oluşturulan kod 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ı ile aynıdır. None iade edilebilir.

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ımlanan bir depodan geliyorsa bu alan boş olur. Modül uzantıları tarafından oluşturulan kod 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ı ile aynıdır. None iade edilebilir.

package_group

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

Bu işlev, bir paket kümesi tanımlar ve gruba bir etiket atar. Etikete visibility özelliklerinde başvurulabilir.

Parametreler

Parametre Açıklama
name gerekli
Bu kural için benzersiz ad.
packages sequence of strings; default = []
Bu gruptaki paketlerin tam listesi.
includes sequence of strings; default = []
Buna dahil olan diğer paket grupları.

package_name

string native.package_name()

Değerlendirilmekte olan paketin adı, depo adı olmadan. Örneğin, some/package/BUILD DERLEME dosyasının değeri some/package olur. DERLEME dosyası, .bzl dosyasında tanımlı bir işlevi çağırırsa package_name(), çağrıyı yapan BUILD dosya paketiyle eşleşir.

package_relative_label

Label native.package_relative_label(input)

Girdi dizesini, başlatılmakta olan paket bağlamında (yani geçerli makronun çalıştırı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 DERLEME 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, belirtilen dizenin DERLEME dosyasında tanımlanan bir 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() ürününün BUILD dosyasının paketini değil, kendisini çağıran .bzl dosyasının paketinin bağlamını kullanmasıdır. Derleyici gibi makroya sabit bir şekilde kodlanan sabit bir hedefe başvurmanız gerektiğinde Label() kullanın. BUILD dosyası tarafından sağlanan bir etiket dizesini bir Label nesnesine normalleştirmeniz gerektiğinde package_relative_label() kullanın. (Bir dizeyi, BUILD dosyası veya çağıran .bzl dosyası dışında bir paket bağlamında Label öğesine dönüştürmenin bir yolu yoktur. Bu nedenle, dış makrolar Etiket nesnelerini her zaman etiket dizeleri yerine iç makrolara geçirmeyi tercih etmelidir.)

Parametreler

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

repo_name

string native.repo_name()

Şu anda değerlendirilmekte olan, başında AT-sign olmadan, paketi içeren deponun standart adı.

repository_name

string native.repository_name()

Deneysel. Bu API deneyseldir ve herhangi bir zamanda değiştirilebilir. Lütfen bu özelliğe güvenmeyin. --+incompatible_enable_deprecated_label_apis
Desteği sonlandırıldı olarak ayarlanarak deneysel olarak etkinleştirilebilir. Bunun yerine, başında sahte önde gelen ancak aynı şekilde davranan repo_name kullanmayı tercih edin.

Şu anda değerlendirilmekte olan paketi içeren deponun, önek olarak tek bir işaret (@) eklenmiş şekilde standart adı. Örneğin, WORKSPACE Stanza local_repository(name='local', path=...) ile çağrılan paketlerde @local olarak ayarlanır. Ana depodaki paketlerde @ olarak ayarlanır.

alt paketler

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

Dosya sistemi dizini derinliğinden bağımsız olarak, geçerli paketin her doğrudan alt paketinin yeni bir değişken 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öntemlerin kullanılması önerilir.

Parametreler

Parametre Açıklama
include sequence of strings; zorunlu
Alt paket taramasına dahil edilecek glob kalıplarının listesi.
exclude sequence of strings; default = []
Alt paket taramasından hariç tutulacak glob kalıplarının listesi.
allow_empty default = False
Çağrı boş bir liste döndürdüğünde başarısız olup olmadığımız. Varsayılan olarak boş liste, DERLEME dosyasında subpackages() çağrısının aşırı yüksek olduğu olası hatayı gösterir. Doğru değerine ayarlamak, bu işlevin bu durumda başarılı olmasına olanak tanır.