yerel

Sorun bildir Kaynağı görüntüle 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 unutmayın (ör. kural uygulamaları için değil, makrolar için). Özellikler, None değerleri yoksayar ve onları özellik ayarlanmamış gibi ele alır.
Aşağıdaki işlevler de kullanılabilir:

Üyeler

existing_rule

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

--noincompatible_existing_rules_immutable_view işareti ayarlanırsa bunun yerine aynı içeriğe sahip yeni bir değişebilir dikt döndürülür.

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, kural, kural örneğinin name ve kind (örneğin, 'cc_binary') öğeleri 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 dizelere 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 örneklendirmesi sırasında hiçbir değer 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 kullanmaktan kaçının. BUILD dosyalarını kırılabilir ve sıraya bağlı 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 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. Dict 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 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.

--noincompatible_existing_rules_immutable_view işareti ayarlanırsa bunun yerine aynı içeriğe sahip yeni bir değişebilir dikt döndürülür.

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

exports_files

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

Bu pakete ait olan ve 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 olarak None
Görünürlük bildirimi 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 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 Dize dizisi; varsayılan değer []
Hariç tutulacak genel ifade kalıplarının listesi.
exclude_directories varsayılan değer 1'tir.
Dizinlerin hariç tutulup tutulmayacağını belirtir.
allow_empty varsayılan değer unbound şeklindedir
Glob kalıplarının hiçbir şeyle eşleşmemesine izin verip vermediğ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 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 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şkilendirilmiş Bazel modülünün sürümü. 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 sürümüdür. module_ctx.modules konumunda görülen module.version alanıyla aynıdır. None sonucunu döndürebilir.

package_group

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

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

Parametreler

Parametre Açıklama
name required
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()

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. Bu işlev, kullanımdan kaldırılan PACKAGE_NAME değişkenine eşdeğerdir.

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 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 bir BUILD dosyası ve doğrudan veya dolaylı olarak çağırdığı makrolar değerlendirilirken çağrılabilir; (ör.) kural uygulama işlevinde çağrılamaz.

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 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; gerekli
Giriş etiketi dizesi veya Etiket nesnesi. Bir Etiket nesnesi geçilirse olduğu gibi döndürülür.

repository_name

string native.repository_name()

Kuralın veya derleme uzantısının çağrıldığı deponun 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. Bu işlev, kullanımdan kaldırılan REPOSITORY_NAME değişkenine eşdeğerdir.

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 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 tercih etmeniz önerilir.

Parametreler

Parametre Açıklama
include sequence of dize; required
Alt paket taramasına dahil edilecek glob 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 varsayılan değerdir: False
Çağrının boş liste döndürdüğü durumlarda başarısız olup olmayacağı. 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 işlevin bu durumda başarılı olmasını sağlar.