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

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

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

खास जानकारी

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

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

  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 से कोई एक लाइब्रेरी डाउनलोड की जा सकती है. Bazel इंस्टॉल करना लेख पढ़ें. (इसके अलावा, शुरुआत से (बूटस्ट्रैप) भी बनाया जा सकता है.)

समस्या हल करने से जुड़ी जानकारी:

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

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

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

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

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

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

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

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

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

अन्यथा:

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

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

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

तीसरा चरण: ज़रूरी सॉफ़्टवेयर इंस्टॉल करना

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

चौथा चरण (a): 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 बनाना

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

लक्ष्य: कस्टम 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 से bazel-<version>-dist.zip डाउनलोड करें. उदाहरण के लिए, bazel-0.28.1-dist.zip.

    ध्यान दें:

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

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

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

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

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

  • Bash

  • zip, unzip

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

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

  • Python. वर्शन 3 ज़रूरी है.

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

sudo apt-get install build-essential openjdk-21-jdk python3 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 में रखा जाता है. यह एम्बेड किए गए JDK के बिना, Bazel का एक स्टैंडअलोन बाइनरी है. इसे कहीं भी कॉपी किया जा सकता है या उसी जगह पर इस्तेमाल किया जा सकता है. आसानी के लिए, इस बाइनरी को अपनी PATH पर मौजूद किसी डायरेक्ट्री में कॉपी करें. जैसे, Linux पर /usr/local/bin.

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

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

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

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

  • MSYS2 शेल

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

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

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

  • Python. वर्शन 2 और 3 काम करते हैं. इनमें से किसी एक को इंस्टॉल करना काफ़ी है. आपको 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 के बिना, Bazel का एक स्टैंडअलोन बाइनरी है. इसे कहीं भी कॉपी किया जा सकता है या उसी जगह पर इस्तेमाल किया जा सकता है. आसानी के लिए, इस बाइनरी को ऐसी डायरेक्ट्री में कॉपी करें जो आपके PATH पर हो.

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

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