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

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

इस पेज पर, सोर्स से Bazel इंस्टॉल करने का तरीका बताया गया है. साथ ही, आम तौर पर होने वाली समस्याओं को हल करने के बारे में सलाह दी गई है.

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

Basel का इस्तेमाल करके बेज़ल बनाएं

खास जानकारी

  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 सोर्स ट्री से बेज़ल बनाने के लिए, आपके पास पहले से मौजूद Baज़र बाइनरी होना चाहिए. किसी पैकेज मैनेजर से इंस्टॉल किया जा सकता है या GitHub से डाउनलोड किया जा सकता है. Bazel इंस्टॉल करना देखें. (या शुरुआत से (बूटस्ट्रैप) बनाया जा सकता है.)

समस्या हल करना:

  • अगर टर्मिनल में bazel टाइप करके Bazel नहीं चल पा रहा है, तो:

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

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

    • हो सकता है कि खुद बेज़ल बाइनरी को bazel (Unixes पर) या bazel.exe (Windows पर) नहीं कहा जाता है.

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

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

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

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

अगर आपको Git के बारे में जानकारी है, तो सिर्फ़ git clone के लिए https://github.com/bazubuild/ba सुझावों का इस्तेमाल करें

अन्यथा:

  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 को उस डायरेक्ट्री में सेव करें जहां से आपने Basel के सोर्स एक्सट्रैक्ट या क्लोन किए थे.

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

    cd ~/bazel-src
    
  3. स्रोत से बेज़ल बनाएं:

    bazel build //src:bazel-dev
    

    इसके अलावा, आपके पास bazel build //src:bazel --compilation_mode=opt को चलाकर छोटी बाइनरी बनाने का विकल्प है. हालांकि, इसे बनाना धीमा है.

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

चौथा चरण: Windows पर Bazel बनाना

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

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

निर्देश:

  1. Command Prompt खोलें (Start मेन्यू > Run > "cmd.exe")

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

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

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

    bazel build //src:bazel-dev.exe
    

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

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

पांचवां चरण: बने हुए बाइनरी को इंस्टॉल करना

दरअसल, इंस्टॉल करने के लिए कुछ भी नहीं है.

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


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

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

पहला चरण: Bazel के सोर्स (डिस्ट्रिब्यूशन संग्रह) डाउनलोड करना

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

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

    ध्यान दें:

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

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

चरण 2a: Ubuntu Linux, macOS, और Unix जैसे दूसरे सिस्टम पर बूटस्ट्रैप बेज़ल

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

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

  • बैश

  • zip, unzip

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

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

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

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

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

2.2. Unix पर बूटस्ट्रैप बेज़ल

  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 में पैकमैन के ज़रिए इंस्टॉल किए गए वर्शन काम नहीं करेंगे.

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 शेल से बेज़ल चलाने की ज़रूरत नहीं है. आपके पास Command Prompt (cmd.exe) या PowerShell से Basel को चलाने का विकल्प है.