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
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- alt paketler
existing_rule
unknown native.existing_rule(name)
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()
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)
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)
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 şeklindedirGlob 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()
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()
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=[])
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()
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)
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()
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)
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. |