İş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 bildirilen giriş/çıkış yapıları gibi meta verileri içerir.
Şu makaleyi de inceleyebilirsiniz: Kural belgelerini
İşlem önbelleği
Yürütülen işlemlerin, oluşturdukları çıkışlarla eşlemesini depolayan disk üzerinde önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlılık modeli için temel bileşenlerden biridir. Önbellek, çıkış temel dizininde depolanır ve böylece, Bazel sunucusunun yeniden başlatılması durumunda hayatta kalır.
İş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 üretilir ve yürütme aşamasında kullanılır.
İşlem grafiği sorgusu (sorgu)
Derleme işlemleri üzerinde sorgu oluşturabilen 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 belirgin 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 bir bellek içi 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 ait bir girdi olabilir ancak yalnızca en fazla bir işlemle oluşturulmalıdır.
Dosya hedefine karşılık gelen bir yapı, etiketle adreslenebilir.
En-boy
Kuralların bağımlılıklarında ek işlemler oluşturan 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şturulmuştur. Örneğin, IDE'ler için meta veri oluşturmak ve hata analizi yapma ile ilgili işlemler oluşturmak için kullanılabilir.
Bkz. Aspects belgeleri
En boy oranı üzerinde en boy oranı
Yönleri diğer yönlerin sonuçlarına uygulayabileceğiniz bir derleme 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ğine ek olarak uygulanması için B
özelliğinin provides
özelliğinde reklam yayınlayan sağlayıcılar, A
tarafından required_aspect_providers
özelliğinde belirtilen şekilde eşleşmelidir.
Özellik
Hedef başına 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 belirli özellikler, hedefin 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'daki dahili sürümü. tek deposu için Google'ın ana derleme sistemidir.
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, girdi olarak bir BUILD
dosyası alır ve bağımlılık grafiğini oluşturmak ve 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
Dosyası başlıklı makaleyi inceleyin. Aynı dizindeki bir BUILD
dosyasına göre önceliklidir.
.bzl Dosyası
Starlark'ta yazılan kuralları, makroları ve sabitleri tanımlayan bir dosyadır. Ardından, load()
işlevi kullanılarak BUILD
dosyalarına aktarılabilir.
Derleme grafiği
Bazel'in derleme gerçekleştirmek için oluşturup geçirdiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve öğeler gibi düğümleri içerir. İstenen bir hedef grubunun bağlı olduğu tüm yapıların güncel olduğu doğrulandığında, derleme tamamlanmış olarak kabul edilir.
Derleme ayarı
Starlark tarafından tanımlanan bir yapılandırma parçasıdır. Geçişler, derleme ayarlarını bir alt grafiğin yapılandırmasını değiştirebilir. Kullanıcıya yapı işareti olarak da bilinen bir komut satırı işareti olarak gösteriliyorsa.
Derlemeyi temizle
Önceki derlemelerin sonuçlarını kullanmayan bir 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 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
komutuna özel 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
Kural tanımları dışında, kuralların işlem oluşturma şeklini etkileyen 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
Yalnızca bir hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını dahil etme süreci. Örneğin, C++ bağımlılığı //:c
olan //:j
Java ikili programı derlerseniz, --javacopt
değerini değiştirmek C++ derleme önbellekliğini gereksiz şekilde bozacağından, //:c
yapılandırmasında --javacopt
değerini dahil etmek israflı olur.
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ırma ile 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 derleme yapıyorsa yapılandırılmış iki hedefi olur: <//:foo, x86>
ve <//:foo, arm>
.
Doğruluk
Bir derleme, çıkışı geçişli girişlerinin durumunu doğru yansıttığında doğrudur. Doğru derlemelere ulaşmak için Bazel, hermetik, yeniden oluşturulabilir ve derleme analizi ile 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.
Bazı bağlamlarda harici bağımlılığa da işaret edebilir. Modüllere bakın.
Ayrılan
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 depleri yinelemeli olarak referans almak için uygulanır. Kural uygulamaları, kural derleme grafiğinin en üst düzeyinde olmadığı sürece, hataları listelere dönüştürerek "düzleştir memelidir". Büyük noktaların düzleştirilmesi, ç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
Uzaktan önbelleğe alma özelliği için yerel bir disk üzerinde blob deposu. Gerçek bir uzak blob mağazasıyla birlikte kullanılabilir.
Distribütör
Bazel'in depo 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 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
Yapının üçüncü aşaması. Analizler aşamasında oluşturulan işlem grafiğindeki işlemleri yürütür. Bu işlemler, öğe 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ü
Korumalı alan içinde olmayan derlemelerde yerel işlemlerin yürütüldüğü, çalışma alanı çıkış tabanı dizininde bulunan 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
Bir derleme, derleme ve test işlemleri üzerinde harici etki yoksa hermetiktir. Bu, sonuçların deterministik ve doğru olduğundan emin olmaya yardımcı olur. Ö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 derleme türü için doğru sonuçlar üretmeyi 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 olarak görünen) adıdır. path/to/package
, hedefi tanımlayan 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.
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.
Makro
Tek bir Starlark işlevi 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 bildirimlerine genişletildi.
Bkz. Makro dokümanları
Mnemonic
Kuraldaki bir işlemin ne yaptığını hızlı bir şekilde anlamak için kural yazarı tarafından seçilen, kullanıcıların okuyabileceği kısa bir dize. Anımsatıcılar, ortaya çıkma 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 başka modüllere bağımlı olabilecek birden çok sürümü olabilen bir 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 tarafından desteklenir. Bu dosya, modülün kendisi hakkında (ör. adı ve sürümü), doğrudan bağımlılıklarının yanı sıra araç zinciri kayıtları ve modül uzantısı girişleri dahil olmak üzere çeşitli diğer veriler hakkında meta veriler içerir.
Modül meta verileri Bazel kayıt defterlerinde barındırılır.
Bkz. Bazel modülleri
Modül Uzantısı
Modül bağımlılık grafiğinden girişleri okuyup depo kurallarını çağırarak depo oluşturmak için çalıştırılabilen bir mantık parçasıdır. Modül uzantıları, kod deposu kurallarına benzer özelliklere sahip olup internete erişme, dosya G/Ç işlemi ve başka işlemler gerçekleştirmelerine olanak tanır.
Ayrıca 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ısı kökünde bulunur.
Çıkış grupları
Bazel hedef oluşturmayı bitirdiğinde oluşturulması beklenen bir dosya grubu. Kurallar, her zamanki çıkışlarını "varsayılan çıkış grubuna" (ör.cc_library
hedef için java_library
, .a
ve .so
öğesinin .jar
dosyası) yerleştirir. 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. Sistemde aynı projeyi aynı anda birden fazla kullanıcı derliyorsa çıkış dosyası çakışmalarını önler. Bağımsız çalışma alanlarının derleme çıkışlarına karşılık gelen alt dizinler (çıkış tabanları olarak da bilinir) içerir.
Paket
Bir BUILD
dosyası ile tanımlanan hedefler kümesi. Paket adı, BUILD
dosyasının depo köküne göre yoludur. Bir paket, BUILD
dosyalarını içeren alt paketler veya 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
Derlemede yer alan bir "makine türü". Buna Bazel'in çalıştığı makine ("ana makine" platformu), makine derleme araçları ("yürütme" platformları) ve makine hedefleri ("hedef platformlar") için yürütülür.
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 depsets ile birlikte sıkça kullanılır. Yerleşik sağlayıcıya örnek olarak DefaultInfo
verilebilir.
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.
sorgu (komut)
Derlemenin yükleme sonrası hedef grafiği üzerinde çalışan bir sorgu aracı. Bu işlem nispeten hızlıdır ancak select()
öğelerinin etkilerini analiz edemez, işaretler derleyemez, yapıları veya işlem oluşturamazsınız.
Şu konulara da göz atın: Sorgu nasıl yapılır?, 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çi dosyası MODULE.bazel
(bu deponun Bazel modülünü temsil ettiğini belirtir), REPO.bazel
veya eski bağlamlarda WORKSPACE
ya da WORKSPACE.bazel
olabilir. Herhangi bir depo sınır işaretçi dosyası, deponun sınırını belirtir. Bu tür birden fazla dosya bir dizinde bir arada bulunabilir.
Ana depo, mevcut Bazel komutunun çalıştırıldığı depodur.
Harici kod depoları, MODULE.bazel
dosyalarında modüller belirtilerek veya modül uzantılarında depo kuralları çağrılanarak tanımlanır. İstendiğinde disk üzerinde önceden belirlenmiş "sihirli" bir konuma getirilebilir.
Her deponun benzersiz, sabit bir standart adı ve diğer depolardan görüntülendiğinde farklı görünür adları olabilir.
Ayrıca bkz. Harici bağımlılıklara genel bakış
Kod deposu ö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 depo kuralı şeklinde 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.
Ayrıca bkz: Depo kuralı dokümanları
Yeniden üretilebilirlik
Derleme veya testte kullanılan bir dizi girişin zaman, yöntem ya da ortamdan bağımsız olarak her seferinde her zaman aynı çıkış grubunu ürettiği bir derleme ya da test özelliğidir. 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 hedefleri tanımlamaya yönelik 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 ileteceğini söyler. .bzl
yazarları açısından bakıldığında kurallar, Bazel'i yeni programlama dillerini ve ortamları destekleyecek şekilde 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.
Şu makaleyi de inceleyebilirsiniz: Kural belgelerini
Kural hedefi
Kural örneği olan bir hedef. Dosya hedefleri ve paket gruplarıyla kontrast oluşturur. Kural ile karıştırılmamalıdır.
Çalışma dosyaları
Yürütülebilir bir 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 eden bir tekniktir. Bu teknik, beyan edilmemiş girişleri okumamasını veya beyan edilmemiş çıkışları yazmamasını sağlar. Korumalı alan, hermetikliği büyük ölçüde iyileştirir ancak genellikle performans maliyetine sahiptir ve işletim sisteminin desteklenmesini 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 bilgiler yerleştiren bir özellik. Örneğin bu; kaynak denetimi, derleme zamanı ve sürüm derlemelerinin çalışma alanı ya da ortamla ilgili diğer bilgileri için kullanılabilir.
Damga özelliğini destekleyen --workspace_status_command
işareti ve kurallar ile etkinleştirin.
Starlark
Kurallar ve makrolar yazmak için kullanılan uzantı dili. Yapılandırma amacı ve daha iyi performans sağlamak amacıyla, Python'un kısıtlanmış bir alt kümesi (sözdizimsel ve dil bilgisi olarak). .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ü kullanır (ör. def
işlev tanımları yoktur).
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ıç 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.
Hedef
BUILD
dosyasında tanımlanan ve bir etiket ile tanımlanan nesne. Hedefler, son kullanıcı açısından çalışma alanının derlenebilir birimlerini temsil eder.
Kural örnekleyerek tanımlanan bir hedefe kural hedefi adı verilir. Kurala bağlı olarak, bunlar çalıştırılabilir (cc_binary
gibi) veya test edilebilir (cc_test
gibi). Kural hedefleri genellikle özellikleri (deps
gibi) aracılığıyla diğer hedeflere bağlıdı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 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 yapı 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 kalıbı
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), ...
(mevcut paket ve yinelenen şekilde tüm alt paketlerdir). 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 hedefleri, test kurallarından örneklendirilir ve bu nedenle yürütülebilir test dosyası içerir. Yürütülebilir dosya tamamlandıktan sonra sıfır dönüş kodu, 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.
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. Araç zinciri de platforma göre değişiklik gösterebilir. Yani, araç zinciri aynı dil için 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çme işlemine araç zinciri çözme adı verilir.
Üst düzey hedef
Derleme hedefi Bazel komut satırında istenirse üst düzeydir. Örneğin, //:foo
//:bar
'a bağımlıysa ve bazel build //:foo
çağrılmışsa bu derleme için //:foo
üst düzeydir. //:bar
, her iki hedefin de oluşturulması gerekmesine rağmen üst düzey değildir. Üst düzey ve üst düzey olmayan hedefler arasındaki önemli 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 bir geçiş ile 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ı, bölünmüş geçişlerdir. Bu geçişlerde hedef grafiğin belirli kısımları, her bir çatal için farklı yapılandırmalarla çatallanır. Örneğin, tek bir derlemede bölünmüş geçişleri kullanarak ARM ve x86 için derlenmiş yerel ikili programlara sahip bir Android APK'sı oluşturulabilir.
Ayrıca 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 sistemindeki istenmeyen bağımlılıkları engelleyen iki mekanizmadan biri: bir hedefin başka hedeflerin bağlı olup olmayacağını kontrol etmek için hedef görünürlük, bir BUILD
veya .bzl
dosyasının belirli bir .bzl
dosyasını yükleyip yükleyemeyeceğini kontrol eden yük görünürlüğü. Bağlam olmadan "görünürlük" genellikle hedef görünürlüğü ifade eder.
Ayrıca bkz: Görünürlük belgeleri
Ç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ış, 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.