İşlem
Derleme sırasında çalıştırılacak bir komuttur. Örneğin, giriş olarak öğeleri alan ve çıkış olarak başka öğeler üreten bir derleyiciye yapılan çağrı. Komut satırı bağımsız değişkenleri, işlem anahtarı, ortam değişkenleri ve tanımlanmış giriş/çıkış yapıları gibi meta verileri içerir.
Bkz. Kural dokümanları
İşlem önbelleği
Yürütülen işlemlerin oluşturduğu çıkışlarla eşlemesini depolayan disk üzerinde bir önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlı modelinin temel bileşenidir. Önbellek, çıkış ana dizininde depolanır ve bu nedenle Bazel sunucusunun yeniden başlatılmasından etkilenmez.
İşlem grafiği
İşlemlerin ve bu işlemlerin okuduğu ve oluşturduğu yapıların bellek içi grafiği. Grafik, kaynak dosya olarak (ör. dosya sisteminde) bulunan yapay nesnelerin yanı sıra BUILD
dosyalarında bahsedilmeyen oluşturulmuş ara/nihai yapay nesneleri içerebilir. Analiz aşamasında oluşturulur ve yürütme aşamasında kullanılır.
İşlem grafiği sorgusu (aquery)
Derleme işlemleri üzerinde sorgu yapabilen bir sorgu aracı. Bu sayede, derleme kurallarının gerçek çalışma derlemelerinde nasıl uygulandığını analiz edebilirsiniz.
Eylem tuşu
Bir işlemin önbelleği anahtarı. İşleme bağlı olarak işlemde yürütülecek komutu, derleyici işaretlerini, kitaplık konumlarını veya sistem üstbilgilerini içerebilen işlem meta verilerine göre hesaplanır. Bazel'in tek tek işlemleri kararlı bir şekilde önbelleğe almasını veya geçersiz kılmasını sağlar.
Analiz aşaması
Derlemenin ikinci aşaması. BUILD
dosyalarında belirtilen hedef grafiği işlenir. Böylece, 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şturulur. Bu, kural uygulamalarının değerlendirildiği aşamadır.
Yapı
Kaynak dosya veya oluşturulmuş dosya. Ağaç yapıları olarak bilinen bir dosya dizini de olabilir.
Bir yapı, birden fazla işleme giriş olabilir ancak yalnızca en fazla bir işlem tarafından oluşturulmalıdır.
Dosya hedefine karşılık gelen bir yapı, etiketle adreslenebilir.
En Boy Oranı
Kuralların, bağımlılıkları içinde ek işlemler oluşturması için bir mekanizma. Örneğin, A hedefi B'ye bağlıysa A'ya, B'ye giden bir bağımlılık kenarını yukarı doğru izleyen ve ek çıkış dosyaları oluşturmak ve toplamak için B'de ek işlemler çalıştıran bir görünüm uygulanabilir. Bu ek işlemler önbelleğe alınır ve aynı yönü gerektiren hedefler arasında 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şlemleri oluşturmak için kullanılabilir.
Bkz. Aspects belgeleri
En boy oranı üzerinde en boy oranı
Yönlerin diğer yönlerin sonuçlarına uygulanabileceği bir kompozisyon mekanizması. Örneğin, IDE'ler tarafından kullanılmak üzere bilgi oluşturan bir özellik, protodan .java
dosyaları oluşturan bir özelliğin üzerine uygulanabilir.
A
özelliğinin B
özelliğinin üzerine uygulanması için B
'un provides
özelliğinde reklamını yaptığı sağlayıcılar, A
'ün required_aspect_providers
özelliğinde istediğiyle eşleşmelidir.
Özellik
Hedef başına derleme bilgilerini ifade etmek için kullanılan bir kural parametresi.
Örneğin, srcs
, deps
ve copts
, sırasıyla hedefin kaynak dosyalarını, bağımlılıklarını ve özel derleyici seçeneklerini tanımlar. Belirli bir hedef için kullanılabilen özellikler, kural türüne bağlıdır.
.bazelrc
Bazel'in yapılandırma dosyası, başlangıç işaretleri ve komut işaretleri için varsayılan değerleri değiştirmek ve daha sonra --config
işareti kullanılarak Bazel komut satırında birlikte ayarlanabilecek ortak seçenek gruplarını tanımlamak için kullanılır. Bazel, birden fazla bazelrc dosyasının (sistem genelinde, çalışma alanı başına, kullanıcı başına veya özel bir konumdan) ayarlarını birleştirebilir. Ayrıca, bir bazelrc
dosyası diğer bazelrc
dosyalarından da ayar içe aktarabilir.
Blaze
Bazel'in Google'a özel sürümü. Google'ın tek kod deposu için ana derleme sistemi.
BUILD Dosyası
BUILD
dosyası, Bazel'e hangi yazılım çıktılarının derleneceğini, bu çıktıların bağımlılıkları ve nasıl derleneceğini bildiren ana yapılandırma dosyasıdır. Bazel, giriş olarak bir BUILD
dosyası alır ve bu dosyayı bağımlılıklar grafiği oluşturmak ve ara ve nihai yazılım çıkışlarını oluşturmak için yapılması gereken işlemleri türetmek amacıyla kullanır. 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 BUILD
dosyasına göre önceliklidir.
.bzl Dosyası
Kuralları, makroları ve sabitleri tanımlayan, Starlark ile yazılmış bir dosya. Ardından, load()
işlevi kullanılarak BUILD
dosyalarına aktarılabilir.
Grafik oluşturma
Bazel'in derleme yapmak için oluşturduğu ve gezdiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve öğeler gibi düğümleri içerir. İstekte bulunulan bir hedef grubunun bağlı olduğu tüm yapılar güncel olduğunda derleme 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 derleme ayarlarını belirleyebilir. Kullanıcıya yapı işareti olarak da bilinen bir komut satırı işareti olarak gösteriliyorsa.
Temiz derleme
Önceki derlemelerin sonuçlarını kullanmayan bir derleme. Bu işlem genellikle artımlı derlemeden daha yavaştır ancak genellikle daha doğru olarak kabul edilir. 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 devam eder ancak bir süre işlem yapılmadığında otomatik olarak durur (veya açıkça baz kapatma yoluyla). Bazel'i sunucu ve istemci olarak bölme, JVM'nin başlatma süresini amorti etmeye yardımcı olur ve işlem grafiği komutlar arasında bellekte kaldığı için daha hızlı artımlı derlemeleri destekler.
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ü işaretler grubu. Komut işaretleri, komutun ardından belirtilir (bazel build <command flags>
). İşaretler bir veya daha fazla komut için geçerli olabilir. Örneğin, --configure
yalnızca bazel sync
komutu için geçerli bir işarettir ancak --keep_going
, sync
, build
, test
ve daha fazlası için geçerlidir. İşaretler genellikle yapılandırma amacıyla kullanılır. Bu nedenle, işaret değerlerinde yapılan değişiklikler Bazel'in bellekteki 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, barındırma araçları veya çapraz derleme gibi ek yapılandırmalar oluşturabilir.
Bkz. Yapılandırmalar
Yapılandırmayı kısaltma
Hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını dahil etme işlemi. Örneğin, Java ikili dosyası //:j
'ü C++ bağımlılığı //:c
ile derliyorsanız --javacopt
değerini //:c
yapılandırmasına dahil etmek israftır. Çünkü --javacopt
'nin değiştirilmesi, C++ derleme önbelleğe alınabilirliğini gereksiz yere bozar.
Yapılandırılmış sorgu (cquery)
Analizler aşaması tamamlandıktan sonra yapılandırılmış hedefler üzerinde sorgu yapan bir sorgu aracı. Bu, select()
ve derleme işaretlerinin (--platforms
gibi) sonuçlara doğru şekilde yansıtıldığı anlamına gelir.
Bkz. cquery dokümanları
Yapılandırılmış hedef
Bir hedefin yapılandırmayla değerlendirilmesinin sonucu. Analiz aşaması, derlemenin seçeneklerini oluşturulması gereken hedeflerle birleştirerek bu dosyayı oluşturur.
Örneğin, //:foo
aynı derlemede iki farklı mimari için derleniyorsa iki yapılandırılmış hedefi vardır: <//:foo, x86>
ve <//:foo, arm>
.
Doğruluk
Bir derleme, çıkışı geçişli girişlerinin durumunu doğru yansıttığında doğrudur. Bazel, doğru derlemeler elde etmek için hermetik, yeniden üretilebilir ve derleme analizini ve işlem yürütmeyi deterministik hale getirmeye çalışır.
Bağımlı seçim
İki hedef arasındaki yönlendirilmiş kenar. //:foo
özelliğinin değerlerinden biri //:bar
'a referans içeriyorsa //:foo
hedefi, //:bar
hedefine hedef bağımlılık içerir. //:foo
'teki bir işlem, //:bar
'teki bir işlem tarafından oluşturulan bir giriş öğesine bağlıysa //:foo
, //:bar
'e işlem bağımlılığı sahiptir.
Belirli bağlamlarda harici 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 veri toplamak için kullanılan bir veri yapısı. Çok büyük depo kümelerinin (yüz binlerce dosya) olması yaygın olduğundan, depo kümelerini birleştirmenin zaman ve alan açısından verimli olması için optimize edilmiştir. Alan verimliliği nedeniyle diğer depsetlere yinelenen şekilde referans vermek için uygulanır. Kural uygulamalarında, kural derleme grafiğinin en üst düzeyinde olmadığı sürece depsetler listelere dönüştürülerek "düzleştirilmemelidir". Büyük depolama alanlarını düzleştirmek çok fazla bellek tüketimine neden olur. Bazel'in dahili uygulamasında iç içe yerleştirilmiş kümeler olarak da bilinir.
Bkz. Depset belgeleri
Disk önbelleği
Uzak önbelleğe alma özelliği için yerel bir disk üzerinde blob depolama alanı. Gerçek bir uzak blob deposuyla birlikte kullanılabilir.
Distdir
Bazel'in kod deposu kurallarını kullanarak internetten getireceği dosyaları içeren salt okunur bir dizin. Derlemelerin tamamen çevrimdışı çalışmasını sağlar.
Dinamik yürütme
Çeşitli sezgisel kurallara göre yerel ve uzak yürütme arasında seçim yapan ve daha hızlı 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ı (ör. bağlama), bazıları ise uzaktan daha hızlı (ör. yüksek paralellik sağlanabilen derleme) yürütülür. 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ında
Derlemenin üçüncü aşaması. Analizler aşamasında oluşturulan işlem grafiğindeki işlemleri yürütür. Bu işlemler, öğeleri okumak ve yazmak için yürütülebilir dosyaları (derleyiciler, komut dosyaları) çağırır. Oluşturma stratejileri, bu işlemlerin nasıl yürütüleceğini kontrol eder: yerel, uzak, dinamik, korumalı alan, docker vb.
Yürütme kökü
Çalışma alanının çıktı tabanı dizininde, korumalı alan dışındaki derlemelerde yerel işlemlerin yürütüldüğü bir dizin. Dizin içeriği çoğunlukla, iş alanındaki giriş öğelerinin 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
dizini de içerir. Bir derlemenin bağlı olduğu paketlerin geçişli kapatılmasını temsil eden dizinlerin sembolik bağlantı ormanı oluşturularak yükleme aşamasında hazırlanır. Komut satırında bazel info
execution_root
ile erişilebilir.
Dosya
Artifact konusuna bakın.
Hermeticity
Derleme ve test işlemleri üzerinde 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şimine izin vermez, beyan edilen girişlere erişimi kısıtlar, sabit zaman damgaları ve saat dilimlerini kullanır, ortam değişkenlerine erişimi kısıtlar ve rastgele sayı üreteçleri için sabit tohumlar 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 elde etmeyi amaçlar. Artımlı derleme, temiz derlemenin tersidir.
Şirket
Hedef için bir tanımlayıcı. Genellikle @repo//path/to/package:target
biçimindedir. Burada repo
, hedefi içeren deponun (görünür) adı, path/to/package
hedefi açıklayan BUILD
dosyasını içeren dizinin yolu (bu dizin paket olarak da bilinir) ve target
, hedefin adıdır. Duruma bağlı olarak bu söz dizimi bölümleri atlanabilir.
Bkz. Etiketler
Yükleme aşaması
Bazel'in paket oluşturmak için BUILD
dosyalarını yürüttüğü derlemenin ilk aşaması. Makrolar ve glob()
gibi belirli işlevler bu aşamada değerlendirilir. Hedef grafik oluşturmak için derlemenin ikinci aşaması olan analiz aşamasıyla birlikte kullanılır.
Eski makro
Normal bir Starlark işlevi olarak tanımlanan ve BUILD
dosyası çalıştırmanın yan etkisi olarak çalışan bir makro çeşidi.
Eski makrolar, işlevlerin yapabileceği her şeyi yapabilir. Bu, kolaylık sağlayabilmelerinin yanı sıra okuma, yazma ve kullanmanın daha zor olabileceği anlamına gelir. Eski bir makro, bağımsız değişkenlerini beklenmedik bir şekilde değiştirebilir veya select()
veya yanlış yazılmış bir bağımsız değişken verildiğinde başarısız olabilir.
Sembol makrolarıyla karşılaştırma
Makro
Tek bir Starlark çağrılabilir öğesi altında birden fazla kural hedef beyanını bir araya getiren bir mekanizma. BUILD
dosyalarında ortak kural beyanı kalıplarının yeniden kullanılmasını sağlar. Yükleme aşamasında temel kural hedefi beyanlarına genişletilir.
İki türde bulunur: sembolik makrolar (Bazel 8'den beri) ve eski makrolar.
Mnemonic
Kuraldaki bir işlemin ne yaptığını hızlıca anlamak için kural yazarı tarafından seçilen kısa, okunabilir bir dize. 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ındaki Javac
, C++ kurallarındaki CppCompile
ve Android kurallarındaki AndroidManifestMerger
verilebilir.
Modül
Her biri diğer modüllere bağımlı olabilecek birden fazla sürümü olabilecek bir Bazel projesi. Bu, Maven öğesi, npm paketi, Go modülü veya Cargo kutusu gibi diğer bağımlılık yönetimi sistemlerindeki bilinen kavramlara benzer. Modüller, Bazel'in harici bağımlılık yönetimi sisteminin temelini oluşturur.
Her modül, kökünde bir MODULE.bazel
dosyası bulunan bir repo ile desteklenir. Bu dosya, modülün kendisiyle ilgili meta verileri (adı ve sürümü gibi), doğrudan bağımlılıkları ve araç zinciri kayıtları ile modül uzantısı girişi gibi diğer çeşitli verileri içerir.
Modül meta verileri Bazel kayıtlarında barındırılır.
Bkz. Bazel modülleri
Modül Uzantısı
Modül bağımlılık grafiğindeki girişleri okuyarak ve repo kurallarını çağırarak repos oluşturmak için çalıştırılabilir bir mantık parçası. Modül uzantıları, depo kurallarına benzer özelliklere sahiptir. Bu özellikler sayesinde internete erişebilir, dosya G/Ç işlemleri yapabilirler.
Bkz. Modül uzantıları
Yerel kurallar
Bazel'e yerleştirilmiş ve Java'da uygulanmış kurallar. Bu tür kurallar, yerel modüldeki işlevler olarak .bzl
dosyalarında görünür (ör. native.cc_library
veya native.java_library
). 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ı tamamladığında oluşturulması beklenen bir dosya grubu. Kurallar, normal çıkışlarını "varsayılan çıkış grubuna" yerleştirir (ör.java_library
için .jar
dosyası, cc_library
hedefleri için .a
ve .so
). Varsayılan çıkış grubu, komut satırında bir hedef istendiğinde yapılarının oluşturulduğu çıkış grubudur.
Kurallar, BUILD
dosyalarında (filegroup
kuralı) veya komut satırında (--output_groups
işareti) açıkça belirtilebilecek daha fazla adlandırılmış çıkış grubu tanımlayabilir.
Çıkış kullanıcı kökü
Bazel'in çıktılarını depolamak için kullanıcıya özel bir dizin. Dizin adı, kullanıcının sistem kullanıcı adından türetilir. Sistemde aynı projeyi aynı anda birden fazla kullanıcı derliyorsa çıkış dosyası çakışmalarını önler. Ayrı çalışma alanlarının derleme çıkışlarına karşılık gelen alt dizinleri içerir. Bu dizinler çıktı tabanları olarak da bilinir.
Paket
BUILD
dosyası tarafından tanımlanan hedefler grubu. 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. Böylece paket hiyerarşisi oluşturulur.
Paket grubu
Bir paket grubunu temsil eden hedef. Genellikle visibility
özellik değerlerinde kullanılır.
Platform
Derlemede yer alan bir "makine türü". Buna, Bazel'in çalıştığı makine ("ana makine" platformu), makine derleme araçlarının çalıştığı ("yürütme" platformları) ve makine hedeflerinin oluşturulduğu ("hedef platformlar") makineler dahildir.
Sağlayıcı
Bağımlılık ilişkileri boyunca kural hedefleri arasında aktarılacak bir bilgi birimini açıklayan bir şema. Bu genellikle derleyici seçenekleri, geçişli kaynak veya çıkış dosyaları ve derleme meta verileri gibi bilgileri içerir. Toplanan geçişli verileri verimli bir şekilde depolamak için genellikle depsets ile birlikte kullanılır. Yerleşik sağlayıcı örneği DefaultInfo
'tür.
Sorgu (kavram)
Hedef mülkleri ve bağımlılık yapılarını anlamak için bir derleme grafiğini analiz etme işlemi. Bazel üç sorgu varyantını destekler: query, cquery ve aquery.
query (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 işlemler'in etkilerini analiz edemez.
Bkz. Sorgu oluşturma, Sorgu referansı
Kod deposu
Kökünde bir sınır işaretçisi dosyası bulunan ve Bazel derlemesinde kullanılabilecek kaynak dosyaları içeren bir dizin ağacı. Genellikle repo olarak kısaltılır.
Depo sınır işaretçisi dosyası MODULE.bazel
(bu reponun bir Bazel modülü temsil ettiğini belirtir), REPO.bazel
veya eski bağlamlarda WORKSPACE
ya da WORKSPACE.bazel
olabilir. Herhangi bir depo sınır işaretçisi dosyası, bir deponun sınırını belirtir. Bir dizinde bu tür birden fazla dosya bulunabilir.
Ana depo, mevcut Bazel komutunun çalıştırıldığı depodur.
Harici depolar, MODULE.bazel
dosyalarında modüller belirtilerek veya modül uzantılarında depolama alanı kuralları çağrılarak tanımlanır. İsteğe bağlı olarak diskteki önceden belirlenmiş bir "sihirli" konuma getirilebilirler.
Her deponun benzersiz ve sabit bir kanonik adı ve diğer depolardan görüntülendiğinde farklı olabilecek görünür adları vardır.
Bkz. Harici bağımlılıklara genel bakış
Depo önbelleği
Derlemeler için Bazel tarafından indirilen dosyaların paylaşılan, içerik adreslenebilir bir önbelleğidir ve çalışma alanlarında paylaşılabilir. İlk indirme işleminden sonra çevrimdışı derlemeleri etkinleştirir. Genellikle http_archive
gibi depo kuralları ve repository_ctx.download
gibi depo kuralı API'leri aracılığıyla indirilen dosyaları önbelleğe almak için kullanılır. Dosyalar yalnızca indirme işlemi için SHA-256 sağlama toplama değerleri belirtilmişse önbelleğe alınır.
Depo kuralı
Bazel'e bir depoyu nasıl somutlaştıracağını (veya "getireceğini") söyleyen depo tanımları şeması. 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/Ç işlemi gerçekleştirebilir. En yaygın depo kuralı, internetten kaynak dosyaları içeren bir arşiv indiren http_archive
kuralıdır.
Yeniden üretilebilirlik
Bir derleme veya testin, zaman, yöntem veya ortamdan bağımsız olarak her zaman aynı giriş grubunu her zaman aynı çıkış grubunu üreteceği özelliği. Bunun, çıkışların doğru veya istenen çıkışlar anlamına gelmediğini unutmayın.
Kural
cc_library
gibi bir BUILD
dosyasında kural hedeflerini tanımlamak için kullanılan bir şema. BUILD
dosyası yazarı açısından bir kural, bir dizi özellikten ve kara kutu mantığından oluşur. Mantık, kural hedefine çıkış yapılarını nasıl üreteceğini ve diğer kural hedeflerine nasıl bilgi aktaracağını söyler. .bzl
yazarları açısından kurallar, Bazel'i yeni programlama dillerini ve ortamlarını desteklemek için genişletmenin birincil yoludur.
Kurallar, yükleme aşamasında kural hedefleri oluşturmak için örneklenir. Analiz aşamasında kural hedefleri, sağlayıcılar biçiminde bilgileri alt akıştaki bağımlılıklarına 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.
Bkz. Kural dokümanları
Kural hedefi
Kural örneği olan bir hedef. Dosya hedefleri ve paket gruplarıyla zıttır. Kural ile karıştırılmamalıdır.
Çalışma dosyaları
Bir yürütülebilir hedefin çalışma zamanı bağımlılıkları. Yürütülebilir dosya genellikle bir test kuralının yürütülebilir çıkışı, çalıştırma dosyaları ise testin çalışma zamanındaki veri bağımlılıklarıdır. Bazel, yürütülebilir dosyanın çağrılmasından önce (bazel test sırasında), test yürütülebilir dosyasının yanı sıra kaynak dizin yapılarına göre çalıştırma dosyası ağacını hazırlar.
Bkz. Çalışma dosyası dokümanları
Korumalı alana alma
Çalışan bir işlemi kısıtlanmış ve geçici bir yürütme kökü içinde izole ederek, bildirilmemiş girişleri okumamasını veya bildirilmemiş çıkışları yazmamasını sağlamaya yardımcı olan bir teknik. Korumalı alan, hermetikliği büyük ölçüde iyileştirir ancak genellikle performans maliyeti vardır ve işletim sisteminden destek gerektirir. Performans maliyeti platforma bağlıdır. Linux'da bu durum önemli değildir ancak macOS'te korumalı alanı kullanılamaz hale getirebilir.
Skyframe
Skyframe, Bazel'in temel paralel, işlevsel ve artımlı değerlendirme çerçevesidir.
Istampalama
Bazel tarafından oluşturulan yapılara ek bilgi yerleştiren bir özellik. Örneğin, bu özellik; kaynak denetimi, derleme süresi ve sürüm derlemeleri için çalışma alanı veya ortamla ilgili diğer bilgiler için kullanılabilir.
Damga özelliğini destekleyen --workspace_status_command
işareti ve kuralları aracılığıyla etkinleştirin.
Starlark
Kural ve makro yazmak için kullanılan uzantı dili. Yapılandırma ve daha iyi performans için tasarlanmış, kısıtlanmış bir Python alt kümesidir (söz dizimi ve dil bilgisi açısından). .bzl
dosya uzantısını kullanır. BUILD
dosyaları, daha önce Skylark olarak bilinen Starlark'ın daha da kısıtlanmış bir sürümünü (ör. def
işlev tanımları yok) kullanır.
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ıç bayrakları herhangi bir komuta özel değildir.
Sembolik makro
Kural benzeri bir özellik şemasıyla tanımlanan makro çeşidi, dahili olarak tanımlanan hedefleri kendi paketlerinden gizlemenize 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ı sorunlardan kaçınmak için tasarlanmıştır.
Bkz. Sembol makrosu dokümanları
Hedef
BUILD
dosyasında tanımlanan ve etiket ile tanımlanan bir nesne. Hedefler, bir çalışma alanının son kullanıcı açısından oluşturulabilir birimlerini temsil eder.
Bir kural örneği oluşturularak tanımlanan hedefe kural hedefi denir. Kuralla ilgili olarak bunlar çalıştırılabilir (cc_binary
gibi) veya test edilebilir (cc_test
gibi) olabilir. Kural hedefleri genellikle özellikleri aracılığıyla diğer hedeflere bağlıdır (deps
gibi); 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, BUILD
dosyası içinde referans verilen yapılara karşılık gelir. Özel bir durum olarak, herhangi bir paketin BUILD
dosyası her zaman söz konusu pakette bir kaynak dosya hedefi olarak kabul edilir.
Hedefler yükleme aşamasında bulunur. Analiz aşamasında hedefler, yapılandırılmış hedefler oluşturmak için derleme yapılandırmalarıyla ilişkilendirilir.
Hedef grafik
Hedeflerin ve bunların bağımlılıklarının bellek içi grafiği. Yükleme aşamasında üretilir ve analiz aşamasında giriş olarak kullanılır.
Hedef desen
Komut satırında bir hedef grubu belirtmenin bir yolu. Sık kullanılan kalıplar :all
(tüm kural hedefleri), :*
(tüm kural + dosya hedefleri), ...
(geçerli paket ve tüm alt paketler yinelemeli olarak) şeklindedir. Birlikte kullanılabilir. Örneğin, //...:*
, çalışma alanının kökünden itibaren tüm paketlerdeki tüm kural ve dosya hedeflerini yinelemeli olarak ifade eder.
Testler
Kural, test kurallarından oluşturulan hedefleri içerir ve bu nedenle test çalıştırılabilir dosyasını içerir. Yürütülebilir dosyanın tamamlanmasından sonra döndürülen sıfır değeri, testin başarılı olduğunu gösterir. Bazel ile testler arasındaki tam sözleşme (ör. test ortamı değişkenleri, test sonucu toplama yöntemleri) Test Ansiklopedisi'nde belirtilmiştir.
Araç zinciri
Bir dil için çıkış oluşturmaya yönelik bir araç seti. Bir araç zinciri genellikle derleyiciler, bağlayıcılar, yorumlayıcılar ve/veya linterler içerir. Bir araç zinciri platforma göre de değişebilir. Yani, aynı dile ait olsa bile Unix derleyici araç zincirinin bileşenleri Windows varyantında farklı olabilir. Platform için doğru araç zincirini seçme işlemine araç zinciri çözme adı verilir.
Üst düzey hedef
Bazel komut satırında istenen bir derleme hedefi üst düzeydir. Örneğin, //:foo
, //:bar
'a bağlıysa ve bazel build //:foo
çağrılırsa bu derleme için //:foo
üst düzeydir ve //:bar
üst düzey değildir. Ancak her iki hedefin de derlenmesi gerekir. Üst düzey hedefler ile ü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 hedefler için yapılandırmayı ayarlamasıdır ancak üst düzey olmayan hedefler için geçiş tarafından değiştirilebilir.
Geçiş
Bir değerden diğerine yapılandırma durumunun eşlenmesi. Oluşturma grafiğindeki hedeflerin aynı kuraldan oluşturulmuş olsalar bile farklı yapılandırmalara sahip olmasını sağlar. Geçişlerin yaygın bir kullanımı, hedef grafiğin belirli bölümlerinin her çatal için farklı yapılandırmalarla çatallandığı ayrılmış geçişlerdir. Örneğin, tek bir derlemede ARM ve x86 için derlenmiş yerel ikili dosyalar içeren bir Android APK oluşturabilirsiniz.
Bkz. Kullanıcı tanımlı geçişler
Ağaç yapıları
Dosya koleksiyonunu temsil eden bir yapı. Bu dosyalar yapı ürünü olmadığından, bunlar üzerinde çalışan bir işlem, ağaç yapı ü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 bağımlı olup olmadığı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 olmadan "görünürlük" genellikle hedef görünürlüğü ifade eder.
Çalışma alanı
Tüm Bazel komutları tarafından paylaşılan ortam, aynı ana depoda çalışır.
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 belirtmek için kullanılmış ve hatta bazen "depo"nun eş anlamlısı olarak kullanılmıştır. Netlik için bu tür kullanımlardan kaçınılmalıdır.