सोर्स से Bazel को कंपाइल किया जा रहा है

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

इस पेज पर बताया गया है कि सोर्स से Basel को कैसे इंस्टॉल किया जाता है. साथ ही, इसमें सामान्य समस्याओं को हल करने से जुड़ी सलाह दी गई है.

सोर्स से Bazel बनाने के लिए, इनमें से कोई एक तरीका अपनाएं:

Bazel का इस्तेमाल करके Bazel बनाना

खास जानकारी

  1. GitHub के रिलीज़ पेज से या Bazelisk की मदद से, Bazel का नया वर्शन पाएं.

  2. GitHub से Bazel के सोर्स डाउनलोड करें और उन्हें किसी जगह पर निकालें. इसके अलावा, आपके पास https://github.com/batzbuild/ba इमारतों से सोर्स ट्री का क्लोन बनाने का विकल्प भी है

  3. बूटस्ट्रैप करने के लिए ज़रूरी शर्तें पूरी करें (Unix जैसे सिस्टम के लिए या Windows के लिए देखें)

  4. Bazel का डेवलपमेंट वर्शन बनाने के लिए, Bazel: bazel build //src:bazel-dev (या Windows पर bazel build //src:bazel-dev.exe) का इस्तेमाल करें

  5. नतीजे के तौर पर, बाइनरी bazel-bin/src/bazel-dev पर है (या Windows पर bazel-bin\src\bazel-dev.exe). इसे अपनी पसंद के हिसाब से कॉपी किया जा सकता है और इसे इंस्टॉल किए बिना तुरंत इस्तेमाल किया जा सकता है.

इसके बारे में पूरी जानकारी नीचे दी गई है.

पहला चरण: Bazel की नई रिलीज़ पाना

लक्ष्य: Bazel का रिलीज़ वर्शन इंस्टॉल या डाउनलोड करना. पक्का करें कि टर्मिनल में bazel टाइप करके, इसे चलाया जा सकता हो.

वजह: GitHub सोर्स ट्री से Bazel बनाने के लिए, आपके पास पहले से मौजूद Bazel बाइनरी होनी चाहिए. किसी पैकेज मैनेजर से इंस्टॉल किया जा सकता है या GitHub से डाउनलोड किया जा सकता है. Babel को इंस्टॉल करना देखें. (या शुरुआत से (बूटस्ट्रैप) बनाया जा सकता है.)

समस्या का हल:

  • अगर आप टर्मिनल में bazel टाइप करके Baज़ल को नहीं चला पा रहे हैं:

    • ऐसा हो सकता है कि आपके Bazel बाइनरी की डायरेक्ट्री, PATH में न हो.

      यह कोई बड़ी समस्या नहीं है. bazel टाइप करने के बजाय, आपको पूरा पाथ टाइप करना होगा.

    • ऐसा हो सकता है कि Bazel बाइनरी को bazel (Unix पर) या bazel.exe (Windows पर) न कहा जाए.

      यह कोई बड़ी समस्या नहीं है. बाइनरी का नाम बदला जा सकता है या bazel के बजाय बाइनरी का नाम टाइप किया जा सकता है.

    • हो सकता है कि बाइनरी को Unix पर चलाया न जा सके.

      आपको chmod +x /path/to/bazel चलाकर बाइनरी को एक्ज़ीक्यूटेबल बनाना होगा.

दूसरा चरण: GitHub से Basel के सोर्स डाउनलोड करना

अगर आपको Git के बारे में पता है, तो बस git clone https://github.com/bazelbuild/bazel का इस्तेमाल करें

अन्यथा:

  1. नए सोर्स को zip फ़ाइल के तौर पर डाउनलोड करें.

  2. कॉन्टेंट को कहीं एक्सट्रैक्ट करें.

    उदाहरण के लिए, अपनी होम डायरेक्ट्री में bazel-src डायरेक्ट्री बनाएं और उसमें से निकालें.

