yerel

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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 (yani kurallar için değil, makrolar için) kullanılabildiğini unutmayın. Özellikler None değerlerini yoksayar ve özelliği 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 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 kullanmayın. 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üşümünden 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 native.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.

Not: Mümkünse bu işlevi kullanmaktan kaçının. 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 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 native.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şiyor.
  • 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 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 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 tarihine kadar 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'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 tarihine kadar iade edilebilir.

package_group

None native.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 native.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.

package_relative_label

Label native.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 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, başında @ işareti olmayan kanonik adı.

repository_name

string native.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 özelliğini kullanmanız önerilir.

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

alt paketler

sequence native.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.