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

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

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

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

खास जानकारी

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

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

  3. बूटस्ट्रैपिंग के लिए ज़रूरी शर्तें पूरी करें. जैसे, Unix जैसे सिस्टम के लिए या Windows के लिए

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

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

यहां पूरी जानकारी दी गई है.

पहला चरण: Bazel का नया वर्शन पाना

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

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

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

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

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

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

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

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

    • ऐसा हो सकता है कि Unix पर बाइनरी, एक्सीक्यूटेबल न हो.

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

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

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

अन्यथा:

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

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

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

तीसरा चरण: ज़रूरी शर्तें पूरी करना

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

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

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

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

निर्देश:

  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) पर होगा.

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

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

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

निर्देश:

  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 चलाकर, छोटी बाइनरी बनाई जा सकती है. हालांकि, इसे बनाने में ज़्यादा समय लगता है.

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

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

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

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

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


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

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

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

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

  1. GitHub

    ध्यान दें:

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

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

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

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

2.1. ज़रूरी शर्तें पूरी करना

  • Bash

  • zip, unzip

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1. ज़रूरी शर्तें पूरी करना

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: इसे जेडीके डायरेक्ट्री पर सेट करें.

    उदाहरण (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 में रखा जाता है. यह Bazel की एक ऐसी बाइनरी है जिसमें सब कुछ शामिल है. इसमें जेडीके एम्बेड नहीं होता. इसे कहीं भी कॉपी किया जा सकता है या उसी जगह पर इस्तेमाल किया जा सकता है. सुविधा के लिए, इस बाइनरी को ऐसी डायरेक्ट्री में कॉपी करें जो आपके PATH पर हो.

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

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