तीसरा चरण: इंस्टॉल करने से जुड़ी ज़रूरी शर्तें

बूस्टरैप करने के लिए ज़रूरी शर्तें, जैसे कि JDK, C++ के कंपाइलर, MSYS2 (अगर Windows पर बिल्ड किया जा रहा है) वगैरह इंस्टॉल करें.

चौथा चरण: Ubuntu Linux, macOS, और यूनिक्स जैसे अन्य सिस्टम पर Bazel बनाना

Windows के लिए निर्देशों के लिए, Windows पर Bazel बनाना लेख पढ़ें.

लक्ष्य: अपनी ज़रूरत के हिसाब से Basel बाइनरी (bazel-bin/src/bazel-dev) बनाने के लिए Basel को चलाएं.

निर्देश:

  1. Bash टर्मिनल शुरू करना

  2. cd को उस डायरेक्ट्री में डालें जहां आपने Bazel के सोर्स निकाले (या क्लोन किए) हैं.

    उदाहरण के लिए, अगर आपने सोर्स को अपनी होम डायरेक्ट्री में एक्सट्रैक्ट किया है, तो इसे चलाएं:

    cd ~/bazel-src
    
  3. सोर्स से Bazel बनाएं:

    bazel build //src:bazel-dev
    

    इसके अलावा, छोटी बाइनरी पाने के लिए bazel build //src:bazel --compilation_mode=opt को चलाया जा सकता है. हालांकि, इसे बिल्ड करने में ज़्यादा समय लगता है.

    बाइनरी के लिए Bazel वर्शन को एम्बेड करने के लिए, --stamp --embed_label=X.Y.Z फ़्लैग के साथ बिल्ड किया जा सकता है, ताकि bazel --version दिए गए वर्शन को आउटपुट कर सके.

  4. आउटपुट bazel-bin/src/bazel-dev (या bazel-bin/src/bazel) पर होगा.

चरण 4b: Windows पर Basel का ऐप्लिकेशन बनाएं

Unix-जैसे सिस्टम के निर्देशों के लिए Ubuntu Linux, macOS, और Unix-जैसे दूसरे सिस्टम देखें.

लक्ष्य: कस्टम Bazel बाइनरी (bazel-bin\src\bazel-dev.exe) बनाने के लिए, Bazel चलाएं.

निर्देश:

  1. कमांड प्रॉम्प्ट शुरू करें (Start menu > Run > "cmd.exe")

  2. cd को उस डायरेक्ट्री में डालें जहां आपने Bazel के सोर्स निकाले (या क्लोन किए) हैं.

    उदाहरण के लिए, अगर आपने सोर्स को अपनी होम डायरेक्ट्री में एक्सट्रैक्ट किया है, तो इसे चलाएं:

    cd %USERPROFILE%\bazel-src
    
  3. सोर्स से Bazel बनाएं:

    bazel build //src:bazel-dev.exe

    इसके अलावा, छोटी बाइनरी पाने के लिए bazel build //src:bazel.exe --compilation_mode=opt चलाया जा सकता है. हालांकि, इसे बिल्ड करने में ज़्यादा समय लगता है.

    बाइनरी के लिए Bazel वर्शन को एम्बेड करने के लिए, --stamp --embed_label=X.Y.Z फ़्लैग के साथ बिल्ड किया जा सकता है, ताकि bazel --version दिए गए वर्शन को आउटपुट कर सके.

  4. आउटपुट bazel-bin\src\bazel-dev.exe (या bazel-bin\src\bazel.exe) पर होगा.

पांचवां चरण: बनाई गई बाइनरी इंस्टॉल करना

दरअसल, आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

पिछले चरण का आउटपुट, एक ऐसा Bazel बाइनरी होता है जिसमें सभी चीज़ें मौजूद होती हैं. इसे किसी भी डायरेक्ट्री में कॉपी करके तुरंत इस्तेमाल किया जा सकता है. (यह तब उपयोगी होता है जब वह निर्देशिका आपके PATH पर हो ताकि आप हर जगह "bazu" चला सकें.)


