Bazel Sözlüğü

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

İşlem

Derleme sırasında çalıştırılacak bir komut (ör. yapıları giriş olarak alan ve çıkış olarak başka yapılar üreten bir derleyiciye yapılan çağrı). Komut satırı bağımsız değişkenleri, işlem anahtarı, ortam değişkenleri ve beyan edilen giriş/çıkış yapıtları gibi meta verileri içerir.

Ayrıca: Kurallar dokümanları

İşlem önbelleği

Yürütülen işlemlerin oluşturdukları çıkışlarla eşlemesini depolayan disk üzerinde bir önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlılık modeli için temel bir bileşen. Önbellek, çıkış temel dizininde depolandığı için Bazel sunucusu yeniden başlatıldığında silinmez.

İşlem grafiği

İşlemlerin ve bu işlemlerin okuyup oluşturduğu yapıların bellek içi grafiği. Grafik, kaynak dosyalar olarak (örneğin, dosya sisteminde) bulunan yapay nesnelerin yanı sıra BUILD dosyalarında belirtilmeyen oluşturulmuş ara/son yapay nesneleri de içerebilir. Analiz aşamasında oluşturulur ve uygulama aşamasında kullanılır.

İşlem grafiği sorgusu (aquery)

Derleme işlemleri üzerinde sorgu oluşturabilen bir sorgu aracı. Bu, derleme kurallarının, gerçek derlemelerin yaptığı işe nasıl dönüştüğünü analiz etme olanağı sağlar.

Eylem tuşu

Bir işlemin önbellek anahtarı. İşleme bağlı olarak, işlemde yürütülecek komut, derleyici işaretleri, kitaplık konumları veya sistem üstbilgileri gibi işlem meta verilerine göre hesaplanır. Bazel'in bağımsız işlemleri deterministik olarak önbelleğe almasını veya geçersiz kılmasını sağlar.

Analiz aşaması

Bir derlemenin ikinci aşaması. BUILD dosyalarında belirtilen hedef grafiği işleyerek yürütme aşamasında çalıştırılacak işlemlerin sırasını belirleyen bellek içi bir işlem grafiği oluşturur. Bu aşamada kural uygulamaları değerlendirilir.

Yapı

Kaynak dosya veya oluşturulan dosya. Ağaç yapıları olarak bilinen bir dosya dizini de olabilir.

Bir yapıt birden fazla işlemin girişi olabilir ancak en fazla bir işlem tarafından oluşturulmalıdır.

Bir dosya hedefi ile eşleşen bir yapıt, etiketle ele alınabilir.

En Boy Oranı

Kuralların bağımlılıklarında ek işlemler oluşturmasına olanak tanıyan bir mekanizma. Örneğin, A hedefi B'ye bağlıysa A'da, B'ye bağımlılık kenarı boyunca yukarı doğru ilerleyen ve ek çıktı dosyaları oluşturup toplamak için B'de ek işlemler yürüten bir yön uygulayabilirsiniz. Bu ek işlemler, aynı yönü gerektiren hedefler arasında önbelleğe alınır ve yeniden kullanılır. aspect() Starlark Build API işleviyle oluşturulur. Örneğin, IDE'ler için meta veriler oluşturmak ve linting için işlemler oluşturmak amacıyla kullanılabilir.

Ayrıca: Aspects belgeleri

En-boy oranı

Özelliklerin diğer özelliklerin sonuçlarına uygulanabileceği bir kompozisyon mekanizması. Örneğin, IDE'ler tarafından kullanılmak üzere bilgi oluşturan bir yön, proto'dan .java dosyaları oluşturan bir yönün üzerine uygulanabilir.

A yönünün B yönünün üzerinde uygulanabilmesi için B öğesinin provides özelliğinde reklamını yaptığı sağlayıcılar, A öğesinin required_aspect_providers özelliğinde istediğini belirttiği sağlayıcılarla eşleşmelidir.

Özellik

Hedef başına derleme bilgilerini ifade etmek için kullanılan bir kural parametresi. Hedefin kaynak dosyalarını, bağımlılıklarını ve özel derleyici seçeneklerini sırasıyla bildiren srcs, deps ve copts bu türlere örnek verilebilir. Belirli bir hedef için kullanılabilen özellikler, kural türüne bağlıdır.

.bazelrc

