Bazel Sözlüğü

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 . 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 tanımlanmış giriş/çıkış yapıları gibi meta verileri içerir.

Bkz. Kural dokümanları

İşlem önbelleği

Yürütülen işlemlerin oluşturduğu çıkışlarla eşlemesini depolayan disk üzerinde bir önbellek. Önbellek anahtarı, işlem anahtarı olarak bilinir. Bazel'in artımlı modelinin temel bileşenidir. Önbellek, çıkış ana dizininde depolanır ve bu nedenle Bazel sunucusunun yeniden başlatılmasından etkilenmez.

İş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 oluşturulur ve yürütme aşamasında kullanılır.

İşlem grafiği sorgusu (aquery)

Derleme işlemleri hakkında sorgu yapabilen 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 kararlı 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 giriş olabilir ancak yalnızca en fazla bir işlem tarafından oluşturulmalıdır.

Dosya hedefine karşılık gelen bir yapı, etiketle adreslenebilir.

En Boy Oranı

Kuralların bağımlılıkları içinde ek işlemler oluşturması için 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şturulur. Örneğin, IDE'ler için meta veriler oluşturmak ve linting işlemleri oluşturmak için kullanılabilir.

Bkz. Aspects belgeleri

En boy oranı üzerinde en boy oranı

Yönlerin diğer yönlerin sonuçlarına uygulanabileceği bir kompozisyon 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ğinin üzerine uygulanması için B'un provides özelliğinde reklamını yaptığı sağlayıcılar, A'ün required_aspect_providers özelliğinde istediğiyle eşleşmelidir.

Özellik

Hedef başına derleme bilgilerini ifade etmek için kullanılan bir kural parametresi. Örneğin, srcs, deps ve copts, sırasıyla hedefin kaynak dosyalarını, bağımlılıklarını ve özel derleyici seçeneklerini tanımlar. Belirli bir hedef için kullanılabilen özellikler, 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'a özel sürümü. Google'ın tek kod deposu için ana derleme sistemi.

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, giriş olarak bir BUILD dosyası alır ve bu dosyayı bağımlılıklar grafiği oluşturmak ve ara ve nihai yazılım çıkışlarını oluşturmak için yapılması gereken işlemleri türetmek amacıyla kullanır. BUILD dosyası, bir dizini ve BUILD dosyası içermeyen tüm alt dizinleri paket olarak işaretler ve kurallar tarafından oluşturulan hedefler içerebilir. Dosya BUILD.bazel olarak da adlandırılabilir.

BUILD.bazel Dosyası

BUILD Dosyası başlıklı makaleyi inceleyin. Aynı dizindeki BUILD dosyasına göre önceliklidir.

.bzl Dosyası

Kuralları, makroları ve sabitleri tanımlayan, Starlark ile yazılmış bir dosya. Ardından, load() işlevi kullanılarak BUILDdosyalarına aktarılabilir.

Grafik oluşturma

Bazel'in derleme yapmak için oluşturduğu ve gezdiği bağımlılık grafiği. Hedefler, yapılandırılmış hedefler, işlemler ve öğeler gibi düğümleri içerir. İstekte bulunulan bir hedef grubunun bağlı olduğu tüm yapılar güncel olduğunda derleme tamamlanmış kabul edilir.

Derleme ayarı

Starlark tarafından tanımlanan bir yapılandırma parçası. Geçişler, bir alt grafiğin yapılandırmasını değiştirmek için derleme ayarlarını belirleyebilir. Kullanıcıya yapı işareti olarak da bilinen bir komut satırı işareti olarak gösteriliyorsa.

Temiz derleme

Önceki derlemelerin sonuçlarını kullanmayan bir derleme. Bu işlem 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 olmasını sağlar.

İ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 komutu için geçerli 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

Kuralların işlem oluşturma şeklini etkileyen, kural tanımlarının dışındaki 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ırma budama

