native.cc_library
). Yerel modülün yalnızca yükleme aşamasında kullanılabildiğini (yani kural uygulamalarında değil, makrolar için) unutmayın. Ö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)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 değişmez sözlük benzeri nesne, sözlük benzeri iterasyonu (len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
ve x.values()
) destekleyen, temelden değişmez bir nesne x
anlamına gelir.
--noincompatible_existing_rules_immutable_view
işareti ayarlanmışsa bunun yerine aynı içeriğe sahip yeni bir değiştirilebilir sözlük 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ünde özellikler olduğu gibi temsil edilir.
- Etiketler, aynı paketteki hedefler için
':foo'
veya farklı bir paketteki hedefler için'//pkg:name'
biçiminde dizeler halinde dönüştürülür. - Listeler tuple olarak, sözlükler ise yeni ve değiştirilebilir sözlüklere dönüştürülür. Öğeleri de aynı şekilde yinelemeli olarak 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ın oluşturulması sırasında değeri belirtilmeyen ve varsayılan değeri hesaplanan özellikler sonuçtan hariç tutulur. (Hesaplanan varsayılan ayarlar 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, kural özelliği değerlerinin dahili biçimden Starlark'a yapılan diğer iki dönüşümden farklı olduğuna dikkat edin: Biri hesaplanmış varsayılanlar tarafından, diğeri ctx.attr.foo
tarafından kullanılır.
Parametreler
Parametre | Açıklama |
---|---|
name
|
required Hedefin adı. |
existing_rules
unknown native.existing_rules()Bu ileti dizisinin paketinde şimdiye kadar oluşturulan kuralları açıklayan, değiştirilemeyen 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şmez sözlük benzeri nesne, sözlük benzeri iterasyonu (len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
ve x.values()
) destekleyen, temelden değişmez bir nesne x
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 olup diğer paketlere aktarılan dosyaların listesini belirtir.
Parametreler
Parametre | Açıklama |
---|---|
srcs
|
sequence of strings ;
zorunluDışa aktarılacak dosyaların listesi. |
visibility
|
sequence; or None ;
default = NoneGörünürlük beyanı belirtilebilir. Dosyalar, belirtilen hedefler tarafından görülebilir. Görünürlük belirtilmezse dosyalar her paket tarafından görülebilir. |
licenses
|
sequence of strings; or None ;
default = YokBelirtilecek 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 liste:
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
|
sequence of strings ;
default = []Dahil edilecek glob kalıpları listesi. |
exclude
|
sequence of strings ;
default = []Hariç tutulacak genel ifade kalıplarının listesi. |
exclude_directories
|
varsayılan = 1 Dizinlerin hariç tutulup tutulmayacağını belirten bir işaret. |
allow_empty
|
default = sınırsız Glob kalıplarının hiçbir şeyle eşleşmemesine izin verip vermediğimizi belirtir. "allow_boş" Yanlış değerine ayarlanırsa her bağımsız dahil etme kalıbı bir öğeyle eşleşmeli ve nihai sonuç boş olmamalıdır ("hariç_tutulan" kalıplarıyla eşleşmeler hariç tutulduktan sonra). |
module_name
string native.module_name()Bu paketin içinde bulunduğu depoyla ilişkilendirilmiş 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 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 sürümüdür.
module_ctx.modules
içinde görülen module.version
alanıyla aynıdır.
None
değerini döndürebilir.
package_group
None native.package_group(name, packages=[], includes=[])Bu işlev, bir paket grubu tanımlar ve gruba bir etiket atar. Etiket,
visibility
özelliklerinde referans olarak kullanılabilir.
Parametreler
Parametre | Açıklama |
---|---|
name
|
gerekli Bu kuralın 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ğ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 sağlanan bir etiket dizesini Label
nesnesine 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 Etiket nesnelerini her zaman etiket dizeleri yerine iç makrolara geçirmeyi tercih etmelidir.)
Parametreler
Parametre | Açıklama |
---|---|
input
|
string; or Label ;
gerekliGiriş etiketi dizesi veya Etiket nesnesi. Bir Label nesnesi iletilirse 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ığı deposunun adı. Örneğin, WORKSPACE kıtası tarafından oluşturulan paketlerde
local_repository(name='local', path=...)
, @local
olarak ayarlanır. Ana depoda bulunan paketlerde bu değer @
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 dizini derinliğinden bağımsız olarak, mevcut paketin her doğrudan alt paketinin yeni ve değiştirilebilir bir 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 strings ;
zorunluAlt paket taramasına dahil edilecek genelleme 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ının boş bir liste döndürmesi durumunda başarısız olup olmayacağımızı belirtir. Varsayılan olarak boş liste, BUILD dosyasında subpackages() çağrısının çok fazla olduğu olası hatayı gösterir. Doğru değerine ayarlamak, bu işlevin bu durumda başarılı olmasını sağlar. |