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ğerlerini yok sayar ve bunları özellik ayarlanmamış gibi değerlendirir.Aşağıdaki işlevler de kullanılabilir:
Üyeler
- existing_rule
- existing_rules
- exports_files
- glob
- package_group
- package_name
- package_relative_label
- repository_name
- subpackages
existing_rule
unknown native.existing_rule(name)Bu iş parçacığının paketinde örneklenen bir kuralın özelliklerini açıklayan, dict benzeri bir nesne veya bu ada sahip herhangi 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 ayarlanmışsa bunun yerine aynı içeriğe sahip yeni bir değiştirilebilir sözlük döndürülür.
Sonuç, gizli olanlar (adları harfle başlamayan) ve bazı temsil edilemeyen eski özellik türleri hariç her bir özellik için bir giriş içerir. Ayrıca sözlük, kural örneğinin name
ve kind
(örneğin, 'cc_binary'
) değerleri 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ın oluşturulması sırasında değeri 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
|
zorunlu 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 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ı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)Bu pakete ait olan ve diğer paketlere aktarılan dosyaların listesini belirtir.
Parametreler
Parametre | Açıklama |
---|---|
srcs
|
sequence of strings ;
gerekliDış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 ;
varsayılan = YokBelirtilecek 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
|
sequence of strings ;
default = []Dahil edilecek glob kalıplarının 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 = unbound Glob kalıplarının hiçbir şeyle eşleşmesine izin verip vermeyeceğ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). |
package_group
None native.package_group(name, packages=[], includes=[])Bu işlev bir paket kümesini tanımlar ve gruba bir etiket atar. Etikete,
visibility
özelliklerinde referans verilebilir.
Parametreler
Parametre | Açıklama |
---|---|
name
|
zorunlu Bu kuralın benzersiz adı. |
packages
|
sequence of strings ;
varsayılan = []Bu gruptaki paketlerin tam listesi. |
includes
|
sequence of strings ;
varsayılan = []Buna dahil olan diğer paket grupları. |
package_name
string native.package_name()Değerlendirilen paketin adı. Örneğin,
some/package/BUILD
BUILD dosyasında değeri some/package
olur. BUILD dosyası bir .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, o anda başlatılmakta olan paketin (yani, geçerli 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 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ılamayabilir.
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()
işlevinin BUILD
dosyasının paketini değil, onu çağıran .bzl
dosyasının paketinin bağlamını 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 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 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ığı deposunun adı. Örneğin, WORKSPACE dizeleriyle
local_repository(name='local', path=...)
çağrıştıran paketlerde bu değer @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 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öntemlerin kullanılmasını tercih etmeniz önerilir.
Parametreler
Parametre | Açıklama |
---|---|
include
|
sequence of strings ;
gerekliAlt paket taramasına dahil edilecek glob kalıplarının listesi. |
exclude
|
sequence of strings ;
varsayılan = []Alt paket taramasından hariç tutulacak glob kalıplarının listesi. |
allow_empty
|
varsayılan = Yanlış Çağrı, boş bir liste döndürürse başarısız olup olmayacağımız. Varsayılan olarak boş liste, BUILD dosyasında subpackages() çağrısının gereksiz olduğu olası hatayı gösterir. Doğru değerine ayarlamak, bu işlevin bu durumda başarılı olmasını sağlar. |