Başlangıç işaretleri ve komut işaretleri için varsayılan değerleri değiştirmek ve Bazel komut satırında --config işareti kullanılarak birlikte ayarlanabilen ortak seçenek gruplarını tanımlamak için kullanılan Bazel'in yapılandırma dosyası. Bazel, birden fazla bazelrc dosyasındaki (sistem genelinde, çalışma alanı başına, kullanıcı başına veya özel bir konumdan) ayarları birleştirebilir ve bir bazelrc dosyası, diğer bazelrc dosyalarındaki ayarları da içe aktarabilir.

Blaze

Bazel'in Google'a özel sürümü. Google'ın tek depolu sistemi için ana derleme sistemi.

BUILD dosyası

BUILD dosyası, Bazel'e hangi yazılım çıkışlarının oluşturulacağını, bunların bağımlılıklarını ve nasıl oluşturulacağını bildiren ana yapılandırma dosyasıdır. Bazel, giriş olarak bir BUILD dosyası alır ve bu dosyayı kullanarak bağımlılık grafiği oluşturur. Ayrıca, ara ve nihai yazılım çıktılarını oluşturmak için tamamlanması gereken işlemleri türetir. BUILD dosyası, bir dizini ve BUILD dosyası içermeyen tüm alt dizinleri paket olarak işaretler ve kurallar tarafından oluşturulan hedefler içerebilir. Dosya, BUILD.bazel olarak da adlandırılabilir.

BUILD.bazel dosyası

BUILD Dosyası başlıklı makaleyi inceleyin. Aynı dizindeki bir BUILD dosyasına göre önceliklidir.

.bzl dosyası

Starlark ile yazılmış kuralları, makroları ve sabitleri tanımlayan bir dosya. Bu dosyalar daha sonra load() işlevi kullanılarak BUILD dosyalarına aktarılabilir.

Grafik oluşturma

Bazel'in derleme gerçekleştirmek için oluşturduğu ve geçtiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve yapılar gibi düğümleri içerir. Bir derleme, istenen bir hedef grubunun bağlı olduğu tüm yapılar güncel olarak doğrulandığında tamamlanmış kabul edilir.

Derleme ayarı

Starlark tarafından tanımlanan bir yapılandırma parçası. Geçişler, bir alt grafiğin yapılandırmasını değiştirmek için oluşturma ayarlarını belirleyebilir. Kullanıcıya komut satırı işareti olarak sunuluyorsa (derleme işareti olarak da bilinir).

Temiz derleme

Önceki derlemelerin sonuçlarını kullanmayan bir derleme. Bu işlem genellikle artımlı derlemeye göre daha yavaştır ancak genellikle daha doğru olduğu düşünülür. Bazel, hem temiz hem de artımlı derlemelerin her zaman doğru olmasını sağlar.

İstemci-sunucu modeli

bazel komut satırı istemcisi, Bazel komutlarını yürütmek için yerel makinede otomatik olarak bir arka plan sunucusu başlatır. Sunucu, komutlar arasında kalıcıdır ancak bir süre işlem yapılmadığında otomatik olarak durur (veya bazel shutdown ile açıkça durdurulur). Bazel'i sunucu ve istemci olarak ayırmak, JVM başlatma süresini amorti etmeye yardımcı olur ve artımlı derlemelerin daha hızlı olmasını sağlar. Bunun nedeni, işlem grafiğinin komutlar arasında bellekte kalmasıdır.

Komut

bazel build, bazel test, bazel run ve bazel query gibi farklı Bazel işlevlerini çağırmak için komut satırında kullanılır.

Komut işaretleri

Bir komuta özgü bir dizi işaret. Komut işaretleri, komuttan sonra (bazel build <command flags>) belirtilir. İşaretler bir veya daha fazla komut için geçerli olabilir. Örneğin, --configure yalnızca bazel sync komutu için kullanılan bir işarettir ancak --keep_going, sync, build, test ve diğerleri için geçerlidir. İşaretler genellikle yapılandırma amacıyla kullanılır. Bu nedenle, işaret değerlerindeki değişiklikler Bazel'in bellek içi grafikleri geçersiz kılmasına ve analiz aşamasını yeniden başlatmasına neden olabilir.

Yapılandırma