Hedefin gerçekten ihtiyaç duyduğu yapılandırma parçalarını dahil etme işlemi. Örneğin, Java ikili dosyası //:j'ü C++ bağımlılığı //:c ile derliyorsanız --javacopt değerini //:c yapılandırmasına dahil etmek israftır. Çünkü --javacopt'nin değiştirilmesi, C++ derleme önbelleğe alınabilirliğini gereksiz yere bozar.

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ırmayla 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 derleniyorsa iki yapılandırılmış hedefi vardır: <//:foo, x86> ve <//:foo, arm>.

Doğruluk

Bir derleme, çıkışı geçişli girişlerinin durumunu doğru yansıttığında doğrudur. Bazel, doğru derlemeler elde etmek için hermetik, yeniden üretilebilir ve derleme analizini ve 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.

Belirli bağlamlarda harici bağımlılık anlamına da gelebilir. Modüller bölümüne bakın.

Depset

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 depsetlere yinelenen şekilde referans vermek için uygulanır. Kural uygulamalarında, kural derleme grafiğinin en üst düzeyinde olmadığı sürece depsetler listelere dönüştürülerek "düzleştirilmemelidir". Büyük depolama alanlarını düzleştirmek ç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

Uzak önbelleğe alma özelliği için yerel bir disk üzerinde blob depolama alanı. Gerçek bir uzak blob deposuyla birlikte kullanılabilir.

Distdir

Bazel'in kod deposu 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 derecesine sahip derleme) yürütülür. 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

Derlemenin üçüncü aşaması. Analizler aşamasında oluşturulan işlem grafiğindeki işlemleri yürütür. Bu işlemler, öğeleri 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ü

Çalışma alanının çıktı tabanı dizininde, korumalı alan dışındaki derlemelerde yerel işlemlerin yürütüldüğü 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

Derleme ve test işlemleri üzerinde harici etkiler yoksa derleme hermetiktir. Bu, sonuçların deterministik ve doğru olmasını sağlar. Ö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 tür derlemeler için doğru sonuçlar elde etmeyi 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) adı, path/to/package hedefi açıklayan BUILD dosyasını içeren dizinin yolu (bu dizin paket olarak da bilinir) ve target, hedefin adıdır. Duruma bağlı olarak bu söz dizimi 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.

Eski makro

Normal bir Starlark işlevi olarak tanımlanan ve BUILD dosyası çalıştırmanın yan etkisi olarak çalışan bir makro çeşidi.

Eski makrolar, işlevlerin yapabileceği her şeyi yapabilir. Bu, kolaylık sağlayabileceği gibi okuma, yazma ve kullanmayı da zorlaştırabilir. Eski bir makro, bağımsız değişkenlerini beklenmedik bir şekilde değiştirebilir veya select() veya yanlış yazılmış bir bağımsız değişken verildiğinde başarısız olabilir.

Sembol makrolarıyla karşılaştırma

Bkz. Eski makro dokümanları

Makro

Tek bir Starlark çağrılabilir öğesi 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 beyanlarına genişletilir.

