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

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

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

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

खास जानकारी

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

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

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

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

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

चौथा चरण: 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) पर होगा.

चौथा चरण (b): 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 को शुरुआत से बनाया जा सकता है.

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

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

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

    ध्यान दें:

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

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

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

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

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

  • बैश

  • zip, अनज़िप

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

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

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

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

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

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

दूसरा चरण (b): Windows पर बूटस्ट्रैप Bazel

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

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

  • MSYS2 शेल

  • zip और अनज़िप करने के लिए MSYS2 पैकेज. MSYS2 शेल में नीचे दिए गए निर्देश चलाएं:

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

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

  • 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) के पाथ पर सेट करें या विज़ुअल 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/jdk1.8.0_112"
    

    या (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/jdk1.8.0_112"
    
  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 को Command Prompt (cmd.exe) या PowerShell से चला सकते हैं.