Bzlmod, bağımlılıkları keşfetmek için Bazel kayıt otoritelerinden (Bzel modüllerinin veritabanları) bilgilerini ister. Bzlmod şu anda yalnızca dizin kayıtlarını (belirli bir biçimi kullanan yerel dizinler veya statik HTTP sunucuları) desteklemektedir.
Dizin kaydı
Dizin kaydı; ana sayfa, bakım sorumluları, her sürümün MODULE.bazel
dosyası ve her sürümün kaynağının nasıl alınacağı dahil olmak üzere bir modül listesi hakkında bilgi içeren yerel bir dizin veya statik HTTP sunucusudur. Özellikle kaynak arşivlerin kendisini sunması gerekmez.
Dizin kaydı aşağıdaki biçimde olmalıdır:
/bazel_registry.json
: Kayıt defteriyle ilgili aşağıdaki gibi meta verileri içeren bir JSON dosyası:mirrors
: Kaynak arşivler için kullanılacak aynaların listesini belirtir. Yansıtılan URL, yansıtmanın kendisinin birleşimidir. Modülün kaynak URL'si,source.json
dosyası tarafından protokolü sansürler. Ö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üne sahip modüllerin temel yolunu belirtme
/modules
: Bu kayıt defterindeki her modül için bir alt dizin içeren dizin/modules/$MODULE
: Bu modülün her sürümü için bir alt dizin ve ayrıca:metadata.json
: Modül hakkında bilgi içeren bir JSON dosyası. Aşağıdaki alanlara sahiptir:homepage
: Proje ana sayfasının URL'simaintainers
: Her biri kayıt defterindeki modülün sorumlusunun bilgilerine karşılık gelen JSON nesnelerinin listesi. Bu kullanıcıların, projenin yazarlarıyla aynı olmayabileceğini unutmayın.versions
: Bu modülün bu kayıt defterinde bulunan tüm sürümlerinin listesiyanked_versions
: Bu modülün yanked sürümlerinin bir haritası. Anahtarlar yank sürümleri olmalıdır, değerler ise sürümün neden çekildiğinin açıklamaları olmalı ve daha fazla bilgiye
/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 alınacağıyla ilgili bilgileri içeren bir JSON dosyası- Varsayılan tür, aşağıdaki alanlarla bir
http_archive
deposunu temsil eden "arşiv"dir:url
: Kaynak arşivinin URL'siintegrity
: Arşivin alt öğe bütünlüğü sağlama toplamıstrip_prefix
: Kaynak arşivi ayıklanırken kaldırılacak dizin ön ekipatches
: Ayıklanan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları/modules/$MODULE/$VERSION/patches
dizininin altında bulunur. Anahtarlar, düzeltme dosyası adları, değerler ise düzeltme dosyalarının bütünlük sağlama sağlama toplamıdır.patch_strip
: Unixpatch
işlevinin--strip
bağımsız değişkeniyle aynıdır.archive_type
: İndirilen dosyanın arşiv türü (http_archive
'dekitype
ile aynıdır). Varsayılan olarak arşiv türü, URL'nin dosya uzantısından belirlenir. Dosyanın uzantısı yoksa şunlardan 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, şu alanlarla bir git deposu kullanacak şekilde değiştirilebilir:
type
:git_repository
- https://bazel.build/rules/lib/repo/git adresinde açıklanan alanlar:
remote
commit
shallow_since
tag
init_submodules
verbose
strip_prefix
- Tür, aşağıdaki alanları kullanarak
local_repository
deposunu temsil eden yerel bir yolu kullanacak şekilde değiştirilebilir:type
:local_path
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.
- Varsayılan tür, aşağıdaki alanlarla bir
patches/
: Yama 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 Merkezi Kayıt Otoritesi
https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), GitHub deposu bazelbuild/bazel-central-registry
tarafından desteklenen içeriklere sahip 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ı kurallarını inceleyin.
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üzenleri, modüller arasında birlikte çalışabilirliği sağlamak için bunu da kullanı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. Daha önceki kayıtlara
öncelik verilir. 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
kolunda --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.