Bazel Sözlüğü

Sorun bildirin Kaynağı göster

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