Kuralların işlem oluşturma şeklini etkileyen, kural tanımlarının dışındaki bilgiler. Her derlemede, hedef platformu, işlem ortamı değişkenlerini ve komut satırı derleme işaretlerini belirten en az bir yapılandırma bulunur. Geçişler, ana makine araçları veya çapraz derleme gibi ek yapılandırmalar oluşturabilir.

Ayrıca: Yapılandırmalar

Yapılandırmayı kırpma

Yalnızca bir hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını dahil etme işlemi. Örneğin, C++ bağımlılığı //:c olan bir Java ikilisi //:j oluşturursanız --javacopt değerini //:c yapılandırmasına dahil etmek gereksizdir. Çünkü --javacopt değerinin değiştirilmesi, C++ derleme önbelleğinin kullanılabilirliğini gereksiz yere bozar.

Yapılandırılmış sorgu (cquery)

Yapılandırılmış hedefler üzerinde sorgu oluşturan bir sorgu aracı (analiz aşaması tamamlandıktan sonra). Bu, select() ve derleme işaretlerinin (ör. --platforms) sonuçlara doğru şekilde yansıtıldığı anlamına gelir.

Ayrıca: cquery belgeleri

Yapılandırılmış hedef

Hedefin bir yapılandırmayla değerlendirilmesinin sonucu. Analiz aşamasında, derlemenin seçenekleri oluşturulması gereken hedeflerle birleştirilerek bu sonuç elde edilir. Örneğin, //:foo aynı derlemede iki farklı mimari için derleme yapıyorsa iki yapılandırılmış hedefi vardır: <//:foo, x86> ve <//:foo, arm>.

Doğruluk

Bir derlemenin çıktısı, geçişli girişlerinin durumunu doğru şekilde yansıtıyorsa derleme doğrudur. Bazel, doğru derlemeler elde etmek için hermetik, tekrarlanabilir ve derleme analizi ile işlem yürütmeyi deterministik hale getirmeye çalışır.

Bağımlı seçim

İki hedef arasındaki yönlü kenar. //:foo hedefinin özellik değerleri //:bar hedefine referans içeriyorsa //:foo hedefi, //:bar hedefi üzerinde hedef bağımlılığına sahiptir. //:foo içindeki bir işlem, //:bar içindeki bir işlem tarafından oluşturulan bir giriş yapıtına bağlıysa //:foo, //:bar üzerinde işlem bağımlılığına sahiptir.

Belirli bağlamlarda dış bağımlılık anlamına da gelebilir. Modüller bölümüne bakın.

Depset

Geçişli bağımlılıklarla ilgili verileri toplamak için kullanılan bir veri yapısı. Çok büyük bağımlılık kümelerinin (yüz binlerce dosya) olması yaygın olduğundan, bağımlılık kümelerinin birleştirilmesi zaman ve alan açısından verimli olacak şekilde optimize edilmiştir. Alan verimliliği nedeniyle diğer bağımlılık kümelerine yinelemeli olarak başvurmak için uygulanır. Kural uygulamaları, kural derleme grafiğinin en üst düzeyinde olmadığı sürece, bağımlılık kümelerini listelere dönüştürerek "düzleştirmemelidir". Büyük bağımlılık kümelerini düzleştirme işlemi çok fazla bellek tüketir. Bazel'in dahili uygulamasında iç içe yerleştirilmiş kümeler olarak da bilinir.

Ayrıca: Depset belgeleri

Disk önbelleği

Uzak önbelleğe alma özelliği için yerel bir disk üzerinde blob deposu. Gerçek bir uzak blob deposuyla birlikte kullanılabilir.

Distdir

Bazel'in aksi takdirde internetten depo kurallarını kullanarak getireceği dosyaları içeren salt okunur bir dizin. Derlemelerin tamamen çevrimdışı çalışmasını sağlar.

Dinamik yürütme

Yerel ve uzak yürütme arasında seçim yapmak için çeşitli sezgisel yöntemler kullanan ve daha hızlı olan başarılı yöntemin yürütme sonuçlarını kullanan bir yürütme stratejisi. Bazı işlemler yerel olarak daha hızlı yürütülür (ör. bağlama), diğerleri ise uzaktan daha hızlıdır (ör. yüksek oranda paralelleştirilebilir derleme). Dinamik bir yürütme stratejisi, mümkün olan en iyi artımlı ve temiz derleme sürelerini sağlayabilir.

Yürütme aşaması