Bazel को नए सिरे से बनाना (बूटस्ट्रैप करना)

किसी मौजूदा Bazel बाइनरी का इस्तेमाल किए बिना भी, Bazel को नए सिरे से बनाया जा सकता है.

पहला चरण: Basel के सोर्स (डिस्ट्रिब्यूशन आर्काइव) डाउनलोड करना

(यह चरण सभी प्लैटफ़ॉर्म के लिए एक जैसा है.)

  1. GitHub से bazel-<version>-dist.zip डाउनलोड करें, उदाहरण के लिए, bazel-0.28.1-dist.zip.

    ध्यान दें:

    • एक ही, आर्किटेक्चर से स्वतंत्र डिस्ट्रिब्यूशन संग्रह होना चाहिए. इसमें आर्किटेक्चर या ओएस के हिसाब से डिस्ट्रिब्यूशन के संग्रह नहीं होते.
    • ये सोर्स GitHub सोर्स ट्री के जैसे नहीं हैं. Bazel को बूटस्ट्रैप करने के लिए, आपको डिस्ट्रिब्यूशन संग्रह का इस्तेमाल करना होगा. GitHub से क्लोन किए गए सोर्स ट्री का इस्तेमाल नहीं किया जा सकता. (डिस्ट्रिब्यूशन संग्रह में जनरेट की गई ऐसी सोर्स फ़ाइलें होती हैं जो बूटस्ट्रैपिंग के लिए ज़रूरी होती हैं. साथ ही, ये सामान्य Git सोर्स ट्री का हिस्सा नहीं होती हैं.)
  2. डिस्क पर कहीं भी डिस्ट्रिब्यूशन संग्रह को अनपैक करें.

    आपको Bazel की रिलीज़ कुंजी 3D5919B448457EE0 से किए गए हस्ताक्षर की पुष्टि करनी होगी.

दूसरा चरण: Ubuntu Linux, macOS, और Unix जैसे अन्य सिस्टम पर Bazel को बूटस्ट्रैप करना

Windows के निर्देशों के लिए, Windows पर बूटस्ट्रैप बेज़ल देखें.

2.1. ज़रूरी शर्तें इंस्टॉल करना

  • Bash

  • ज़िप, अनज़िप

  • C++ बिल्ड टूलचेन

  • JDK. वर्शन 21 ज़रूरी है.

  • Python. इसका दूसरा और तीसरा वर्शन काम करता है. इनमें से किसी एक को इंस्टॉल करना ही काफ़ी है.

उदाहरण के लिए, Ubuntu Linux पर ये ज़रूरी शर्तें, नीचे दिए गए कमांड का इस्तेमाल करके इंस्टॉल की जा सकती हैं:

sudo apt-get install build-essential openjdk-21-jdk python zip unzip

2.2. Unix पर Bazel को बूटस्ट्रैप करना

  1. कोई शेल या Terminal विंडो खोलें.

  2. cd को उस डायरेक्ट्री में स्टोर करें जहां आपने डिस्ट्रिब्यूशन संग्रह को अनपैक किया है.

  3. कंपाइलेशन स्क्रिप्ट चलाएं: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh.

कंपाइल किए गए आउटपुट को output/bazel में रखा जाता है. यह एक ऐसी बाइनरी है जिसमें JDK एम्बेड नहीं किया गया है. इसे कहीं भी कॉपी किया जा सकता है या अपनी जगह पर इस्तेमाल किया जा सकता है. आसानी के लिए, इस बाइनरी को अपने PATH (जैसे, Linux पर /usr/local/bin) पर मौजूद किसी डायरेक्ट्री में कॉपी करें.

