Bzlmod, Bazel kayıtlarından (Bazel modüllerinin veritabanları) bilgi isteyerek bağımlılıkları keşfeder. Bzlmod şu anda yalnızca belirli bir biçime uyan dizin kayıtlarını (yerel dizinler veya statik HTTP sunucuları) desteklemektedir.
Dizin kaydı
Dizin kayıt otoritesi, bir modül listesiyle ilgili bilgileri (ana sayfaları, bakımcıları, her sürümün MODULE.bazel
dosyası ve her sürümün kaynağının nasıl getirileceği dahil) içeren yerel bir dizin veya statik bir HTTP sunucusudur. Özellikle, kaynak arşivlerin kendisini sunması gerekmez.
Dizin kaydı aşağıdaki biçimde olmalıdır:
/bazel_registry.json
: Kayıt defteri için meta veriler içeren bir JSON dosyası örneği:mirrors
: Kaynak arşivler için kullanılacak yansıtma listesini belirtme. Yansıtılan URL, yansıtmanın kendisi ile protokol hariçsource.json
dosyası tarafından belirtilen modülün kaynak URL'sinin birleştirilmesidir. Ö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.module_base_path
:source.json
dosyasındalocal_repository
türündeki modüller için temel yolu belirtme
/modules
: Bu kayıt defterindeki her modül için bir alt dizin içeren bir dizin/modules/$MODULE
: Bu modülün her sürümü için bir alt dizin içeren bir dizin ve:metadata.json
: Modülle ilgili bilgileri içeren bir JSON dosyası. Aşağıdaki alanları içerir:homepage
: Projenin ana sayfasının URL'simaintainers
: Her biri kayıt defterindeki modülün bakım sorumlusunun bilgilerine karşılık gelen bir JSON nesneleri listesi. Bunun, projenin yazarları ile aynı olması gerekmediğini unutmayın.versions
: Bu kayıt defterinde bulunacak bu modülün tüm sürümlerinin listesiyanked_versions
: Bu modülün kaldırılmış sürümlerinin haritası. Anahtarlar, kaldırılacak sürümler olmalı, değerler ise sürümün neden kaldırıldığına dair açıklamalar olmalıdır. İdeal olarak, daha fazla bilgi içeren bir bağlantı da eklenmelidir.
/modules/$MODULE/$VERSION
: Aşağıdaki dosyaları içeren bir dizin:MODULE.bazel
: Bu modül sürümününMODULE.bazel
dosyasısource.json
: Bu modül sürümünün kaynağının nasıl getirileceğiyle ilgili bilgileri içeren bir JSON dosyası- Varsayılan tür, aşağıdaki alanları içeren bir
http_archive
deposunu temsil eden "archive"dır:url
: Kaynak arşivin URL'simirror_urls
: Kaynak arşivin yansıtma URL'lerinin bulunduğu bir dize listesi. URL'ler,url
sonrasında yedek olarak sırayla denenir.integrity
: Arşivin Subresource Integrity sağlama toplamıstrip_prefix
: Kaynak arşivi çıkarılırken kaldırılacak dizin önekipatches
: Çıkartılan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları/modules/$MODULE/$VERSION/patches
dizininde bulunur. Anahtarlar yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlama toplamıdır.patch_strip
: Unixpatch
'ın--strip
bağımsız değişkeniyle aynıdır.archive_type
: İndirilen dosyanın arşiv türü (http_archive
üzerindekitype
ile aynıdır). Varsayılan olarak, arşiv türü URL'nin dosya uzantısından belirlenir. Uzantısı olmayan dosyalar için aşağıdakilerden birini açıkça belirtebilirsiniz:"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
veya"deb"
.
- Tür, aşağıdaki alanlarla birlikte bir Git deposu kullanacak şekilde değiştirilebilir:
type
:git_repository
- https://bazel.build/rules/lib/repo/git adresinde açıklanan aşağıdaki alanlar:
remote
commit
shallow_since
tag
init_submodules
verbose
strip_prefix
- Tür, aşağıdaki alanlarla birlikte
local_repository
deposunu temsil eden yerel bir yol kullanacak şekilde değiştirilebilir:type
:local_path
path
: Deponun yerel yolu, aşağıdaki gibi hesaplanır:path
mutlak bir yolsa olduğu gibi kalır.path
göreli bir yol vemodule_base_path
mutlak bir yol ise<module_base_path>/<path>
olarak çözümlenir.- Hem
path
hem demodule_base_path
göreli yolsa<registry_path>/<module_base_path>/<path>
olarak çözümlenir. Kayıt defteri yerel olarak barındırılmalı ve--registry=file://<registry_path>
tarafından kullanılmalıdır. Aksi takdirde Bazel hata verir.
- Varsayılan tür, aşağıdaki alanları içeren bir
patches/
: Yalnızcasource.json
"archive" türüne sahip olduğunda kullanılan, yama dosyalarını içeren isteğe bağlı bir dizin
Bazel Central Registry
https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), bazelbuild/bazel-central-registry
GitHub deposu tarafından desteklenen içeriklere sahip bir dizin kayıt defteridir.
İçeriklerine https://registry.bazel.build/ adresindeki web ön ucu üzerinden göz atabilirsiniz.
BCR, Bazel topluluğu tarafından yönetilir ve katkıda bulunanlar çekme istekleri gönderebilir. BCR katkı yönergelerini inceleyin.
BCR, normal bir dizin kaydının biçimine uymanın 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 işlem hatları, modüller arasında birlikte çalışabilirliği sağlamak için de bu özelliği kullanır.
Kayıtları seçme
Modül isteğinde bulunulacak kayıt listesini belirtmek için tekrarlanabilir Bazel işareti --registry
kullanılabilir. Böylece projenizi, bağımlılıkları üçüncü taraf veya dahili bir kayıt defterinden getirecek şekilde ayarlayabilirsiniz. Daha önceki kayıtlar önceliklidir. Kolaylık sağlaması için --registry
işaretlerinin listesini projenizin .bazelrc
dosyasına ekleyebilirsiniz.
Kayıt defteriniz GitHub'da barındırılıyorsa (örneğin, bazelbuild/bazel-central-registry
'nın bir çatalı olarak) --registry
değeriniz raw.githubusercontent.com
altında ham bir GitHub adresi gerektirir. Örneğin, main
dalında my-org
çatalı için --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
değerini ayarlarsınız.
--registry
işaretini kullandığınızda Bazel Central Registry'nin varsayılan olarak kullanılması durdurulur ancak --registry=https://bcr.bazel.build
ekleyerek bu kayıt defterini tekrar ekleyebilirsiniz.