İşlem
Derleme sırasında çalıştırılacak bir komut. Örneğin, yapıları giriş olarak alan ve diğer yapıları çıkış olarak üreten bir derleyici çağrısı. 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
Bu işlemlerin okuduğu ve oluşturduğu eylemlerin ve yapıların bellek içi grafiği. Grafik, kaynak dosya olarak bulunan (örneğin, dosya sisteminde) yapıların yanı sıra BUILD
dosyalarında bahsedilmeyen, oluşturulmuş ara/nihai yapıları 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, derleme kurallarının gerçek iş derlemelerine nasıl dönüştüğünü analiz etme olanağı sağlar.
İşlem tuşu
Bir işlemin önbellek anahtarı. Eyleme bağlı olarak işlemde yürütülecek komutu, derleyici bayraklarını, kitaplık konumlarını veya sistem başlıklarını içerebilecek 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ı
Yapının ikinci aşaması. BUILD
dosyalarında belirtilen hedef grafiği işleyerek yürütme aşamasında gerçekleştirilecek işlemlerin sırasını belirleyen bir bellek içi işlem grafiği oluşturur. Bu, kural uygulamalarının
değerlendirildiği aşamadır.
Yapı
Kaynak dosya veya oluşturulmuş bir 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ı, bir etiketle belirtilebilir.
En Boy Oranı
Kuralların bağımlılıklarında ek işlemler oluşturan bir mekanizma. Örneğin, hedef A B'ye bağımlıysa bir bağımlılık kenarından B'ye yukarı geçen ve ek çıkış dosyaları oluşturmak ve toplamak için B'de ek işlemler çalıştıran bir özellik uygulanabilir. Bu ek işlemler, aynı özelliğin gerekli olduğu hedefler arasında önbelleğe alınır ve 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.
Ayrıca bkz. Yön belgeleri
En-Boy
Yönlerin başka yönlerin sonuçlarına uygulanabildiği bir bileşim mekanizması. Örneğin, IDE'ler tarafından kullanılmak üzere bilgi oluşturan bir özellik, protondan .java
dosyaları oluşturan bir detayın ü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, 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ı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ındaki ayarları da içe aktarabilir.
Blaze
Bazel'in Google'daki dahili sürümü. tek deposu için Google'ın ana derleme sistemidir.
DERLEME Dosyası
BUILD
dosyası, Bazel'a oluşturulması gereken yazılım çıkışlarının neler olduğunu, bunların bağımlılıklarının ne olduğunu ve bunların 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 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ı bölümüne bakın. Aynı dizindeki bir BUILD
dosyasına göre önceliklidir.
.bzl Dosyası
Starlark'ta yazılan kuralları, makroları ve sabitleri tanımlayan bir dosyadır. Daha sonra bu dosyalar, load()
işlevi kullanılarak BUILD
dosyalarına aktarılabilir.
Grafik oluştur
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 yapılar gibi düğümler 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 derleme işareti olarak da bilinen bir komut satırı işareti olarak gösterilirse.
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 çalışmaya devam eder ancak bir süre işlem yapılmadığında (veya açıkça bazel kapanmadığında) otomatik olarak durur. Bazel'in sunucu ve istemciye bölünmesi, JVM başlatma süresinin amorti edilmesine yardımcı olur ve eylem grafiği komutlar genelinde 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 özel işaret grubu. Komut işaretleri, komuttan (bazel build <command flags>
) sonra belirtilir. İş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ğerlerindeki değişiklikler, Bazel'in bellek içi 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, ana makine araçları veya çapraz derleme 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
olan //:j
Java ikili programı derlerseniz, --javacopt
değerini değiştirmek C++ derleme önbellekliğini gereksiz şekilde bozacağından, //:c
yapılandırmasına --javacopt
değerini dahil etmek israflı olur.
Yapılandırılmış sorgu (cquery)
Yapılandırılmış hedefleri (analiz aşaması tamamlandıktan sonra) sorgulayan bir sorgu aracı. Yani select()
ve derleme işaretleri (--platforms
gibi) sonuçlara doğru şekilde yansıtılır.
Ayrıca bkz: cquery belgeleri
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 bunu sağlar.
Ö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 düzgün bir şekilde yansıttığında doğru olarak kabul edilir. 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ında yönlendirilen bir kenar. //:foo
özellik değerleri //:bar
öğesine referans veriyorsa //:foo
hedefinin //:bar
hedefinde hedef bağımlılığı olur. //:foo
içindeki bir işlem, //:bar
içindeki bir eylem tarafından oluşturulan bir giriş yapısına bağlıysa //:foo
için //:bar
eylem bağımlılığı vardır.
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 depler'e (yüz binlerce dosyaya) sahip olma yaygın olduğundan, noktaları birleştirme zaman ve alan açısından verimli olacak şekilde 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.
Ayrıca 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ışı olarak çalışmasını sağlar.
Dinamik yürütme
Çeşitli buluşsal yöntemlere göre yerel ve uzaktan yürütme arasında seçim yapan ve daha hızlı ve başarılı olan yöntemin yürütme sonuçlarını kullanan bir yürütme stratejisi. Bazı işlemler yerel olarak daha hızlı yürütülürken (ör. bağlama) bazıları da uzaktan daha hızlı gerçekleştirilir (örneğin, paralel yapılabilir derleme işlemi gibi). Dinamik yürütme stratejisi, olası en iyi artımlı ve temiz derleme sürelerini sağlayabilir.
Yürütme aşamasında
Yapının üçüncü aşaması. Analiz aşamasında oluşturulan eylem 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. Spawn stratejileri şu işlemlerin nasıl yürütüleceğini kontrol eder: yerel, uzaktan, dinamik, korumalı alana alma, 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 yer alan bir dizin. Dizin içerikleri ç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 depoların sembolik bağlantılarını ve çıkışları depolamak için bazel-out
dizinini de içerir. Derlemenin bağlı olduğu paketlerin geçişli olarak kapatılmasını temsil eden dizinlerden bir sembol bağlantı ormanı oluşturarak yükleme aşamasında hazırlanır. Komut satırından bazel info
execution_root
ile erişilebilir.
Dosya
Yapı bölümünü inceleyin.
Hermetiklik
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 ağ erişimine izin vermez, bildirilen girişlere erişimi kısıtlar, sabit zaman damgaları ile saat dilimlerini 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 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
Bir hedef için tanımlayıcı. Genellikle @repo//path/to/package:target
biçimindedir. Burada repo
, hedefi içeren deponun (görünürdeki) 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.
Şu makaleyi de inceleyebilirsiniz: Etiketler
Yükleme aşaması
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 oluşturmanın ikinci aşaması olan analiz aşamasına dahil edilir.
Makro
Tek bir Starlark işlevi altında birden fazla kural hedef bildirimini birlikte oluşturan bir mekanizma. BUILD
dosyalarında ortak kural bildirimi kalıplarının yeniden kullanılmasını sağlar. Yükleme aşamasında temel kural hedefi bildirimlerine genişletildi.
Ayrıca bkz: Makro belgeleri
Hafıza güçlendirici
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ından Javac
, C++ kurallarından CppCompile
ve Android kurallarından 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.
Şu kaynakları da inceleyin: 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'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ın depolanacağı çalışma alanına özel bir dizindir. Çı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 çıkışlarının depolandığı kullanıcıya özel bir dizin. Dizin adı, kullanıcının sistem kullanıcı adından türetilir. Sistemde aynı projeyi birden fazla kullanıcı aynı anda oluşturuyorsa çı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 bir hedef. Genellikle visibility
özellik değerlerinde kullanılır.
Platform
Derlemede yer alan "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şkileriyle birlikte kural hedefleri arasında geçirilecek bilgi birimini açıklayan bir şema. Bu liste 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 sık sık kullanılır. Yerleşik sağlayıcıya örnek olarak DefaultInfo
verilebilir.
Ayrıca bkz. Sağlayıcı dokümanları
Sorgu (kavram)
Hedef özellikleri ve bağımlılık yapılarını anlamak için derleme grafiğini analiz etme süreci. 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ı
Depo
Kökünde sınır işaretçisi dosyası bulunan ve Bazel derlemesinde kullanılabilecek kaynak dosyaları içeren bir dizin ağacı. Genellikle depo 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 ve çalışma alanlarında paylaşılabilir, paylaşılan içerik adreslenebilir bir önbellek. İ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çin SHA-256 sağlamaları belirtilmişse önbelleğe alınır.
Depo kuralı
Bazel'a 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. Alternatif olarak, modül uzantıları tarafından da çalıştırılabilir.
Depo kuralları internete erişebilir veya dosya G/Ç işlemi gerçekleştirebilir. En yaygın depo kuralı, kaynak dosyaları içeren bir arşivi internetten indirmek için http_archive
işlemidir.
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. Bu, çıkışların doğru veya istenen çıkışların her zaman doğru olduğu anlamına gelmez.
Kural
cc_library
gibi bir BUILD
dosyasında kural hedefleri tanımlamaya yönelik bir şema. BUILD
dosyasının yazarı açısından kural, bir dizi özellikden ve kara kutu mantığından oluşur. Bu mantık, kural hedefine çıkış yapılarının nasıl oluşturulacağını ve bilgilerin diğer kural hedeflerine nasıl iletileceğini belirtir. .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ı kuralında hedefler, sağlayıcılar biçiminde aşağı akış bağımlılıklarına bilgi iletir ve çıkış yapılarının nasıl oluşturulacağını açıklayan işlemler kaydeder. Bu işlemler yürütme aşamasında gerçekleştirilir.
Şu makaleyi de inceleyebilirsiniz: Kural belgelerini
Kural hedefi
Bir kuralın örneği olan 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 çıktısıdır ve çalıştırma dosyaları da testin çalışma zamanı verisi bağımlılıklarıdır. Yürütülebilir dosyanın çağrılmasından önce (bazel testi sırasında) Bazel, yürütülebilir test dosyasıyla birlikte çalıştırma dosyası ağacını kaynak dizin yapılarına göre hazırlar.
Ayrıca bkz. Runfiles dokümanları
Korumalı alana alma
Devam eden bir işlemi kısıtlanmış ve geçici bir yürütme kökü içinde izole ederek bildirilmemiş girişleri okumamasını veya bildirilmemiş çıkışları yazmamasını sağlamaya yardımcı olan bir teknik. Korumalı alan, hermetikliği büyük ölçüde iyileştirir ancak genellikle performans maliyetine sahiptir ve işletim sisteminin desteklenmesini gerektirir. Performans maliyeti platforma göre değişir. Linux'ta bu önemli bir nokta değildir ancak macOS'te korumalı alanı kullanılamaz hale getirebilir.
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 bilgi yerleştirme özelliği. Ö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ı Starlark'ın daha da kısıtlı bir sürümünü (def
işlev tanımı olmaması gibi) kullanır. Bu sürüm daha önce Skylark olarak bilinir.
Ayrıca bkz: Starlark dili dokümanları
Startup flag'leri
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. Dolayısıyla başlangıç işaretlerinde yapılan herhangi bir değişiklik, sunucunun yeniden başlatılmasına neden olur. Başlangıç işaretleri 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 o pakette 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
Hedefler ve bağımlılıklarının bellek içi grafiği. Yükleme aşamasında üretilir ve analiz aşamasında bir girdi olarak kullanılır.
Hedef kalıbı
Komut satırında bir hedef grubu belirtmenin bir yoludur. 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ı kökünden yinelemeli olarak tüm paketlerdeki tüm kural ve dosya hedefleri anlamına gelir.
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ışlar oluşturmak amacıyla kullanılan bir araç seti. Araç zinciri genellikle derleyiciler, bağlayıcılar, yorumlayıcılar ve/veya linder'lar 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ç zincirinin seçilmesine araç zinciri çözünürlüğü 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şlemesi. Aynı kuraldan örneklendirilmiş olsalar bile yapı grafiğindeki hedeflerin 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ısı
Bir dosya koleksiyonunu temsil eden bir yapı. Bu dosyaların kendileri yapı olmadığından, bunlar üzerinde çalışan bir işlem yerine ağaç yapısını giriş veya çıktı 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, genellikle "görünürlük",
hedef görünürlüğü ifade eder.
Ayrıca bkz: Görünürlük belgeleri
Workspace
Tüm Bazel komutlarının paylaştığı ortam, aynı ana depodan çalışır.
Geçmişte "depo" ve "çalışma alanı" kavramlarının karıştırıldığını unutmayın. "Çalışma alanı" terimi, genellikle ana depoyu ifade etmek için kullanılmış, hatta bazen "depo"nun eş anlamlısı olarak bile kullanılmıştır. Netlik sağlamak adına bu tür kullanımdan kaçınılmalıdır.