İki türde bulunur: sembolik makrolar (Bazel 8'den beri) ve eski makrolar.

Mnemonic

Kuraldaki bir işlemin ne yaptığını hızlıca anlamak için kural yazarı tarafından seçilen kısa, okunabilir bir dize. Hatırlatıcılar, yayınlama 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 diğer modüllere bağımlı olabilecek birden fazla sürümü olabilecek bir Bazel projesi. Bu, Maven öğesi, npm paketi, Go modülü veya Cargo kutusu gibi diğer bağımlılık yönetimi sistemlerindeki bilinen kavramlara benzer. Modüller, Bazel'in harici bağımlılık yönetimi sisteminin temelini oluşturur.

Her modül, kökünde bir MODULE.bazel dosyası bulunan bir depo ile desteklenir. Bu dosya, modülün kendisiyle ilgili meta verileri (adı ve sürümü gibi), doğrudan bağımlılıkları ve araç zinciri kayıtları ile modül uzantısı girişi gibi diğer çeşitli verileri içerir.

Modül meta verileri Bazel kayıtlarında barındırılır.

Bkz. Bazel modülleri

Modül Uzantısı

Modül bağımlılık grafiğindeki girişleri okuyarak ve repo kurallarını çağırarak repo oluşturmak için çalıştırılabilir bir mantık parçası. Modül uzantıları, depo kurallarına benzer özelliklere sahiptir. Bu özellikler sayesinde internete erişebilir, dosya G/Ç işlemleri yapabilirler.

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. Çıktıları çalışma alanının kaynak ağacından (ana depo) ayırmak için kullanılır. Çıkış kullanıcı kökünde bulunur.

Çıkış grupları

Bazel bir hedefi oluşturmayı tamamladığında oluşturulması beklenen bir dosya grubu. Kurallar, normal çıkışlarını "varsayılan çıkış grubuna" yerleştirir (ör.java_library için .jar dosyası, cc_library hedefleri için .a ve .so). Varsayılan çıkış grubu, komut satırında bir hedef istendiğinde yapılarının oluşturulduğu çı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. Ayrı çalışma alanlarının derleme çıkışlarına karşılık gelen alt dizinleri içerir. Bu dizinler çıktı tabanları olarak da bilinir.

Paket

BUILD dosyası tarafından tanımlanan hedefler grubu. Paketin adı, BUILD dosyasının repo köküne göreli yoludur. Bir paket, alt paketler veya BUILDdosyaları içeren alt dizinler içerebilir. Böylece paket hiyerarşisi oluşturulur.

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ının çalıştığı ("yürütme" platformları) ve makine hedeflerinin oluşturulduğu ("hedef platformlar") makineler dahildir.

Sağlayıcı

Bağımlılık ilişkileri boyunca kural hedefleri arasında aktarılacak bir 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 genellikle depsets ile birlikte kullanılır. Yerleşik sağlayıcı örneği DefaultInfo'tür.

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.

query (komut)

Derlemenin yükleme sonrası hedef grafiği üzerinde çalışan bir sorgu aracı. Bu yöntem nispeten hızlıdır ancak select(), derleme işaretleri, yapılar veya işlemler'in etkilerini analiz edemez.

Bkz. Sorgu oluşturma, 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çisi dosyası MODULE.bazel (bu reponun bir Bazel modülü temsil ettiğini belirtir), REPO.bazel veya eski bağlamlarda WORKSPACE ya da 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 bulunabilir.

Ana depo, mevcut Bazel komutunun çalıştırıldığı depodur.

Harici depolar, MODULE.bazel dosyalarında modüller belirtilerek veya modül uzantılarında depolama alanı kuralları çağrılarak tanımlanır. İsteğe bağlı olarak diskteki önceden belirlenmiş bir "sihirli" konuma getirilebilirler.

Her deponun benzersiz ve sabit bir kanonik adı ve diğer depolardan görüntülendiğinde farklı olabilecek görünür adları vardır.

Bkz. Harici bağımlılıklara genel bakış

Depo ö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 repo 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ı 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.

Bkz. Repo kuralı dokümanları

Yeniden üretilebilirlik

Bir derleme veya testin, zaman, yöntem veya ortamdan bağımsız olarak her zaman aynı giriş grubunu her zaman aynı çıkış grubunu üreteceği özelliği. 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 hedeflerini tanımlamak için kullanılan 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 aktaracağını söyler. .bzl yazarları açısından kurallar, Bazel'i yeni programlama dillerini ve ortamlarını desteklemek için 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.

Bkz. Kural dokümanları

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ı

Bir yürütülebilir 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 testi 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 maliyeti vardır ve işletim sisteminden destek 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 bilgi yerleştiren bir özellik. Örneğin, bu özellik; kaynak denetimi, derleme süresi ve sürüm derlemeleri için çalışma alanı veya ortamla ilgili diğer bilgiler için kullanılabilir. Damga özelliğini destekleyen --workspace_status_command işareti ve kuralları aracılığıyla etkinleştirin.

Starlark

Kural ve makro yazmak için kullanılan uzantı dili. Yapılandırma ve daha iyi performans için tasarlanmış, kısıtlanmış bir Python alt kümesidir (söz dizimi ve dil bilgisi açısından). .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şaretler grubu (ör. bazel --host_jvm_debug build). 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.

Sembolik makro

Kural benzeri bir özellik şemasıyla tanımlanan makro çeşidi, dahili olarak tanımlanan hedefleri kendi paketlerinden gizlemenize olanak tanır ve makronun tanımladığı hedeflerde tahmin edilebilir bir adlandırma kalıbı uygular. Büyük eski makro kod tabanlarında görülen bazı sorunlardan kaçınmak için tasarlanmıştır.

Bkz. Sembol makrosu dokümanları

Hedef

BUILD dosyasında tanımlanan ve etiket ile tanımlanan bir nesne. Hedefler, bir çalışma alanının son kullanıcı açısından oluşturulabilir birimlerini temsil eder.

Bir kural örneği oluşturularak tanımlanan hedefe kural hedefi denir. Kuralla ilgili olarak bunlar çalıştırılabilir (cc_binary gibi) veya test edilebilir (cc_test gibi) olabilir. Kural hedefleri genellikle özellikleri aracılığıyla diğer hedeflere bağlıdır (deps gibi); bu bağımlılıklar hedef grafiğinin temelini oluşturur.

Kural hedeflerinin yanı sıra dosya hedefleri ve paket grubu hedefleri de vardır. Dosya hedefleri, BUILD dosyası içinde referans verilen 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 derleme 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 desen

Komut satırında bir hedef grubu belirtmenin bir yolu. Sık kullanılan kalıplar :all (tüm kural hedefleri), :* (tüm kural + dosya hedefleri), ... (geçerli paket ve tüm alt paketler iteratif olarak) şeklindedir. 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, test kurallarından oluşturulan hedefleri içerir ve bu nedenle test çalıştırılabilir dosyasını içerir. Yürütülebilir dosyanın tamamlanmasından sonra döndürülen sıfır değeri, testin başarılı olduğunu gösterir. Bazel ile testler arasındaki tam sözleşme (ör. test ortamı değişkenleri, test sonucu toplama yöntemleri) 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. Bir araç zinciri platforma göre de değişebilir. Yani, aynı dile ait olsa bile Unix derleyici araç zincirinin bileşenleri Windows varyantında farklı olabilir. Platform için doğru araç zincirini seçme işlemine araç zinciri çözme adı verilir.

Üst düzey hedef

Bazel komut satırında istenen bir derleme hedefi üst düzeydir. Örneğin, //:foo, //:bar'a bağlıysa ve bazel build //:foo çağrılırsa bu derleme için //:foo üst düzeydir ve //:bar üst düzey değildir. Ancak her iki hedefin de derlenmesi gerekir. Üst düzey hedefler ile üst düzey olmayan hedefler arasındaki önemli bir 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 geçiş tarafından 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ı, hedef grafiğin belirli bölümlerinin her çatal için farklı yapılandırmalarla çatallandığı ayrılmış geçişlerdir. Örneğin, tek bir derlemede ARM ve x86 için derlenmiş yerel ikili dosyalar içeren bir Android APK oluşturabilirsiniz.

Bkz. Kullanıcı tanımlı geçişler

Ağaç yapıları

Dosya koleksiyonunu temsil eden bir yapı. Bu dosyalar yapı taşlarından oluşmadığından, bu dosyalarda çalışan bir işlem, ağaç yapı taşını giriş veya çıkış 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ğımlı olup olmadığını kontrol etmek için hedef görünürlüğü ve bir BUILD veya .bzl dosyasının belirli bir .bzl dosyasını yükleyip yükleyemeyeceğini kontrol etmek için yükleme görünürlüğü. Bağlam olmadan "görünürlük" genellikle hedef görünürlüğü ifade eder.

Bkz. Görünürlük dokümanları

Ç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ış ve 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.