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

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

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

Bazel को सोर्स से बनाने के लिए, इनमें से कोई एक काम किया जा सकता है:

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

खास जानकारी

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

  2. GitHub से Bazel के सोर्स डाउनलोड करें और यहां से लें. इसके अलावा, https://github.com/bazelbuild/bazel से सोर्स ट्री का क्लोन गिट किया जा सकता है

  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 से डाउनलोड कर सकते हैं. Bzel इंस्टॉल करना देखें. (या स्क्रैच (बूटस्ट्रैप) से बनाया जा सकता है.)

समस्या का हल:

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

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

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

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

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

    • शायद बाइनरी फ़ाइल को एक्ज़ीक्यूट नहीं किया जा सकता (यूनिक्स पर).

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

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

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

इसके अलावा:

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

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

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

चरण 3: ज़रूरी शर्तें इंस्टॉल करें

बूटस्ट्रैपिंग (नीचे देखें) के लिए समान आवश्यकताएं इंस्टॉल करें -- JDK, C++ संकलक, MSYS2 (अगर आप Windows पर बना रहे हैं), वगैरह.

चरण 4a: Ubuntu Linux, macOS, और Unix जैसे अन्य सिस्टम पर Bazel बनाएं

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

लक्ष्य: पसंद के मुताबिक Bazel बाइनरी (bazel-bin/src/bazel-dev) बनाने के लिए, Bazel चलाएं.

निर्देश:

  1. बैश टर्मिनल शुरू करें

  2. cd को डायरेक्ट्री में सेव करेगा, जहां से आपने Bazel के सोर्स को इकट्ठा या क्लोन किया था.

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

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

    bazel build //src:bazel-dev
    

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

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

चरण 4b: Windows पर Bazel बनाना

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

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

निर्देश:

  1. कमांड प्रॉम्प्ट शुरू करें (स्टार्ट मेन्यू > रन > "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 को चलाया जा सकता है और इससे छोटी बाइनरी जनरेट की जा सकती है. हालांकि, यह धीमा है.

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

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

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

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


नए सिरे से बैजल बनाएं (बूटस्ट्रैपिंग)

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

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

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

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

    ध्यान दें:

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

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

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

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

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

  • बैश

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

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

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

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

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

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

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

  1. शेल या टर्मिनल विंडो खोलें.

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

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

कंपाइल किया गया आउटपुट, output/bazel में रखा जाता है. यह एक सेल्फ़-कंटेन्ड बेज़ेल बाइनरी है. इसमें एम्बेड किया गया जेडीके नहीं है. आप उसे कहीं भी कॉपी कर सकते हैं या वहीं पर उपयोग कर सकते हैं. सुविधा के लिए, इस बाइनरी को उस डायरेक्ट्री में कॉपी करें जो आपके PATH पर है (जैसे कि Linux पर /usr/local/bin).

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

चरण 2b: Windows पर बूटस्ट्रैप Bazel

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

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

  • MSYS2 शेल

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

    pacman -S zip unzip patch
    
  • विज़ुअल C++ कंपाइलर. विज़ुअल C++ कंपाइलर को Visual Studio 2015 या उसके बाद के हिस्सा के तौर पर इंस्टॉल करें या Visual Studio 2017 के लिए बिल्ड टूल इंस्टॉल करें.

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

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

2.2. Windows पर बूटस्ट्रैप Bazel

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

  2. इन एनवायरमेंट वैरिएबल को सेट करें:

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

      इसे C:\Windows\System32\bash.exe पर सेट न करें. (अगर आपने Linux के लिए Windows सबसिस्टम इंस्टॉल किया है, तो आपके पास वह फ़ाइल है.) 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 में रखा जाता है. यह एक सेल्फ़-कंटेन्ड बेज़ेल बाइनरी है. इसमें एम्बेड किया गया जेडीके नहीं है. आप उसे कहीं भी कॉपी कर सकते हैं या वहीं पर उपयोग कर सकते हैं. सुविधा के लिए, इस बाइनरी को अपने PATH पर मौजूद डायरेक्ट्री में कॉपी करें.

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

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