बेज़ल रजिस्ट्री

किसी समस्या की शिकायत करें स्रोत देखें

Bzlmod, Bazel रजिस्ट्री से अपनी जानकारी का अनुरोध करके, डिपेंडेंसी का पता लगाता है: Bazel मॉड्यूल के डेटाबेस. फ़िलहाल, Bzlmod सिर्फ़ इंडेक्स रजिस्ट्री का इस्तेमाल करता है — स्थानीय डायरेक्ट्री या स्टैटिक एचटीटीपी सर्वर जो किसी खास फ़ॉर्मैट का पालन करते हैं.

इंडेक्स रजिस्ट्री

इंडेक्स रजिस्ट्री एक लोकल डायरेक्ट्री या स्टैटिक एचटीटीपी सर्वर होता है जिसमें मॉड्यूल की सूची के बारे में जानकारी होती है. इसमें मॉड्यूल का होम पेज, मेंटनर, हर वर्शन की MODULE.bazel फ़ाइल, और हर वर्शन का सोर्स फ़ेच करने का तरीका शामिल होता है. खास तौर पर, सोर्स कलेक्शन को खुद दिखाना ज़रूरी नहीं होता है.

इंडेक्स रजिस्ट्री को नीचे दिए गए फ़ॉर्मैट का पालन करना होगा:

  • /bazel_registry.json: JSON फ़ाइल, जिसमें रजिस्ट्री का मेटाडेटा शामिल होता है, जैसे:
    • mirrors: सोर्स संग्रहों के लिए इस्तेमाल किए जाने वाले शीशों की सूची तय करना
    • module_base_path: source.json फ़ाइल में local_repository टाइप वाले मॉड्यूल के लिए, बेस पाथ तय करना
  • /modules: इस रजिस्ट्री के हर मॉड्यूल के लिए एक सबडायरेक्ट्री वाली डायरेक्ट्री
  • /modules/$MODULE. इस मॉड्यूल में, हर मॉड्यूल के हर वर्शन की सबडायरेक्ट्री शामिल होती है. साथ ही:
    • metadata.json एक JSON फ़ाइल, जिसमें इन फ़ील्ड के साथ मॉड्यूल के बारे में जानकारी है:
      • homepage: प्रोजेक्ट के होम पेज का यूआरएल
      • maintainers JSON ऑब्जेक्ट की सूची, जिनमें से हर एक, रजिस्ट्री में मॉड्यूल के मेंटेनर की जानकारी से मेल खाता है. ध्यान दें, यह ज़रूरी नहीं कि यह प्रोजेक्ट के लेखक
      • versionsइस रजिस्ट्री में मिलने वाले मॉड्यूल के सभी वर्शन की सूची
      • इस मॉड्यूल के यांक किए गए वर्शन का मैप. कुंजियां, यांक के वर्शन और वैल्यू इस बात का ब्यौरा होनी चाहिए कि वर्शन यैं क्यों किया जा रहा है. इसमें, ज़्यादा जानकारी के लिए एक लिंक शामिल होना चाहिए
  • /modules/$MODULE/$VERSION: डायरेक्ट्री में ये फ़ाइलें शामिल हैं:
    • MODULE.bazel: इस मॉड्यूल वर्शन की MODULE.bazel फ़ाइल
    • source.json एक JSON फ़ाइल, जिसमें इस मॉड्यूल वर्शन के सोर्स को फ़ेच करने के तरीके के बारे में जानकारी है
      • डिफ़ॉल्ट प्रकार "संग्रह" है, जो http_archive डेटा संग्रह को दिखाता है, जिसमें ये फ़ील्ड होते हैं:
        • url: स्रोत संग्रह का यूआरएल
        • integrity: सबसंसाधन पूरी सुरक्षा देने की सुविधा संग्रह का चेकसम
        • strip_prefix सोर्स आर्काइव, एक्सट्रैक्ट करते समय निकाली जाने वाली डायरेक्ट्री का प्रीफ़िक्स
        • patchesनिकाला गया संग्रह पर लागू करने के लिए पैच फ़ाइलों वाला मैप. पैच फ़ाइलें /modules/$MODULE/$VERSION/patches डायरेक्ट्री में होती हैं. कुंजियों को पैच फ़ाइलों के नाम दिए जाते हैं, और मान पैच फ़ाइलों के लिए
        • patch_strip: यह यूनिक्स patch के --strip तर्क की तरह है.
        • डाउनलोड की गई फ़ाइल का संग्रह प्रकार (http_archive पर type के जैसा). डिफ़ॉल्ट रूप से, संग्रह प्रकार को URL के फ़ाइल एक्सटेंशन से तय किया जाता है. अगर फ़ाइल में कोई एक्सटेंशन नहीं है, तो इनमें से किसी एक को साफ़ तौर पर बताया जा सकता है: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar" या "deb".
      • टाइप को किसी लोकल पाथ का इस्तेमाल करने के लिए बदला जा सकता है. यह फ़ील्ड इन फ़ील्ड के साथ local_repository रीपो दिखाता है:
        • type: local_path
        • path: डेटा संग्रह का स्थानीय पाथ, जिसकी गणना इस तरह की जाती है:
          • अगर path निरपेक्ष पथ है, तो वह जैसा है वैसा ही रहेगा
          • अगर path एक रिलेटिव पाथ है और module_base_path एक ऐब्सलूट पाथ है, तो यह <module_base_path>/<path> पर रिज़ॉल्व होता है
          • अगर path और module_base_path दोनों रिलेटिव पाथ हैं, तो इसका समाधान <registry_path>/<module_base_path>/<path> हो जाता है. रजिस्ट्री स्थानीय तौर पर होस्ट की गई होनी चाहिए और --registry=file://<registry_path> इसका इस्तेमाल कर सकती है. अगर ऐसा नहीं है, तो बज़ल आपकी साइट पर कोई गड़बड़ी
    • patches/: पैच फ़ाइलों वाली वैकल्पिक डायरेक्ट्री, जिसका इस्तेमाल सिर्फ़ तब किया जाता है, जब source.json में "संग्रहित करें" टाइप हो

