Bzlmod, Bazel kayıtlarından (Bazel modüllerinin veritabanları) bilgi isteyerek bağımlılıklarını keşfeder. Bazel yalnızca bir tür kayıt defteri (dizin kayıt defteri) yerel dizinleri veya belirli bir biçimi izleyen statik HTTP sunucularını destekler.
Dizin kayıt otoritesi
Dizin kayıt otoritesi, ana sayfaları, bakım verenleri, her bir sürümün MODULE.bazel
dosyası ve her bir sürümün kaynağının nasıl alınacağı da dahil olmak üzere bir modül listesi hakkında bilgi içeren yerel bir dizin veya statik bir HTTP sunucusudur. Kaynak arşivlerin kendisini sunması gerekmez.
Dizin sicil dairesi şu biçimde olmalıdır:
/bazel_registry.json
: Kayıt defterinin meta verilerini içeren isteğe bağlı bir JSON dosyası./modules
: Bu kayıt defterindeki her modül için bir alt dizin içeren bir dizin/modules/$MODULE
: Modülün her sürümü için$MODULE
adlı bir alt dizin ve bu modülün meta verilerini içerenmetadata.json
dosyasını içeren bir dizin./modules/$MODULE/$VERSION
: Aşağıdaki dosyaları içeren bir dizin:MODULE.bazel
: Bu modül sürümününMODULE.bazel
dosyası. Bunun, kaynak arşivdekiMODULE.bazel
dosyası olmadığını, Bazel'in harici bağımlılık çözümü sırasında okunanMODULE.bazel
dosyası olduğunu unutmayın (kayıt defteri dışında bir geçersiz kılma olmadığı sürece).source.json
: Bu modül sürümünün kaynağının nasıl alınacağına dair bilgiler içeren bir JSON dosyasıpatches/
: Yalnızcasource.json
"arşiv" türüne sahip olduğunda kullanılan, yama dosyalarını içeren isteğe bağlı bir dizinoverlay/
: Yer paylaşımı dosyalarını içeren isteğe bağlı bir dizin. Yalnızcasource.json
"arşiv" türüne sahip olduğunda kullanılır.
bazel_registry.json
bazel_registry.json
, kayıt defterinin tamamı için geçerli meta verileri belirten isteğe bağlı bir dosyadır. Dosyada aşağıdaki alanlar bulunabilir:
mirrors
: Kaynak arşivler için kullanılacak aynaların listesini belirten bir dize dizisi.- Yansıtılan URL, yansıtılan URL'nin ve modülün
source.json
dosyası tarafından protokol olmadan belirtilen kaynak URL'sinin bir araya getirilmesidir. Örneğin, bir modülün kaynak URL'sihttps://foo.com/bar/baz
ise vemirrors
,["https://mirror1.com/", "https://example.com/mirror2/"]
içeriyorsa Bazel'in sırayla deneyeceği URL'lerhttps://mirror1.com/foo.com/bar/baz
,https://example.com/mirror2/foo.com/bar/baz
ve son olarak orijinal kaynak URL'nin kendisihttps://foo.com/bar/baz
olur.
- Yansıtılan URL, yansıtılan URL'nin ve modülün
module_base_path
:source.json
dosyasındalocal_path
türüne sahip modüllerin temel yolunu belirten bir dize
metadata.json
metadata.json
, modülle ilgili bilgileri içeren isteğe bağlı bir JSON dosyasıdır. Bu dosya aşağıdaki alanları içerir:
versions
: Her biri bu kayıt defterinde bulunan modülün bir sürümünü belirten bir dize dizisi. Bu dizi, modül dizininin alt öğeleriyle eşleşmelidir.yanked_versions
: Bu modülün geri çekilen sürümlerini belirten bir JSON nesnesi. Anahtarlar, kaldırılacak sürümler, değerler ise sürümün neden kaldırıldığının açıklamaları (ideal olarak daha fazla bilginin bağlantısını içeren) olmalıdır.
BCR için metadata.json
dosyasında daha fazla bilgi gerektiğini unutmayın.
source.json
source.json
, bir modülün belirli bir sürümünün nasıl getirileceği hakkında bilgi içeren zorunlu bir JSON dosyasıdır. Bu dosyanın şeması, varsayılan olarak archive
olan type
alanına bağlıdır.
type
archive
ise (varsayılan) bu modül sürümü birhttp_archive
repo kuralı tarafından desteklenir ve belirli bir URL'den bir arşiv indirilerek ve içeriği ayıklanarak getirilir. Aşağıdaki alanları destekler:url
: Kaynak arşivin URL'si olan bir dizeintegrity
: Arşivin Alt Kaynak Bütünlüğü sağlama toplamı olan bir dizestrip_prefix
: Kaynak arşivi ayıklanırken kaldırılacak dizin ön eki olan bir dizeoverlay
: Ayıklanan arşivin üzerine yerleştirilecek yer paylaşımı dosyalarını içeren bir JSON nesnesi. Yama dosyaları/modules/$MODULE/$VERSION/overlay
dizininde bulunur. Anahtarlar yer paylaşımı dosya adları, değerler ise yer paylaşımı dosyalarının bütünlük sağlama toplamıdır. Yer paylaşımları, yama dosyalarından önce uygulanır.patches
: Ayıklanan arşive uygulanacak yama dosyalarını içeren bir JSON nesnesi. Yama dosyaları/modules/$MODULE/$VERSION/patches
dizininde bulunur. Anahtarlar, yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlamasıdır. Yamalar, yer paylaşımı dosyalarından sonra uygulanır.patch_strip
: Bir sayı; Unixpatch
işlevinin--strip
bağımsız değişkeniyle aynıdır.archive_type
: İndirilen dosyanın arşiv türü olan bir dize (http_archive
'dakitype
ile aynıdır).
type
git_repository
ise bu modül sürümü birgit_repository
repo kuralı tarafından desteklenir ve bir Git kod deposu klonlanarak getirilir.- Şu alanlar desteklenir ve doğrudan temel
git_repository
repo kuralına yönlendirilir:remote
,commit
,shallow_since
,tag
,init_submodules
,verbose
vestrip_prefix
.
- Şu alanlar desteklenir ve doğrudan temel
type
local_path
ise bu modül sürümü,local_repository
depo kuralı tarafından desteklenir ve yerel diskteki bir dizinle sembolik olarak bağlanır. Aşağıdaki alanı destekler:path
: Deponun yerel yolu. Aşağıdaki şekilde hesaplanır:path
mutlak bir yolsa olduğu gibi kalırpath
göreli bir yolsa vemodule_base_path
mutlak bir yolsa<module_base_path>/<path>
olarak çözümlenir.- Hem
path
hem demodule_base_path
göreli yolsa<registry_path>/<module_base_path>/<path>
olarak çözülür. Kayıt otoritesi yerel olarak barındırılmalı ve--registry=file://<registry_path>
tarafından kullanılmalıdır. Aksi takdirde Bazel hata verir.
Bazel Merkezi Kaydı
https://bcr.bazel.build/ adresindeki Bazel Merkezi Kaydı (BCR), bazelbuild/bazel-central-registry
GitHub deposu tarafından desteklenen içeriklerin yer aldığı bir dizin kaydıdır. İçeriğine https://registry.bazel.build/ adresindeki web ön ucunu kullanarak göz atabilirsiniz.
BCR, Bazel topluluğu tarafından yönetilir ve katkıda bulunanların çekme isteğinde bulunmasına izin verilir. BCR katkı yönergelerine bakın.
BCR, normal bir dizin sicil dairesi biçimini izlemenin yanı sıra her modül sürümü için bir presubmit.yml
dosyası (/modules/$MODULE/$VERSION/presubmit.yml
) gerektirir. Bu dosya, bu modül sürümünün geçerliliğini kontrol etmek için kullanabileceğiniz birkaç temel derleme ve test hedefini belirtir. BCR'nin CI ardışık düzenlerinde de modüller arasında birlikte çalışabilirliği sağlamak için bu yöntem kullanılır.
Kayıt otoritelerini seçme
Tekrarlanabilir Bazel işareti --registry
, modül isteğinde bulunulacak kayıt defteri listesini belirtmek için kullanılabilir. Böylece projenizi, bağımlılıklarını üçüncü taraf veya dahili kayıt defterinden alacak şekilde ayarlayabilirsiniz. Önceki kayıtlar önceliklidir. Kolaylık sağlamak için projenizin .bazelrc
dosyasına --registry
işaretlerinin listesini ekleyebilirsiniz.
Kayıt deponuz GitHub'da barındırılıyorsa (örneğin, bazelbuild/bazel-central-registry
'ün çatalı olarak) --registry
değerinizin raw.githubusercontent.com
altında ham bir GitHub adresine ihtiyacı vardır. Örneğin, my-org
çatalının main
dalında --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
değerini ayarlarsınız.
--registry
işareti kullanıldığında Bazel Merkezi Kaydı varsayılan olarak kullanılamaz ancak --registry=https://bcr.bazel.build
işareti eklenerek tekrar eklenebilir.