bazel बाइनरी को फिर से बनाया जा सकने वाले तरीके से बनाने के लिए, "कंपाइलेशन स्क्रिप्ट चलाएं" चरण में भी SOURCE_DATE_EPOCH सेट करें.

दूसरा चरण: Windows पर Bazel को बूटस्ट्रैप करना

यूनिक्स जैसे सिस्टम के लिए निर्देश पाने के लिए, Ubuntu Linux, macOS, और यूनिक्स जैसे अन्य सिस्टम पर Bazel को बूटस्ट्रैप करना लेख पढ़ें.

2.1. ज़रूरी शर्तें इंस्टॉल करें

  • MSYS2 शेल

  • ZIP और अनज़िप करने के लिए MSYS2 पैकेज. MSYS2 शेल में यह कमांड चलाएं:

    pacman -S zip unzip patch
    
  • Visual C++ कंपाइलर. Visual C++ कंपाइलर को Visual Studio 2015 या उसके बाद के वर्शन के साथ इंस्टॉल करें. इसके अलावा, Visual Studio 2017 के लिए सबसे नए Build Tools इंस्टॉल करके भी ऐसा किया जा सकता है.

  • जेडीके. वर्शन 21 ज़रूरी है.

  • Python. इसका दूसरा और तीसरा वर्शन काम करता है. इनमें से किसी एक को इंस्टॉल करना ही काफ़ी है. आपके पास Windows के लिए उपलब्ध वर्शन होना चाहिए. इसे https://www.python.org से डाउनलोड किया जा सकता है. MSYS2 में pacman की मदद से इंस्टॉल किए गए वर्शन काम नहीं करेंगे.

2.2. Windows पर Bazel को बूटस्ट्रैप करना

  1. MSYS2 शेल खोलें.

  2. नीचे दिए गए एनवायरमेंट वैरिएबल सेट करें:

    • BAZEL_VS या BAZEL_VC (ये एक जैसे नहीं हैं): Visual Studio डायरेक्ट्री (BAZEL_VS) या Visual C++ डायरेक्ट्री (BAZEL_VC) के पाथ पर सेट करें. इनमें से किसी एक को सेट करना ही काफ़ी है.
    • BAZEL_SH: MSYS2 का पाथ bash.exe. नीचे दिए गए उदाहरणों में कमांड देखें.

      इसे C:\Windows\System32\bash.exe पर सेट न करें. (अगर आपने Windows Subsystem for Linux इंस्टॉल किया है, तो आपके पास वह फ़ाइल होगी.) Bazel, bash.exe के इस वर्शन के साथ काम नहीं करता.

    • PATH: Python डायरेक्ट्री जोड़ें.

    • JAVA_HOME: JDK डायरेक्ट्री पर सेट करें.

    उदाहरण (BAZEL_VS का इस्तेमाल करके):

    export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    

    या (BAZEL_VC का इस्तेमाल करके):

    export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    
  3. cd उस डायरेक्ट्री में जाएं जहां आपने डिस्ट्रिब्यूशन का संग्रह अनपैक किया था.

  4. कंपाइलेशन स्क्रिप्ट चलाएं: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh

कंपाइल किए गए आउटपुट को output/bazel.exe में रखा जाता है. यह एक ऐसी बाइनरी है जिसमें JDK एम्बेड नहीं किया गया है. उसे कहीं भी कॉपी किया जा सकता है या उसकी जगह पर इस्तेमाल किया जा सकता है. आसानी के लिए, इस बाइनरी को PATH पर मौजूद किसी डायरेक्ट्री में कॉपी करें.

bazel.exe बाइनरी को फिर से बनाया जा सकने वाले तरीके से बनाने के लिए, "कंपाइलेशन स्क्रिप्ट चलाएं" चरण में भी SOURCE_DATE_EPOCH सेट करें.

आपको MSYS2 शेल से Bazel चलाने की ज़रूरत नहीं है. Bazel को कमांड प्रॉम्प्ट (cmd.exe) या PowerShell से चलाया जा सकता है.