Bazel Sözlüğü

7.3 · 7.2 · 7.1 · 7.0 · 6.5

İş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 BUILDdosyaları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.

Bkz. Sağlayıcı dokümanları

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).

Bkz. 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ıç 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.