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

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

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

स्रोत से Baज़ल बनाने के लिए, आप इनमें से एक काम कर सकते हैं:

Basel का इस्तेमाल करके Basel का निर्माण करें

खास जानकारी

  1. GitHub के रिलीज़ पेज या Bazelisk से, Baज़र की नई रिलीज़ पाएं.

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

  3. वही ज़रूरी शर्तें इंस्टॉल करें जो बूटस्ट्रैपिंग के लिए हैं (Unix-जैसे सिस्टम के लिए या Windows के लिए देखें)

  4. Basel का इस्तेमाल करके, Basel का डेवलपमेंट बिल्ड बनाएं: 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). इसे अपनी पसंद के हिसाब से कॉपी किया जा सकता है और इसे इंस्टॉल किए बिना तुरंत इस्तेमाल किया जा सकता है.

इसके बारे में ज़्यादा जानकारी के लिए नीचे दिया गया है.

पहला चरण: Basel का नया वर्शन डाउनलोड करना

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

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

समस्या का हल:

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

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

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

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

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

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

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

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

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

इसके अलावा:

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

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

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

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

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

चरण 4a: Ubuntu Linux, macOS, और Unix जैसे दूसरे सिस्टम पर Basel का ऐप्लिकेशन बनाना

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

लक्ष्य: अपनी ज़रूरत के हिसाब से 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) पर होगा.

चरण 4b: Windows पर बेज़ल बनाना

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

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

निर्देश:

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

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

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

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

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

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

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

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


शुरुआत से बेज़ल बनाएं (बूटस्ट्रैपिंग)

आप मौजूदा Bagel बाइनरी का इस्तेमाल किए बिना भी Basel को शुरुआत से बना सकते हैं.

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

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

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

    ध्यान दें:

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

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

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

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

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 में रखा जाता है. यह एक सेल्फ़-कंटेन्ड बेज़ल बाइनरी है, जिसमें JDK शामिल नहीं है. उसे कहीं भी कॉपी किया जा सकता है या उसकी जगह पर इस्तेमाल किया जा सकता है. सुविधा के लिए, इस बाइनरी को अपने PATH (जैसे कि Linux पर /usr/local/bin) पर मौजूद किसी डायरेक्ट्री में कॉपी करें.

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

चरण 2b: Windows पर बूटस्ट्रैप बेज़ल

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

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 पर बूटस्ट्रैप बेज़ल

  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 पर सेट न करें. (अगर आपने Linux के लिए Windows सबसिस्टम इंस्टॉल किया है, तो आपके पास वह फ़ाइल होगी.) Basel, 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 को चलाने का विकल्प है.