Yapılandırmanın üçüncü aşaması. Analiz aşamasında oluşturulan işlem grafiğindeki işlemleri yürütür. Bu işlemler, yapıları okumak ve yazmak için yürütülebilir dosyaları (derleyiciler, komut dosyaları) çağırır. Spawn stratejileri, bu işlemlerin nasıl yürütüleceğini (yerel olarak, uzaktan, dinamik olarak, korumalı alanda, Docker'da vb.) kontrol eder.

Yürütme kökü

Yerel işlemlerin sandbox dışı derlemelerde yürütüldüğü çalışma alanının çıkış tabanı dizinindeki bir dizin. Dizin içerikleri çoğunlukla iş alanındaki giriş yapıtlarının sembolik bağlantılarıdır. Yürütme kökü, diğer girişler olarak harici depolara yönelik sembolik bağlantılar ve çıkışları depolamak için bazel-out dizinini de içerir. Yükleme aşamasında, derlemenin bağlı olduğu paketlerin geçişli kapanımını temsil eden dizinlerin sembolik bağlantı ormanı oluşturularak hazırlanır. Komut satırında bazel info execution_root ile erişilebilir.

Dosya

Yapı konusuna bakın.

Hermeticity

Derleme ve test işlemlerinde harici etkiler yoksa derleme hermetiktir. Bu, sonuçların deterministik ve doğru olmasını sağlar. Örneğin, hermetik derlemeler genellikle işlemlere ağ erişimini engeller, bildirilen girişlere erişimi kısıtlar, sabit zaman damgaları ve saat dilimleri kullanır, ortam değişkenlerine erişimi kısıtlar ve rastgele sayı üreteçleri için sabit başlangıç değerleri kullanır.

Artımlı derleme

Artımlı derleme, derleme süresini ve kaynak kullanımını azaltmak için önceki derlemelerin sonuçlarını yeniden kullanır. Bağımlılık kontrolü ve önbelleğe alma, bu tür derlemeler için doğru sonuçlar üretmeyi amaçlar. Artımlı derleme, temiz derlemenin tam tersidir.

Şirket

Bir hedef için tanımlayıcı. Genellikle @repo//path/to/package:target biçimindedir. Burada repo, hedefi içeren deponun (görünür) adıdır, path/to/package, hedefi bildiren BUILD dosyasını içeren dizinin yoludur (bu dizin paket olarak da bilinir) ve target, hedefin adıdır. Duruma bağlı olarak bu söz diziminin bazı bölümleri atlanabilir.

Ayrıca: Etiketler

Yükleme aşaması

Bazel'in BUILD dosyalarını çalıştırarak paketler oluşturduğu derlemenin ilk aşaması. Makrolar ve glob() gibi belirli işlevler bu aşamada değerlendirilir. Hedef grafiği oluşturmak için geliştirme sürecinin ikinci aşaması olan analiz aşaması ile birlikte yürütülür.

Eski makro

Normal bir Starlark işlevi olarak tanımlanan ve BUILD dosyasının yürütülmesinin yan etkisi olarak çalışan bir makro türü.

Eski makrolar, işlevlerin yapabileceği her şeyi yapabilir. Bu nedenle, bu tür yazı tipleri kullanışlı olsa da okunması, yazılması ve kullanılması daha zor olabilir. Eski bir makro, bağımsız değişkenlerini beklenmedik şekilde değiştirebilir veya select() ya da yanlış türde bir bağımsız değişken verildiğinde başarısız olabilir.

Sembolik makrolarla karşılaştırın.

Ayrıca: Eski makro belgeleri

Makro

Birden fazla kural hedef bildirimini tek bir Starlark çağrılabilir öğesi altında birleştirme mekanizması. BUILD dosyasında ortak kural bildirimi kalıplarının yeniden kullanılmasını sağlar. Yükleme aşamasında temel kural hedefi bildirimlerine genişletilir.

İki türü vardır: Sembolik makrolar (Bazel 8'den beri) ve eski makrolar.

Hafıza güçlendirici

Kural yazarının, kuraldaki bir işlemin ne yaptığını hızlıca anlamak için seçtiği kısa ve okunabilir dize. Kısa hatırlatıcılar, oluşturma stratejisi seçimleri için tanımlayıcı olarak kullanılabilir. İşlem anımsatıcılarına örnek olarak Java kurallarından Javac, C++ kurallarından CppCompile ve Android kurallarından AndroidManifestMerger verilebilir.

Modül

Her biri diğer modüllere bağımlı olabilen birden fazla sürümü olabilen bir Bazel projesi. Bu, diğer bağımlılık yönetimi sistemlerindeki (ör. Maven artifact, npm package, Go module veya Cargo crate) tanıdık kavramlara benzer. Modüller, Bazel'in harici bağımlılık yönetim sisteminin temelini oluşturur.

Her modül, kök dizininde MODULE.bazel dosyası bulunan bir depo tarafından desteklenir. Bu dosya, modülün kendisiyle (ör. adı ve sürümü), doğrudan bağımlılıklarıyla ve araç zinciri kayıtları ile modül uzantısı girişi dahil olmak üzere çeşitli diğer verilerle ilgili meta verileri içerir.

Modül meta verileri Bazel kayıtlarında barındırılır.

Ayrıca bkz: Bazel modülleri

Modül Uzantısı

Modül bağımlılığı grafiğindeki girişleri okuyarak ve repo kurallarını çağırarak repo oluşturmak için çalıştırılabilen bir mantık parçası. Modül uzantıları, depo kurallarına benzer özelliklere sahiptir. Bu sayede internete erişebilir, dosya G/Ç işlemleri gerçekleştirebilir vb.

Ayrıca: Modül uzantıları

Yerel kurallar

Bazel'e yerleştirilmiş ve Java'da uygulanmış kurallar. Bu tür kurallar, .bzl dosyalarında yerel modüldeki işlevler (örneğin, native.cc_library veya native.java_library) olarak görünür. Kullanıcı tanımlı kurallar (yerel olmayan) Starlark kullanılarak oluşturulur.

Çıkış tabanı

Bazel çıkış dosyalarını depolamak için çalışma alanına özel bir dizin. Çıkışları çalışma alanının kaynak ağacından (ana depo) ayırmak için kullanılır. Çıkış kullanıcı kökünde bulunur.

Çıkış grupları

Bazel bir hedefi oluşturmayı bitirdiğinde oluşturulması beklenen bir dosya grubu. Kurallar, normal çıkışlarını "varsayılan çıkış grubu"na yerleştirir (ör..jar, java_library, .a ve .so dosyaları cc_library hedefleri için). Varsayılan çıkış grubu, komut satırında bir hedef istendiğinde yapıları oluşturulan çıkış grubudur. Kurallar, BUILD dosyalarında (filegroup kuralı) veya komut satırında (--output_groups işareti) açıkça belirtilebilen daha fazla adlandırılmış çıkış grubu tanımlayabilir.

Çıkış kullanıcı kökü

Bazel'in çıkışlarını depolamak için kullanıcıya özel bir dizin. Dizin adı, kullanıcının sistem kullanıcı adından türetilir. Birden fazla kullanıcı aynı anda sistemde aynı projeyi oluşturuyorsa çıkış dosyası çakışmalarını önler. Çıkış tabanları olarak da bilinen, bağımsız çalışma alanlarının derleme çıkışlarına karşılık gelen alt dizinleri içerir.

Paket

BUILD dosyası tarafından tanımlanan hedefler kümesi. Bir paketin adı, BUILD dosyasının repo köküne göreli yoludur. Bir paket, alt paketler veya BUILD dosyaları içeren alt dizinler içerebilir ve böylece bir paket hiyerarşisi oluşturulur.

Paket grubu

Bir paket grubunu temsil eden hedef. Genellikle visibility özellik değerlerinde kullanılır.

Platform

Bir derlemeye dahil olan "makine türü". Buna Bazel'in üzerinde çalıştığı makine ("ana makine" platformu), derleme araçlarının üzerinde çalıştığı makineler ("yürütme" platformları) ve hedeflerin oluşturulduğu makineler ("hedef platformlar") dahildir.

Sağlayıcı

Bağımlılık ilişkileri boyunca kural hedefleri arasında aktarılacak bir bilgi birimini açıklayan şema. Bu dosya genellikle derleyici seçenekleri, geçişli kaynak veya çıkış dosyaları ve derleme meta verileri gibi bilgileri içerir. Birikmiş geçişli verileri verimli bir şekilde depolamak için genellikle depsetler ile birlikte kullanılır. Yerleşik sağlayıcı örneği: DefaultInfo.

Ayrıca: Sağlayıcı belgeleri

Sorgu (kavram)

Derleme grafiğini analiz ederek hedef özellikleri ve bağımlılık yapılarını anlama süreci. Bazel üç sorgu varyantını destekler: query, cquery ve aquery.

sorgu (komut)

Derlemenin yükleme sonrası hedef grafiği üzerinde çalışan bir sorgu aracı. Bu yöntem nispeten hızlıdır ancak select(), derleme işaretleri, yapılar veya derleme işlemlerinin etkilerini analiz edemez.

Ayrıca: Sorgu nasıl yapılır?, Sorgu referansı

Kod deposu

Kökünde sınır işaretleyici dosyası bulunan, Bazel derlemesinde kullanılabilecek kaynak dosyaları içeren bir dizin ağacı. Genellikle repo olarak kısaltılır.

Depo sınırı işaretleyici dosyası MODULE.bazel (bu deponun bir Bazel modülünü temsil ettiğini gösterir), REPO.bazel veya eski bağlamlarda WORKSPACE ya da WORKSPACE.bazel olabilir. Herhangi bir depo sınırı işaretleyici dosyası, bir deponun sınırını gösterir. Bu türden birden fazla dosya bir dizinde birlikte bulunabilir.

Ana depo, mevcut Bazel komutunun çalıştırıldığı depodur.

Harici depolar, MODULE.bazel dosyalarında modüller belirtilerek veya module extensions içinde repo kuralları çağrılarak tanımlanır. İstenirse diskteki önceden belirlenmiş bir "sihirli" konuma getirilebilir.

Her depoda benzersiz ve sabit bir standart ad bulunur. Diğer depolardan görüntülendiğinde ise farklı görünen adlar olabilir.

Ayrıca bkz.: Harici bağımlılıklara genel bakış

Depo önbelleği

Bazel'in derlemeler için indirdiği dosyaların, çalışma alanları arasında paylaşılabilen, içeriğe göre adreslenebilir ortak bir önbelleği. İlk indirmeden sonra çevrimdışı derlemeleri etkinleştirir. http_archive gibi repository rules aracılığıyla indirilen dosyaları ve repository_ctx.download gibi repository rule API'lerini önbelleğe almak için yaygın olarak kullanılır. Dosyalar yalnızca indirme için SHA-256 sağlama toplamları belirtilmişse önbelleğe alınır.

Depo kuralı

Bazel'e bir deponun nasıl oluşturulacağını (veya "getirileceğini") söyleyen, depo tanımlarıyla ilgili bir şema. Genellikle repo kuralı olarak kısaltılır. Depo kuralları, modüller tarafından desteklenen depoları tanımlamak için Bazel tarafından dahili olarak çağrılır veya modül uzantıları tarafından çağrılabilir. Depo kuralları internete erişebilir veya dosya G/Ç'si gerçekleştirebilir. En yaygın depo kuralı, kaynak dosyaları içeren bir arşivi internetten indirmek için kullanılan http_archive kuralıdır.

Ayrıca: Depo kuralı belgeleri

Yeniden üretilebilirlik

Bir derleme veya testin, zamandan, yöntemden ya da ortamdan bağımsız olarak her zaman aynı çıktı kümesini üreteceği özelliği. Bunun, çıkışların doğru veya istenen çıkışlar olduğu anlamına gelmediğini unutmayın.

Kural

BUILD dosyasında kural hedeflerini tanımlamaya yönelik bir şema (ör. cc_library). BUILD dosya yazarı açısından bir kural, bir dizi özellik ve kara kutu mantığından oluşur. Mantık, kural hedefinin nasıl çıktı artefaktları oluşturacağını ve bilgileri diğer kural hedeflerine nasıl ileteceğini belirtir. .bzlYazarlar açısından kurallar, Bazel'i yeni programlama dillerini ve ortamlarını destekleyecek şekilde genişletmenin temel yoludur.

Kurallar, yükleme aşamasında kural hedefleri oluşturmak için başlatılır. Analiz aşamasında kural hedefleri, sağlayıcılar şeklinde alt bağımlılıklarına bilgi iletir ve çıkış yapılarını nasıl oluşturacaklarını açıklayan işlemleri kaydeder. Bu işlemler yürütme aşamasında çalıştırılır.

Ayrıca: Kurallar dokümanları

Kural hedefi

Bir kuralın örneği olan hedef. Dosya hedefleri ve paket gruplarıyla karşılaştırıldığında. Kural ile karıştırılmamalıdır.

Runfiles

Çalıştırılabilir bir hedefin çalışma zamanı bağımlılıkları. En yaygın olarak, yürütülebilir dosya bir test kuralının yürütülebilir çıktısıdır ve runfile'lar testin çalışma zamanı veri bağımlılıklarıdır. Bazel, yürütülebilir dosya çağrılmadan önce (bazel test sırasında) kaynak dizin yapılarına göre test yürütülebilir dosyasının yanında runfile ağacını hazırlar.

Ayrıca: Runfiles belgeleri

Korumalı alana alma

Çalışan bir işlemi kısıtlanmış ve geçici bir yürütme kökünde izole etme tekniğidir. Bu teknik, işlemin bildirilmemiş girişleri okumamasını veya bildirilmemiş çıkışları yazmamasını sağlamaya yardımcı olur. Koruma alanı, hermeticity'yi büyük ölçüde iyileştirir ancak genellikle performans maliyeti vardır ve işletim sisteminin desteğini gerektirir. Performans maliyeti platforma bağlıdır. Linux'ta bu durum önemli olmasa da macOS'te sanal alanın kullanılamaz hale gelmesine neden olabilir.

Skyframe

Skyframe, Bazel'in temel paralel, işlevsel ve artımlı değerlendirme çerçevesidir.

Istampalama

Bazel ile oluşturulan yapılara ek bilgiler yerleştirmek için kullanılan bir özellik. Örneğin, bu bilgiler kaynak kontrolü, derleme zamanı ve yayın derlemeleri için çalışma alanı veya ortamla ilgili diğer bilgiler için kullanılabilir. --workspace_status_command işareti ve zaman damgası özelliğini destekleyen kurallar aracılığıyla etkinleştirin.

Starlark

Kurallar ve makrolar yazmak için kullanılan uzantı dili. Yapılandırma ve daha iyi performans amacıyla kullanılan, Python'ın (söz dizimi ve gramer açısından) sınırlı bir alt kümesi. .bzl file uzantısını kullanır. BUILD dosyaları, Starlark'ın daha da kısıtlanmış bir sürümünü (ör. def işlev tanımları yok) kullanır. Bu sürüm, daha önce Skylark olarak biliniyordu.

Ayrıca: Starlark dil belgeleri

Başlangıç işaretleri

bazel ile komut arasında belirtilen işaretler grubu (ör. bazel --host_jvm_debug build). Bu işaretler, Bazel sunucusunun yapılandırmasını değiştirir. Bu nedenle, başlangıç işaretlerinde yapılan herhangi bir değişiklik sunucunun yeniden başlatılmasına neden olur. Başlangıç işaretleri herhangi bir komuta özgü değildir.

Sembolik makro

rule benzeri bir attribute şemasıyla tanımlanan bir makro türü, dahili olarak tanımlanan hedeflerin kendi paketlerinden gizlenmesine olanak tanır ve makronun tanımladığı hedeflerde tahmin edilebilir bir adlandırma kalıbı uygular. Büyük eski makro kod tabanlarında görülen bazı sorunları önlemek için tasarlanmıştır.

Ayrıca: Sembolik makro belgeleri

Hedef

BUILD dosyasında tanımlanan ve etiketle tanımlanan bir nesne. Hedefler, son kullanıcının bakış açısından bir çalışma alanının oluşturulabilir birimlerini temsil eder.

Bir kural oluşturularak tanımlanan hedefe kural hedefi denir. Bunlar, kurala bağlı olarak çalıştırılabilir (ör. cc_binary) veya test edilebilir (ör. cc_test). Kural hedefleri genellikle özellikleri (ör. deps) aracılığıyla diğer hedeflere bağlıdır. Bu bağımlılıklar, hedef grafiğinin temelini oluşturur.

Kural hedeflerinin yanı sıra dosya hedefleri ve paket grubu hedefleri de vardır. Dosya hedefleri, bir BUILD dosyası içinde referans verilen yapay nesnelere karşılık gelir. Özel bir durum olarak, herhangi bir paketin BUILD dosyası her zaman o paketteki bir kaynak dosya hedefi olarak kabul edilir.

Hedefler, yükleme aşamasında keşfedilir. Analiz aşamasında hedefler, derleme yapılandırmaları ile ilişkilendirilerek yapılandırılmış hedefler oluşturulur.

Hedef grafiği

Hedeflerin ve bağımlılıklarının bellek içi grafiği. Yükleme aşamasında oluşturulur ve analiz aşamasında giriş olarak kullanılır.

Hedef kalıbı

Komut satırında bir grup hedef belirtme yöntemi. Sık kullanılan kalıplar :all (tüm kural hedefleri), :* (tüm kural + dosya hedefleri), ... (mevcut paket ve tüm alt paketler yinelemeli olarak) şeklindedir. Örneğin, //...:*, çalışma alanının kökünden başlayarak tüm paketlerdeki tüm kural ve dosya hedeflerinin yinelemeli olarak kullanılabileceği anlamına gelir.

Testler

Kural, test kurallarından oluşturulduğu için test edilebilir bir dosya içerir. Yürütülebilir dosyanın tamamlanmasından sıfır dönüş kodu alınması, testin başarılı olduğunu gösterir. Bazel ile testler (ör. test ortamı değişkenleri, test sonucu toplama yöntemleri) arasındaki tam sözleşme Test Ansiklopedisi'nde belirtilir.

Araç zinciri

Bir dil için çıktı oluşturmaya yönelik bir araç seti. Genellikle bir araç zinciri derleyiciler, bağlayıcılar, yorumlayıcılar ve/veya linter'lar içerir. Bir araç zinciri platforma göre de değişebilir. Örneğin, araç zinciri aynı dil için olsa bile Unix derleyici araç zincirinin bileşenleri Windows varyantında farklı olabilir. Platform için doğru araç zincirini seçmeye araç zinciri çözümü denir.

Üst düzey hedef

Bir derleme hedefi, Bazel komut satırında istenirse en üst düzey olur. Örneğin, //:foo, //:bar öğesine bağlıysa ve bazel build //:foo çağrılıyorsa bu derleme için //:foo üst düzeydir ve her iki hedef de oluşturulması gerekse de //:bar üst düzey değildir. Üst düzey ve üst düzey olmayan hedefler arasındaki önemli bir fark, Bazel komut satırında (veya .bazelrc aracılığıyla) ayarlanan komut işaretlerinin üst düzey hedeflerin yapılandırmasını ayarlaması, ancak üst düzey olmayan hedeflerin geçişi tarafından değiştirilebilmesidir.

Geçiş

Yapılandırma durumunun bir değerden diğerine eşlenmesi. Grafik oluşturma işleminde hedeflerin aynı kuraldan başlatılmış olsalar bile farklı yapılandırmalara sahip olmasını sağlar. Geçişlerin yaygın olarak kullanıldığı yerlerden biri de bölünmüş geçişlerdir. Bu geçişlerde hedef grafiğin belirli bölümleri, her bir dal için farklı yapılandırmalarla dallanır. Örneğin, tek bir derlemede bölünmüş geçişler kullanarak ARM ve x86 için derlenmiş yerel ikili dosyalar içeren bir Android APK oluşturulabilir.

Ayrıca: Kullanıcı tanımlı geçişler

Ağaç yapısı

Dosya koleksiyonunu temsil eden bir yapı. Bu dosyalar yapay ürün olmadığından, bunlar üzerinde çalışan bir işlem, bunun yerine ağaç yapay ürününü giriş veya çıkış olarak kaydetmelidir.

Görünürlük

Derleme sisteminde istenmeyen bağımlılıkları önlemek için kullanılan iki mekanizmadan biri: Bir hedefin diğer hedefler tarafından kullanılıp kullanılamayacağını kontrol etmek için hedef görünürlüğü ve bir BUILD veya .bzl dosyasının belirli bir .bzl dosyasını yükleyip yükleyemeyeceğini kontrol etmek için yükleme görünürlüğü. Bağlam olmadığında genellikle "görünürlük" hedef görünürlüğünü ifade eder.

Ayrıca: Görünürlük belgeleri

Çalışma alanı

Aynı ana depodan çalıştırılan tüm Bazel komutlarının paylaştığı ortam.

Geçmişte "depo" ve "çalışma alanı" kavramlarının birbirine karıştırıldığını unutmayın. "Çalışma alanı" terimi genellikle ana depoyu ifade etmek için, bazen de "depo" ile eş anlamlı olarak kullanılmıştır. Anlaşılırlık için bu tür kullanımdan kaçınılmalıdır.