İşlem
Derleme sırasında çalıştırılacak bir komut (örneğin, eserleri girdi olarak alan ve çıkış olarak diğer 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 bildirilen giriş/çıkış yapıları gibi meta verileri içerir.
Şu makaleyi de inceleyebilirsiniz: Kurallar dokümanları
İşlem önbelleği
Yürütülen işlemlerin, oluşturdukları çıkışlarla eşlemesini depolayan disk üzerindeki bir önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlılık modelinin temel bileşenlerinden biri. Önbellek, çıkış temel dizininde depolanır ve böylece Bazel sunucusu yeniden başlatılmadan etkilenmez.
İşlem grafiği
İşlemler ile bu işlemlerin okuyup oluşturduğu yapıların bellek içi grafiği. Grafik, kaynak dosyalar (örneğin, dosya sisteminde) olarak bulunan yapıların yanı sıra BUILD
dosyalarında bahsedilmeyen orta/nihai yapıları da içerebilir. Analiz aşamasında üretilir ve yürütme aşamasında kullanılır.
Eylem grafiği sorgusu (sorgu)
Derleme işlemleri üzerinden sorgu oluşturabilen bir sorgu aracı. Bu sayede, kuralların nasıl oluşturulduğunu <br>analiz edebilirsiniz.
İşlem tuşu
Bir işlemin önbellek anahtarı. Eyleme bağlı olarak eylemde yürütülecek komut, derleyici işaretleri, kitaplık konumları veya sistem başlıklarında yürütülecek komutu içerebilecek işlem meta verilerine göre hesaplanır. Bazel'ın bağımsız işlemleri belirli bir şekilde önbelleğe almasını veya geçersiz kılmasını sağlar.
Analiz aşaması
Bir derlemenin ikinci aşaması. 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şturmak için BUILD
dosyalarında belirtilen hedef grafiği işler. Bu, kural uygulamalarının
değerlendirilme aşamasıdır.
Yapı
Kaynak dosya veya oluşturulmuş dosya. Ağaç yapıları olarak bilinen bir dosya dizini de olabilir.
Yapı, birden fazla işlemin girişi olabilir ancak yalnızca en fazla bir işlemle oluşturulmalıdır.
Dosya hedefine karşılık gelen bir yapı etiket kullanılarak ele alınabilir.
En Boy Oranı
Kuralların bağımlılıklarında ek eylemler oluşturmasını sağlayan bir mekanizma. Örneğin, A hedefi B'ye bağımlıysa bir kişi A'ya, bir bağımlılık ucundan B'ye yukarı ulaşan ve ek çıkış dosyaları oluşturup toplamak için B'de ek işlemler çalıştıran bir özellik uygulayabilir. Bu ek işlemler önbelleğe alınır ve aynı en boy oranını gerektiren hedefler arasında yeniden kullanılır. aspect()
Starlark Build API işleviyle oluşturuldu. Örneğin, IDE'ler için meta veriler ve hata analizi için işlemler oluşturmak amacıyla kullanılabilir.
Şu makaleyi de inceleyebilirsiniz: Yön belgeleri
En boy oranı
Belirli yönlerin diğer yönlerin sonuçlarına uygulanabileceği bir bileşim mekanizması. Örneğin, IDE'ler tarafından kullanılmak üzere bilgi oluşturan bir özellik, bir protodan .java
dosyaları oluşturan bir özelliğin üzerine uygulanabilir.
Bir A
özelliğinin B
özelliğine göre uygulanabilmesi için B
adlı sağlayıcının provides
özelliğinde reklam verdiği sağlayıcıların, A
tarafından required_aspect_providers
özelliğinde belirtilenle eşleşmesi gerekir.
Özellik
Hedefe özel derleme bilgilerini ifade etmek için kullanılan, bir kural parametresi.
Örnekler arasında sırasıyla bir hedefin kaynak dosyalarını, bağımlılıklarını ve özel derleyici seçeneklerini tanımlayan srcs
, deps
ve copts
yer alır. Belirli bir hedef için kullanılabilecek özellikler, hedefin kural türüne bağlıdır.
.bazelrc
Bazel'ın 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ı tanımlamak için kullanılır. Bazel birden fazla Picasa dosyasındaki (sistem genelinde, çalışma alanı başına, kullanıcı başına veya özel bir konumdan) ayarları birleştirebilir. Ayrıca, bir bazelrc
dosyası diğer bazelrc
dosyalarından ayarları içe aktarabilir.
Blaze
Bazel'in dahili Google sürümü. Google’ın mono deposu için ana derleme sistemi.
DERLEME Dosyası
BUILD
dosyası, Bazel'a hangi yazılım çıkışlarının derleneceğini, bunların bağımlılıklarının ne olduğunu ve nasıl oluşturulacağını bildiren ana yapılandırma dosyasıdır. Bazel girdi olarak bir BUILD
dosyası alır ve bağımlılık grafiğini oluşturmak, ara ve son yazılım çıkışları oluşturmak için tamamlanması gereken işlemleri türetmek için bu dosyayı kullanır. BUILD
dosyası, bir dizini ve BUILD
dosyasını içermeyen tüm alt dizinleri paket olarak işaretler ve kurallar tarafından oluşturulan hedefleri içerebilir. Dosya, BUILD.bazel
olarak da adlandırılabilir.
BUILD.bazel Dosyası
BUILD
Dosya bölümüne bakın. Aynı dizindeki bir BUILD
dosyasına göre önceliklidir.
.bzl Dosyası
Starlark'ta yazılmış kuralları, makroları ve sabit değerleri tanımlayan bir dosya. Bunlar, daha sonra load()
işlevi kullanılarak BUILD
dosyalara aktarılabilir.
Grafik oluştur
Bazel'ın bir derleme gerçekleştirmek için oluşturduğu ve çektiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve yapılar gibi düğümler içerir. İstenen bir grup hedefe bağlı olan tüm yapılar güncel olarak doğrulandığında derleme tamamlanmış olarak kabul edilir.
Derleme ayarı
Starlark'ın tanımladığı bir yapılandırma parçası. Geçişler, bir alt grafiğin yapılandırmasını değiştirmek için yapı ayarları belirleyebilir. Kullanıcıya komut satırı işareti, derleme işareti olarak da bilinir.
Temiz yapı
Önceki derlemelerin sonuçlarını kullanmayan derleme. Bu 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 olduğunu garanti eder.
İ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 genelinde çalışmaya devam eder ancak bir süre işlem yapılmadığında (veya açıkça kapatıldıktan sonra) otomatik olarak durur. Bazel'ı sunucuya ve istemciye bölmek, JVM başlangıç süresinin kısaltılmasına yardımcı olur ve işlem grafiği, komutlar genelinde bellekte kaldığı için daha hızlı artımlı derlemeleri destekler.
Komut
Komut satırında bazel
build
, bazel test
, bazel run
ve bazel query
gibi farklı Bazel işlevlerini çağırmak için kullanılır.
Komut işaretleri
Bir komuta özel işaret grubu. Komut işaretleri, komuttan (bazel build <command flags>
) sonra belirtilir. İşaretler, bir veya daha fazla komuta uygulanabilir. Örneğin --configure
, yalnızca bazel sync
komutu için kullanılan 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ğerlerindeki değişiklikler Bazel'in bellek içi grafikleri geçersiz kılıp analiz aşamasını yeniden başlatmasına neden olabilir.
Yapılandırma
Kural tanımlarının dışında kalan ve kuralların işlem oluşturma şeklini etkileyen bilgiler. Her derlemenin hedef platformu, işlem ortamı değişkenlerini ve komut satırı derleme işaretlerini belirten en az bir yapılandırması vardır. Geçişler, ana makine araçları veya çapraz derlemeler gibi ek yapılandırmalar oluşturabilir.
Şu makaleyi de inceleyebilirsiniz: Yapılandırmalar
Yapılandırma kırpma
Yalnızca bir hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını içerme süreci. Örneğin, C++ bağımlılığı //:c
ile bir Java ikili programı //:j
derlerseniz --javacopt
değerinin //:c
yapılandırmasına eklenmesi israf yaratır çünkü --javacopt
değiştirildiğinde C++ derleme önbelleği gereksiz şekilde bozulur.
Yapılandırılmış sorgu (cquery)
Yapılandırılmış hedefleri sorgulayan bir sorgu aracı (analiz aşaması tamamlandıktan sonra). Bu, select()
ve oluşturma işaretlerinin (--platforms
gibi) sonuçlara doğru bir şekilde yansıtıldığı anlamına gelir.
Şu sayfaya da göz atın: cquery belgeleri
Yapılandırılmış hedef
Bir hedefin yapılandırmayla değerlendirilmesinin sonucudur. Analiz aşamasında bunu, derleme seçeneklerini derlenmesi gereken hedeflerle birleştirerek oluşturur.
Örneğin, //:foo
aynı derlemede iki farklı mimari için derleniyorsa iki yapılandırılmış hedefi olur: <//:foo, x86>
ve <//:foo, arm>
.
Doğruluk
Çıktısı, geçişli girişlerinin durumunu doğru şekilde yansıttığında derleme doğrudur. Bazel, doğru derlemeler elde etmek için hermetik, yeniden oluşturulabilir ve analiz ve eylem yürütmeyi belirli bir düzeye çıkarmaya çalışır.
Bağımlı seçim
İki hedef arasında yönlendirilmiş bir kenar. //:foo
özelliğinin özellik değerleri //:bar
için bir başvuru içeriyorsa //:foo
hedefinin //:bar
hedefine hedef bağımlılığı olur. //:foo
içindeki bir işlem //:bar
öğesindeki bir işlem tarafından oluşturulan giriş yapısına bağlıysa //:foo
üzerinde //:bar
üzerinde bir işlem bağımlılığı olur.
Belirli bağlamlarda dış bağımlılık anlamına da gelebilir. Modülleri inceleyin.
Kaldır
Geçişli bağımlılıklar hakkında veri toplamaya yarayan bir veri yapısı. Derinlikleri birleştirmek zaman ve alandan verimli olacak şekilde optimize edilmiştir, çünkü çok büyük alt kümeleri (yüz binlerce dosya) bir arada kullanmak yaygın bir uygulamadır. Alan verimliliği amacıyla diğer noktalara yinelemeli olarak referans vermek için uygulanır. Kural uygulamaları, kural derleme grafiğinin en üst düzeyinde olmadığı sürece, uygulamaları listelere dönüştürerek "düzleştirmemelidir". Büyük yığınların düzleştirilmesi büyük bellek tüketimine neden olur. Bazel'ın dahili uygulamasında iç içe yerleştirilmiş kümeler olarak da bilinir.
Şu makaleyi de inceleyebilirsiniz: Depset belgeleri
Disk önbelleği
Uzaktan önbelleğe alma özelliği için yerel bir disk blob mağazası. Gerçek bir uzak blob deposuyla birlikte kullanılabilir.
Dağılım
Bazel'ın normalde depo kurallarını kullanarak internetten getireceği dosyaları içeren salt okunur dizin. Derlemelerin tamamen çevrimdışı çalışmasını sağlar.
Dinamik yürütme
Çeşitli bulgulara dayalı yerel ve uzaktan 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. Belirli işlemler yerel olarak daha hızlı yürütülürken (ör. bağlantı oluşturma) bazıları uzaktan daha hızlı gerçekleştirilir (örneğin, yüksek düzeyde paralel yapılabilir 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ında
Bir derlemenin üçü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. Sarma stratejileri, bu işlemlerin nasıl yürütüldüğünü kontrol eder: yerel olarak, uzaktan, dinamik olarak, korumalı alana alınmış, docker.
Yürütme kökü
Yerel işlemlerin korumalı olmayan derlemelerde yürütüldüğü, çalışma alanının çıkış tabanı dizininde bulunan bir dizin. Dizin içeriği çoğunlukla çalışma alanından gelen giriş yapılarının sembolik bağlantılarıdır. Yürütme kökü, diğer girişler olarak harici depolara giden sembolik bağlantılar ve çıkışları depolamak için bazel-out
dizini de içerir. Yükleme aşamasında, derlemenin bağlı olduğu paketlerin geçişli olarak kapatılmasını temsil eden dizinlerin bir sembolik bağlantı ormanı oluşturularak hazırlanır. Komut satırında bazel info
execution_root
ile erişilebilir.
Dosya
Yapı bölümüne bakın.
Hermetiklik
Derleme ve test işlemleri üzerinde herhangi bir dış etki yoksa hermetiktir. Bu da sonuçların belirleyici ve doğru olmasına yardımcı olur. Örneğin, hermetik derlemeler genellikle işlemlere ağ erişimine izin vermez, 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ı oluşturucuları için sabit çekirdekler 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 denetimi ve önbelleğe alma, bu derleme türü için doğru sonuçlar üretmeyi amaçlar. Artımlı derleme, temiz bir derlemenin tam tersidir.
Etiket
Bir hedef için tanımlayıcı. Genellikle @repo//path/to/package:target
biçimindedir. Burada repo
, hedefi içeren deponun (görünen) adı; path/to/package
, hedefi açıklayan BUILD
dosyasını içeren dizine giden yoldur (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.
Şu makaleyi de inceleyebilirsiniz: Etiketler
Aşama yükleniyor
Bazel'in paketler oluşturmak için BUILD
dosyalarını yürüttüğü bir derlemenin ilk aşaması. Makrolar ve glob()
gibi belirli işlevler bu aşamada değerlendirilir. Bir hedef grafik oluşturmak için, derlemenin ikinci aşaması olan analiz aşaması arasına boşluk eklenir.
Makro
Birden fazla kural hedef bildirimini tek bir Starlark işlevi altında oluşturan mekanizma. BUILD
dosyalarında ortak kural bildirim kalıplarının yeniden kullanılmasını sağlar. Yükleme aşamasında temel kural hedefi bildirimlerine genişletilir.
Şu makaleyi de inceleyebilirsiniz: Makro dokümanları
Hatırlayıcı
Bir kural yazarı tarafından, kuraldaki bir işlemin ne yapmakta olduğunu hızlı bir şekilde anlamak için seçilen, kullanıcıların okuyabileceği kısa bir dize. Anımsatıcılar, hatırlatma 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
Birden çok sürümü olabilen ve her birinin diğer modüllere bağımlılığı olabilen Bazel projesi. Bu; Maven yapısı, npm paketi, Go modülü veya Kargo sandığı gibi diğer bağımlılık yönetimi sistemlerindeki bilindik kavramlara benzer. Modüller, Bazel'in dış bağımlılık yönetimi sisteminin omurgasını oluşturur.
Her modül kökünde MODULE.bazel
dosyası bulunan bir depo ile desteklenir. Bu dosyada modülün kendisiyle ilgili meta veriler (örneğin adı ve sürümü), doğrudan bağımlılıkları ve araç zinciri kayıtları ile modül uzantısı girişleri gibi diğer çeşitli veriler bulunur.
Modül meta verileri, Bazel kayıt otoritelerinde barındırılır.
Şu makaleyi de inceleyebilirsiniz: Bazel modülleri
Modül Uzantısı
Modül bağımlılık grafiğinden gelen girişleri okuyup depo kurallarını çağırarak depolar oluşturmak için çalıştırılabilecek bir mantık parçasıdır. Modül uzantıları, depo kurallarına benzer özelliklere sahiptir; internete erişmelerine, dosya G/Ç'si gerçekleştirmelerine ve benzeri işlemler gerçekleştirmelerine olanak tanır.
Şu makaleyi de inceleyebilirsiniz: Modül uzantıları
Yerel kurallar
Bazel'de yerleşik olarak bulunan ve Java'da uygulanan kurallar. Bu tür kurallar, .bzl
dosyalarında yerel modüldeki işlevler olarak görünür (örneğin, 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ısı kök dizininde yer alır.
Çıkış grupları
Bazel hedef oluşturmayı bitirdiğinde oluşturulması beklenen bir
dosya grubu. Kurallar, normal çıkışlarını "varsayılan çıkış grubuna" yerleştirir (ör.cc_library
hedefleri için java_library
, .a
ve .so
içeren .jar
dosyası). 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 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. Birden çok kullanıcı sistem üzerinde aynı anda aynı projeyi derliyorsa çıkış dosyası çakışmalarını önler. Bağımsız çalışma alanlarının çıkışlarını derlemeye karşılık gelen alt dizinler (çıktı temelleri olarak da bilinir) içerir.
Paket
Bir BUILD
dosyası tarafından tanımlanan hedefler grubu. Paket adı, BUILD
dosyasının depo köküne göre izlediği yoldur. Bir paket, alt paketler veya BUILD
dosyaları içeren alt dizinler içerebilir. Bu da bir paket hiyerarşisi oluşturur.
Paket grubu
Bir paket grubunu temsil eden hedef. Genellikle visibility
özellik değerlerinde kullanılır.
Platform
Derlemeye dahil olan bir "makine türü". Buna Bazel'in üzerinde çalıştığı makine ("ana makine" platformu), araçların çalıştırıldığı makineler ("exec" 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 bilgi birimini açıklayan bir şema. Genellikle bu dosya 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 depsets ile birlikte sık sık kullanılır. Yerleşik sağlayıcıya örnek olarak
DefaultInfo
verilebilir.
Şu makaleyi de inceleyebilirsiniz: Sağlayıcı dokümanları
Sorgu (kavram)
Hedef özellikleri ve bağımlılık yapılarını anlamak için grafiği analiz etme işlemidir. Bazel üç sorgu varyantını destekler: query, cquery ve aquery.
sorgu (komut)
Derlemenin yükleme sonrası aşaması hedef grafiği üzerinde çalışan bir sorgu aracı. Bu işlem nispeten hızlıdır ancak select()
, bayrak oluşturma, yapı veya işlem derleme işlemlerinin etkilerini analiz edemez.
Şu kaynakları da inceleyebilirsiniz: Sorgu nasıl yapılır?, Sorgu referansı
Depo
Kök düzeyinde bir sınır işaretçisi dosyası bulunan ve Bazel derlemesinde kullanılabilecek kaynak dosyaları içeren bir dizin ağacı. Genellikle yalnızca depo olarak kısaltılır.
Depo sınır işaretçisi dosyası MODULE.bazel
(bu deponun bir Bazel modülünü temsil ettiğinin sinyalini belirtir), REPO.bazel
ya da eski bağlamlarda WORKSPACE
veya 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 bir arada bulunabilir.
Ana depo, mevcut Bazel komutunun çalıştırıldığı depodur.
Harici depolar, MODULE.bazel
dosyalarında modüller belirterek veya modül uzantılarında depo kuralları çağırılarak tanımlanır. İstek üzerine disk üzerinde önceden belirlenmiş "sihirli" bir konuma getirilebilir.
Her deponun benzersiz, sabit bir standart adı vardır ve diğer kod depolarından görüntülendiğinde potansiyel olarak farklı görünen adlar bulunur.
Şu makaleyi de inceleyebilirsiniz: Harici bağımlılıklara genel bakış
Kod deposu önbelleği
Bazel tarafından derlemeler için indirilen ve çalışma alanları arasında paylaşılabilen, içerik ele geçirilebilen paylaşılan bir önbellek. İlk indirmeden 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çin SHA-256 sağlamaları belirtilirse önbelleğe alınır.
Kod deposu kuralı
Bazel'a bir depoyu nasıl gerçekleştireceğini (veya "getireceğini") söyleyen depo tanımları şeması. Genellikle depo 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ı ile çağrılabilir.
Depo kuralları internete erişebilir veya dosya G/Ç'si gerçekleştirebilir. En yaygın kullanılan depo kuralı, internetten kaynak dosyalar içeren bir arşiv indirmek için http_archive
şeklindedir.
Şu makaleyi de inceleyebilirsiniz: Depo kuralı belgeleri
Yeniden oluşturulabilirlik
Bir derleme veya testin, derleme veya test için bir dizi girdinin zamandan, yöntemden veya ortamdan bağımsız olarak her zaman her zaman aynı çıktı kümesini üreteceğini belirten özelliği. Bunun, çıkışların doğru veya istenen çıkışlar olduğu anlamına gelmediğini unutmayın.
Kural
cc_library
gibi bir BUILD
dosyasında kural hedeflerini tanımlamaya yönelik bir şema. BUILD
dosyası yazarı açısından kural, bir dizi özellikten ve kara kutu mantığından oluşur. Mantık, kural hedefine çıktı yapılarının nasıl üretileceğini ve diğer kural hedeflerine nasıl bilgi aktarılacağını belirtir. .bzl
yazarları açısından, kurallar Bazel'i yeni programlama dillerini ve ortamlarını destekleyecek şekilde genişletmenin birincil yoludur.
Yükleme aşamasında kural hedefleri oluşturmak için kurallar örneklenir. Analiz aşamasında kuralı, bilgileri aşağı akış bağımlılıklarına sağlayıcılar biçiminde iletir ve çıktı yapılarının nasıl oluşturulacağını açıklayan işlemleri kaydeder. Bu işlemler yürütme aşamasında yürütülür.
Şu makaleyi de inceleyebilirsiniz: Kurallar dokümanları
Kural hedefi
Bir kuralın örneği olan bir hedef. Dosya hedefleri ve paket gruplarıyla kontrast oluşturur. Kural ile karıştırılmamalıdır.
Çalıştırma dosyaları
Yürütülebilir bir hedefin çalışma zamanı bağımlılıkları. Yürütülebilir dosya genellikle test kuralının yürütülebilir çıkışıdır. Çalıştırma dosyaları ise testin çalışma zamanı veri bağımlılıklarıdır. Yürütülebilir dosyanın çağrılmasından önce (bazel testi sırasında), Bazel kaynak dizin yapılarına göre, çalıştırılabilir test ile birlikte çalıştırma dosyaları ağacını hazırlar.
Şu makaleyi de inceleyebilirsiniz: Runfiles belgeleri
Korumalı alana alma
Çalışan bir işlemi kısıtlanmış ve geçici bir yürütme kökünün içinde izole ederek bildirilmemiş girişleri okumamasını veya bildirilmemiş çıkışlar yazmamasını sağlamaya yardımcı olan bir tekniktir. Korumalı alan, hermetikliği büyük ölçüde iyileştirir ancak genellikle performans maliyeti olur ve işletim sistemi desteği gerektirir. Performans maliyeti platforma göre değişir. Linux'ta bu çok önemli değildir ancak macOS'te korumalı alan oluşturma özelliği kullanılamaz.
Gökyüzü Çerçevesi
Skyframe, Bazel'in temel paralel, işlevsel ve artımlı değerlendirme çerçevesidir.
Istampalama
Bazel tarafından oluşturulan yapılara ek bilgiler yerleştirme özelliği. Örneğin bu bilgi; kaynak kontrolü, derleme süresi ve sürüm derlemelerine yönelik diğer çalışma alanı bilgileri veya ortamla ilgili bilgiler için kullanılabilir.
stamp özelliğini destekleyen --workspace_status_command
işareti ve kurallar aracılığıyla etkinleştirin.
Yıldız tarlası
Kural ve makro yazmak için uzantı dili. Yapılandırma amacı ve daha iyi performans elde etmek amacıyla, Python'un kısıtlı (sözdizimsel ve dil bilgisi bakımından) alt kümesidir. .bzl
file uzantısını kullanır. BUILD
dosyaları Starlark'ın daha da kısıtlı bir sürümünü (ör. def
işlevi tanımı olmayan) kullanır. Bu sürüm, eskiden Skylark olarak bilinir.
Şu makaleyi de inceleyebilirsiniz: Starlark dili belgeleri
Başlangıç işaretleri
bazel
ile komut arasında belirtilen işaret grubu (ör. Bazel --host_jvm_debug
derlemesi). Bu işaretler Bazel sunucusunun yapılandırmasını değiştirir. Bu nedenle, başlangıç bayraklarında 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.
Hedef
BUILD
dosyasında tanımlanmış ve bir etiket ile tanımlanan nesnedir. Hedefler, son kullanıcının bakış açısından bir çalışma alanının derlenebilir birimlerini temsil eder.
Bir kural örneklenerek tanımlanan hedefe kural hedefi adı verilir. Kurala bağlı olarak, bunlar çalıştırılabilir (cc_binary
gibi) veya test edilebilir (cc_test
gibi) olabilir. Kural hedefleri, genellikle özellikleri (deps
gibi) aracılığıyla diğer hedefleri temel alır. Bu bağımlılıklar, hedef grafiğin temelini oluşturur.
Kural hedeflerinin yanı sıra dosya hedefleri ve paket grubu hedefleri de vardır. Dosya hedefleri, BUILD
dosyası içinde başvurulan yapılara karşılık gelir. Özel bir durum olarak, herhangi bir paketin BUILD
dosyası her zaman o pakette kaynak dosya hedefi olarak kabul edilir.
Hedefler, yükleme aşamasında keşfedilir. 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 bağımlılıklarının bellek içi grafiği. Yükleme aşamasında üretilir ve analiz aşamasında girdi olarak kullanılır.
Hedef kalıp
Komut satırında bir hedef grubu belirtmenin bir yolu. Yaygın olarak 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. Kombinasyon olarak kullanılabilir. Örneğin //...:*
, tüm paketlerdeki tüm kural ve dosya hedeflerinin çalışma alanının kökünden yinelemeli olarak kullanılması anlamına gelir.
Testler
Kural, test kurallarından örneklenen hedefler ve bu nedenle yürütülebilir bir test içerir. Yürütülebilir dosyanın tamamlanmasından sonra sıfır olarak döndürülen bir kod, testin başarılı olduğunu gösterir. Bazel ile testler arasındaki tam sözleşme (test ortamı değişkenleri, test sonucu toplama yöntemleri gibi) Test Ansiklopedisi'nde belirtilmiştir.
Alet Zinciri
Bir dil için çıktılar oluşturmaya yönelik bir araç seti. Araç zincirinde genellikle derleyiciler, bağlayıcılar, tercümanlar ve/veya linyiciler bulunur. Araç zinciri platforma göre de değişiklik gösterebilir. Yani, araç zinciri aynı dilde olsa bile Unix derleyici araç zincirinin bileşenleri Windows varyantı için farklılık gösterebilir. Platform için doğru araç zincirini seçmek, araç zinciri çözünürlüğü olarak bilinir.
Üst düzey hedef
Derleme hedefi, Bazel komut satırında istenirse üst düzeydir. Örneğin, //:foo
, //:bar
değerine bağımlıysa ve bazel build //:foo
çağrılırsa bu derleme için //:foo
üst düzeyken //:bar
üst düzey değildir ancak her iki hedefin de oluşturulması gerekir. Ü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şaretleri, üst düzey hedefler için yapılandırmayı ayarlar. Ancak üst düzey olmayan hedefler için geçiş yapılarak değiştirilebilir.
Geçiş
Yapılandırma durumunun bir değerden diğerine eşlenmesi. Aynı kuraldan örneklenmiş olsalar bile, oluşturma grafiğindeki hedeflerin farklı yapılandırmalara sahip olmasını sağlar. Geçişlerin yaygın kullanımlarından biri, hedef grafiğin belirli bölümlerinin her çatal için farklı yapılandırmalarla çatallandığı bölünmüş geçişlerdir. Örneğin, tek bir derlemede bölünmüş geçişler kullanılarak ARM ve x86 için derlenmiş yerel ikili programlara sahip bir Android APK oluşturulabilir.
Şu makaleyi de inceleyebilirsiniz: Kullanıcı tanımlı geçişler
Ağaç yapısı
Dosya koleksiyonunu temsil eden bir yapı. Bu dosyaların kendileri yapı olmadığından, üzerinde çalışan bir işlem, ağaç yapısını girdi veya çıktı 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ğlı olup olmayacağını kontrol etmek için hedef görünürlük ve bir BUILD
veya .bzl
dosyasının belirli bir .bzl
dosyasını yükleyip yükleyemeyeceğini kontrol etmek için görünürlük yükleme. Bağlam olmadan, "görünürlük" genellikle
hedef görünürlüğü ifade eder.
Şu makaleyi de inceleyebilirsiniz: Görünürlük belgeleri
Workspace
Tüm Bazel komutlarının paylaştığı ortam, aynı ana depodan çalıştırılır.
Geçmişte "depo" ve "çalışma alanı" kavramlarının bir arada kullanıldığını unutmayın. "Çalışma alanı" terimi çoğu zaman ana veri deposunu ifade etmek için, hatta bazen "depo" kelimesiyle eş anlamlı olarak bile kullanılmıştır. Netlik sağlamak adına bu tür kullanımdan kaçınılmalıdır.