yerel

Sorun bildirin Kaynağı göster

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. makrolar için, kural uygulamaları için kullanılamaz). Özellikler, None değerlerini yok sayar ve bunları özellik ayarlanmamış gibi kabul eder.
Aşağıdaki işlevler de 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 ada ait herhangi bir kural örneği yoksa None döndürür.

Burada, dikte benzeri bir nesne, dikte gibi 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ç, özel özellikler (adı bir harfle başlamayan) ve temsil edilemeyen birkaç eski özellik türü hariç olmak üzere her özellik için bir giriş içerir. Ayrıca, kural örneğinin name ve kind (örneğin, 'cc_binary') için girişler de içerir.

Sonucun değerleri, özellik değerlerini aşağıdaki gibi temsil eder:

  • str, int ve bool türleri 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 olarak temsil edilir ve dikteler yeni, değişebilir komutlara dönüştürülür. Bunların öğeleri yinelemeli olarak aynı şekilde 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 belirtilmeyen 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, bir tanesi hesaplanmış varsayılanlar tarafından, diğeri ctx.attr.foo tarafından kullanılan, dahili formdan Starlark'a yapılan kural özelliği değerlerinin diğer iki dönüşümünden çok küçük farkları olduğunu 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 somutlaşan kuralları açıklayan sabit bir dikt benzeri nesne döndürür. Dikt benzeri nesnenin her bir girişi, kural örneğinin adını existing_rule(name) tarafından döndürülecek sonuçla eşleştirir.

Burada, dikte benzeri bir nesne, dikte gibi 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 bir 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 dize'nin sequence; gerekli
Dışa aktarılacak dosyaların listesi.
visibility sequence veya None; varsayılan olarak None değeridir
Bir 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 dize'nin sekansı veya None; varsayılan olarak None
Belirtilecek lisans sayısı.

glob

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

Glob, geçerli pakette bulunan ve aşağıdaki özelliklere sahip her dosyanın yeni, değişebilir, sıralanmış listesini döndürür:
  • include içinde 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 etkinse (1 olarak ayarlanır) dizin türündeki dosyalar sonuçlardan çıkarılır (varsayılan 1).

Parametreler

Parametre Açıklama
include dize'nin sequence; varsayılan değeri []
Dahil edilecek glob kalıpları listesi.
exclude dize'nin sequence; varsayılan değeri []
Hariç tutulacak glob kalıpları listesi.
exclude_directories varsayılan değer: 1
Dizinlerin hariç tutulup tutulmayacağına dair bir işaret.
allow_empty varsayılan değer unbound şeklindedir
Glob kalıplarının hiçbir şeyle eşleşmemesine izin verilip verilmeyeceği. "allow_Blank" değeri Yanlış değerine ayarlanırsa her bir dahil etme 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ımlanmış bir depodan geliyorsa bu alan 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 özelliğinde görülen module.name alanı ile aynıdır. None cihazı döndürülebilir.

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 depodan geliyorsa bu alan boş olur. Modül uzantıları tarafından oluşturulan depolar için bu, modülün uzantıyı barındıran sürümüdür. module_ctx.modules özelliğinde görülen module.version alanı ile aynıdır. None cihazı döndürülebilir.

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 referans verilebilir.

Parametreler

Parametre Açıklama
name gerekli
Bu kural için benzersiz ad.
packages string'in sequence; varsayılan değeri []
Bu gruptaki paketlerin tam sıralaması.
includes dize'nin sequence; varsayılan değeri []
Buna dahil edilen diğer paket grupları.

package_name

string native.package_name()

Değerlendirilen paketin adı. Örneğin, some/package/BUILD DERLEME dosyasının değeri some/package olur. DERLEME dosyası, .bzl dosyasında tanımlanmış bir işlevi çağırırsa package_name(), çağrıyı yapan BUILD dosya paketiyle eşleşir. Bu işlev, kullanımdan kaldırılan PACKAGE_NAME değişkenine eşdeğer.

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 Label ise değiştirilmeden döndürülür.

Bu işlev yalnızca DERLEME dosyası ve doğrudan veya dolaylı olarak çağırdığı makroları değerlendirirken ç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 bir özelliğine geçirilmesiyle elde edilecek olan 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, onu çağıran .bzl dosyasının paketinin bağlamını kullanmasıdır. Derleyici gibi koda gömülmüş sabit bir hedefe başvurmanız gerektiğinde Label() kullanın. DERLEME dosyası tarafından bir Label nesnesine sağlanan etiket dizesini normalleştirmeniz gerektiğinde package_relative_label() kullanın. (Bir dizeyi, DERLEME dosyası veya çağıran .bzl dosyası dışında bir paket bağlamında Label öğesine dönüştürmenin yolu yoktur. Bu nedenle, dış makrolar her zaman Etiket nesnelerini etiket dizeleri yerine iç makrolara geçirmeyi tercih etmelidir.)

Parametreler

Parametre Açıklama
input string veya Label; zorunlu
Giriş etiketi dizesi veya Etiket nesnesi. Bir Etiket nesnesi aktarılırsa 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ı local_repository(name='local', path=...) ile çağrılan paketlerde, @local olarak ayarlanır. Ana depodaki paketlerde @ olarak ayarlanır. Bu işlev, kullanımdan kaldırılan REPOSITORY_NAME değişkenine eşdeğer.

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 değişken 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 kullanmayı tercih etmeniz önerilir.

Parametreler

Parametre Açıklama
include string'in sequence; gerekli
Alt paket taramasına dahil edilecek glob kalıplarının listesi.
exclude dize'nin sequence; varsayılan olarak [] şeklindedir
Alt paket taramasından hariç tutulacak glob kalıpları listesi.
allow_empty varsayılan değer: False
Çağrı boş bir liste döndürürse başarısız olup olmadığımız. Varsayılan olarak boş liste, DERLEME dosyasında subpackages() çağrısının aşırı olduğu olası bir hatayı gösterir. Doğru değerine ayarlamak, bu işlevin bu durumda başarılı olmasına olanak tanır.