Bazel Central रजिस्ट्री

https://bcr.bazel.build/ में बैजल सेंट्रल रजिस्ट्री (बीसीआर), इंडेक्स रजिस्ट्री है. इसमें GitHub की इमेज bazelbuild/bazel-central-registry का इस्तेमाल किया जाता है. आप https://registry.bazel.build/ पर वेब फ़्रंटएंड का इस्तेमाल करके इसकी सामग्री ब्राउज़ कर सकते हैं.

बीज़ल समुदाय में बीसीआर की देखरेख होती है और योगदान देने वाले लोग पुल अनुरोध सबमिट कर सकते हैं. बीसीआर के योगदान के लिए दिशा-निर्देश देखें.

सामान्य इंडेक्स रजिस्ट्री के फ़ॉर्मैट का पालन करने के अलावा, बीसीआर के लिए हर मॉड्यूल वर्शन (/modules/$MODULE/$VERSION/presubmit.yml) के लिए एक presubmit.yml फ़ाइल ज़रूरी होती है. इस फ़ाइल में कुछ ज़रूरी बिल्ड और टेस्ट टारगेट की जानकारी होती है. इनका इस्तेमाल करके आप इस मॉड्यूल वर्शन की वैधता की जांच कर सकते हैं. बीसीआर की सीआई पाइपलाइन इसका इस्तेमाल यह भी पक्का करने के लिए करती हैं कि मॉड्यूल के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) हो.

रजिस्ट्री चुनना

दोहराए जाने वाले Bazel फ़्लैग --registry का इस्तेमाल, मॉड्यूल का अनुरोध करने के लिए रजिस्ट्री की सूची तय करने के लिए किया जा सकता है. इससे आप अपने प्रोजेक्ट को किसी तीसरे पक्ष या अंदरूनी रजिस्ट्री से डिपेंडेंसी पाने के लिए सेट अप कर सकते हैं. इससे पहले, रजिस्ट्री को प्राथमिकता दी जाती है. सुविधा के लिए, अपने प्रोजेक्ट की .bazelrc फ़ाइल में --registry फ़्लैग की सूची बनाई जा सकती है.

अगर आपकी रजिस्ट्री GitHub पर होस्ट की गई है (उदाहरण के लिए, bazelbuild/bazel-central-registry के फ़ोर्क की तरह), तो आपके --registry मान को raw.githubusercontent.com के तहत RAW पते की ज़रूरत होगी. उदाहरण के लिए, my-org फ़ोर्क की main ब्रांच पर आप --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/ सेट करेंगे.

--registry फ़्लैग का इस्तेमाल करने पर, Bazel Central Registry का इस्तेमाल डिफ़ॉल्ट रूप से बंद हो जाता है. हालांकि, --registry=https://bcr.bazel.build को जोड़कर, इसे वापस जोड़ा जा सकता है.