DERLEME dosyaları

. Sorun bildir Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

. BUILD dosyalarında kullanılabilen yöntemler. Ayrıca DERLE dosyalarında da kullanılabilecek ek işlevler ve oluşturma kuralları için Build Ansiklopedisi Oluşturma konusuna göz atın.

Üyeler

çökmüş

depset depset(direct=None, order="default", *, transitive=None)

depset oluşturur. direct parametresi, depset'in doğrudan öğelerinin listesidir. transitive parametresi ise öğeleri, oluşturulan görüntünün dolaylı öğeleri haline gelen depset'lerin listesidir. Depset bir listeye dönüştürüldüğünde öğelerin döndürülme sırası order parametresiyle belirtilir. Daha fazla bilgi için Depsise genel bakış başlıklı makaleyi inceleyin.

Bir kümenin tüm öğeleri (doğrudan ve dolaylı), type(x) ifadesiyle elde edilenle aynı türde olmalıdır.

Yineleme sırasında yinelemeleri ortadan kaldırmak için karma tabanlı bir küme kullanıldığından, kümedeki tüm öğeler karma hale getirilebilir olmalıdır. Ancak bu değişken, şu anda tüm kurucularda tutarlı bir şekilde kontrol edilmemektedir. Tutarlı denetim sağlamak için --incompliance_always_check_depset_elements işaretini kullanın; bu, gelecekteki sürümlerde varsayılan davranış olacaktır. Sorun 10313'e bakın.

Ayrıca, öğeler şu anda sabit olmalıdır ancak bu kısıtlama ileride gevşetilecektir.

Oluşturulan depsetin sırası, transitive depsetlerinin sırasıyla uyumlu olmalıdır. "default" siparişi diğer siparişlerle uyumludur, diğer tüm siparişler yalnızca kendileri ile uyumludur.

Parametreler

Parametre Açıklama
direct sequence; veya None; varsayılan değer: None
Bir kümenin doğrudan öğelerinin listesi.
order varsayılan değer "default"
Yeni konsol için geçiş stratejisi. Olası değerler için buraya bakın.
transitive sequence of depset'ler; veya None; varsayılan değer None
Öğeleri, derinliğin dolaylı öğeleri haline gelecek olan depset'lerin listesi.

existing_rule

unknown 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 ayarlanırsa bunun yerine aynı içeriğe sahip yeni bir değişken bir dikt 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, kural, kural örneğinin name ve kind (örneğin, 'cc_binary') öğeleri için girişler içerir.

Sonucun değerleri, özellik değerlerini şu şekilde 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şebilir 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ığı gibi dönüştürülerek 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. (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ı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 existing_rules()

Bu iş parçacığının paketinde o ana kadar örneklendirilen 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şken bir 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 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 dize; gerekli
Dışa aktarılacak dosyaların listesi.
visibility sequence; veya None; varsayılan değer: None
Gö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 dize; veya None; varsayılan değer None
Belirtilecek lisanslar.

glob

sequence 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 içindeki en az bir kalıpla eşleşiyor.
  • exclude içindeki kalıpların hiçbiriyle eşleşmiyor (varsayılan []).
ziyaret edin. 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 olarak 1).

Parametreler

Parametre Açıklama
include sequence of dize; varsayılan değer []
Dahil edilecek glob kalıplarının listesi.
exclude sequence of dize; varsayılan değer []
Hariç tutulacak glob kalıplarının listesi.
exclude_directories varsayılan değer 1
Dizinlerin hariç tutulup tutulmayacağını belirten bir işaret.
allow_empty varsayılan değer unbound
Glob kalıplarının hiçbir şeyle eşleşmemesine izin verip vermediğimiz. "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 module_name()

Bu paketin içinde bulunduğu depoyla ilişkilendirilmiş Bazel modülünün adı. Bu paket MODULE.bazel yerine WORKSPACE'te tanımlanan bir depodan geliyorsa bu alan boş olur. Modül uzantıları tarafından oluşturulan depolarda bu, uzantıyı barındıran modülün adıdır. module_ctx.modules konumunda görülen module.name alanıyla aynıdır. None sonucunu döndürebilir.

module_version

string 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 alan 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 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 dize; varsayılan değer []
Bu gruptaki paketlerin tam listesi.
includes sequence of dize; varsayılan değer []
Buna dahil olan diğer paket grupları.

package_name

string package_name()

Değerlendirilen paketin adı. Örneğin, some/package/BUILD BUILD dosyasında değeri some/package olur. BUILD 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ğerdir.

package_relative_label

Label package_relative_label(input)

Giriş dizesini, o anda başlatılmakta olan paket (yani, geçerli makronun yürütüldüğü BUILD dosyası) bağlamında 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 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, belirtilen dizenin BUILD dosyasında bildirilen hedefin etiket değerli özelliğine geçirilmesiyle elde edilecek Label değeriyle aynıdır.

Kullanım notu: Bu işlev ile Label() arasındaki fark Label() özelliğinin BUILD dosyasının paketini değil, onu çağıran .bzl dosyasının paketinin bağlamını kullanmasıdır. Derleyici gibi makroya sabit kodlu bir hedefe referans vermeniz gerektiğinde Label() kullanın. BUILD dosyası tarafından bir Label nesnesine sağlanan etiket dizesini normalleştirmeniz gerektiğinde package_relative_label() kullanın. (Bir dize, BUILD dosyası veya çağrı yapan .bzl dosyası dışında bir paket bağlamındaki bağlamda Label öğesine dönüştürülemez. Bu nedenle, dış makrolar Etiket nesnelerini her zaman etiket dizeleri yerine iç makrolara geçirmeyi tercih etmelidir.)

Parametreler

Parametre Açıklama
input string; 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 repository_name()

Kuralın veya derleme uzantısının çağrıldığı deponun adı. Örneğin, WORKSPACE local_repository(name='local', path=...) ifadesiyle var olmaya çağrılan 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.

seç

unknown select(x, no_match_error='')

select(), kural özelliğini yapılandırılabilir hale getiren yardımcı işlevdir. Ayrıntılar için ansiklopedi oluşturma bölümüne bakın.

Parametreler

Parametre Açıklama
x zorunlu
Yapılandırma koşullarını değerlerle eşleyen bir dikte. Her anahtar, config_setting veyarestriction_value örneğini tanımlayan bir Etiket veya etiket dizesidir. Dize yerine bir Etiketin ne zaman kullanılacağı hakkında bilgi edinmek için makrolarla ilgili dokümanlara bakın.
no_match_error varsayılan değer ''
Hiçbir koşul eşleşmezse bildirilecek isteğe bağlı özel hata.

alt paketler

sequence 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 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öntemlerin kullanılmasını tercih etmeniz önerilir.

Parametreler

Parametre Açıklama
include sequence of dize; gerekli
Alt paket taramasına dahil edilecek glob kalıplarının listesi.
exclude sequence of dize; varsayılan değer []
Alt paket taramasından hariç tutulacak glob kalıplarının listesi.
allow_empty varsayılan değer False
Ç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 çok fazla olduğu olası hatayı gösterir. Politika "true" (doğru) değerine ayarlanırsa bu işlev söz konusu durumda başarılı olur.