Bazel Sözlüğü

Sorun bildir Kaynağı göster

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