इस पेज पर, सोर्स से Bazel इंस्टॉल करने का तरीका बताया गया है. साथ ही, आम समस्याओं को हल करने के लिए सुझाव दिए गए हैं.
सोर्स से Bazel बनाने के लिए, इनमें से कोई एक तरीका आज़माया जा सकता है:
मौजूदा Bazel बाइनरी के बिना इसे बनाएं. इसे बूटस्ट्रैपिंग कहा जाता है.
Bazel का इस्तेमाल करके Bazel बनाना
खास जानकारी
GitHub के रिलीज़ पेज या Bazelisk से, Bazel का नया वर्शन पाएं.
GitHub से Bazel के सोर्स डाउनलोड करें और उन्हें कहीं एक्सट्रैक्ट करें. इसके अलावा, https://github.com/bazelbuild/bazel से सोर्स ट्री को git क्लोन किया जा सकता है
बूटस्ट्रैपिंग के लिए ज़रूरी शर्तें पूरी करें. जैसे, Unix जैसे सिस्टम के लिए या Windows के लिए
Bazel का इस्तेमाल करके, Bazel का डेवलपमेंट बिल्ड बनाएं:
bazel build //src:bazel-dev(याbazel build //src:bazel-dev.exeon Windows)इससे बनने वाली बाइनरी,
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 का इस्तेमाल करें
अन्यथा:
कॉन्टेंट को कहीं एक्सट्रैक्ट करें.
उदाहरण के लिए, अपनी होम डायरेक्ट्री में
bazel-srcडायरेक्ट्री बनाएं और उसमें एक्सट्रैक्ट करें.
तीसरा चरण: ज़रूरी शर्तें पूरी करना
बूटस्ट्रैपिंग के लिए ज़रूरी शर्तें पूरी करें (यहां देखें) -- जेडीके, C++ कंपाइलर, MSYS2 (अगर Windows पर बिल्ड किया जा रहा है) वगैरह.
चौथा चरण (क): Ubuntu Linux, macOS, और Unix जैसे अन्य सिस्टम पर Bazel बनाना
Windows के लिए निर्देश पाने के लिए, Windows पर Bazel बनाना देखें.
लक्ष्य: कस्टम Bazel बाइनरी (bazel-bin/src/bazel-dev) बनाने के लिए, Bazel चलाना.
निर्देश:
Bash टर्मिनल शुरू करें
cdउस डायरेक्ट्री पर जाएं जहां आपने Bazel के सोर्स एक्सट्रैक्ट (या क्लोन) किए हैं.उदाहरण के लिए, अगर आपने सोर्स को अपनी होम डायरेक्ट्री में एक्सट्रैक्ट किया है, तो यह कमांड चलाएं:
cd ~/bazel-srcसोर्स से Bazel बनाएं:
bazel build //src:bazel-devइसके अलावा,
bazel build //src:bazel --compilation_mode=optचलाकर, छोटी बाइनरी बनाई जा सकती है. हालांकि, इसे बनाने में ज़्यादा समय लगता है.बाइनरी के लिए Bazel का वर्शन एम्बेड करने के लिए,
--stamp --embed_label=X.Y.Zफ़्लैग के साथ बिल्ड किया जा सकता है. इससेbazel --versionमें दिया गया वर्शन दिखेगा.आउटपुट,
bazel-bin/src/bazel-dev(याbazel-bin/src/bazel) पर होगा.
चौथा चरण (ख): Windows पर Bazel बनाना
Unix जैसे सिस्टम के लिए निर्देश पाने के लिए, Ubuntu Linux, macOS, और Unix जैसे अन्य सिस्टम देखें.
लक्ष्य: कस्टम Bazel बाइनरी
(bazel-bin\src\bazel-dev.exe) बनाने के लिए, Bazel चलाना.
निर्देश:
कमांड प्रॉम्प्ट शुरू करें (स्टार्ट मेन्यू > रन > "cmd.exe")
cdउस डायरेक्ट्री पर जाएं जहां आपने Bazel के सोर्स एक्सट्रैक्ट (या क्लोन) किए हैं.उदाहरण के लिए, अगर आपने सोर्स को अपनी होम डायरेक्ट्री में एक्सट्रैक्ट किया है, तो यह कमांड चलाएं:
cd %USERPROFILE%\bazel-srcसोर्स से Bazel बनाएं:
bazel build //src:bazel-dev.exe
इसके अलावा,
bazel build //src:bazel.exe --compilation_mode=optचलाकर, छोटी बाइनरी बनाई जा सकती है. हालांकि, इसे बनाने में ज़्यादा समय लगता है.बाइनरी के लिए Bazel का वर्शन एम्बेड करने के लिए,
--stamp --embed_label=X.Y.Zफ़्लैग के साथ बिल्ड किया जा सकता है. इससेbazel --versionमें दिया गया वर्शन दिखेगा.आउटपुट,
bazel-bin\src\bazel-dev.exe(याbazel-bin\src\bazel.exe) पर होगा.
पांचवा चरण: बनाई गई बाइनरी इंस्टॉल करना
असल में, कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
पिछले चरण का आउटपुट, Bazel की एक ऐसी बाइनरी है जिसमें सब कुछ शामिल है. इसे किसी भी डायरेक्ट्री में कॉपी किया जा सकता है और तुरंत इस्तेमाल किया जा सकता है. (अगर वह डायरेक्ट्री आपके PATH पर है, तो यह काम का है. इससे "bazel" को कहीं भी चलाया जा सकता है.)
Bazel को नए सिरे से बनाना (बूटस्ट्रैपिंग)
मौजूदा Bazel बाइनरी का इस्तेमाल किए बिना भी, Bazel को नए सिरे से बनाया जा सकता है.
पहला चरण: Bazel के सोर्स (डिस्ट्रिब्यूशन आर्काइव) डाउनलोड करना
(यह चरण सभी प्लैटफ़ॉर्म के लिए एक जैसा है.)
-
ध्यान दें:
- डिस्ट्रिब्यूशन आर्काइव सिर्फ़ एक होता है और यह आर्किटेक्चर पर निर्भर नहीं करता. आर्किटेक्चर या ओएस के हिसाब से, डिस्ट्रिब्यूशन आर्काइव नहीं होते.
- ये सोर्स, GitHub के सोर्स ट्री से अलग होते हैं. Bazel को बूटस्ट्रैप करने के लिए, डिस्ट्रिब्यूशन आर्काइव का इस्तेमाल करना ज़रूरी है. GitHub से क्लोन किए गए सोर्स ट्री का इस्तेमाल नहीं किया जा सकता. (डिस्ट्रिब्यूशन आर्काइव में, जनरेट की गई सोर्स फ़ाइलें होती हैं. ये फ़ाइलें, बूटस्ट्रैपिंग के लिए ज़रूरी होती हैं और सामान्य Git सोर्स ट्री का हिस्सा नहीं होती हैं.)
डिस्ट्रिब्यूशन आर्काइव को डिस्क पर कहीं अनपैक करें.
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 को बूटस्ट्रैप करना
कोई शेल या टर्मिनल विंडो खोलें.
cdउस डायरेक्ट्री पर जाएं जहां आपने डिस्ट्रिब्यूशन आर्काइव को अनपैक किया है.कंपाइलेशन स्क्रिप्ट चलाएं:
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. ज़रूरी शर्तें पूरी करना
ज़िप और अनज़िप के लिए MSYS2 पैकेज. MSYS2 शेल में यह कमांड चलाएं:
pacman -S zip unzip patchVisual C++ कंपाइलर. Visual C++ कंपाइलर को Visual Studio 2015 या इसके नए वर्शन के हिस्से के तौर पर इंस्टॉल करें . इसके अलावा, Visual Studio 2017के लिए Build Tools का नया वर्शन इंस्टॉल करके भी इसे इंस्टॉल किया जा सकता है.
जेडीके. वर्शन 21 ज़रूरी है.
Python. वर्शन 2 और 3 काम करते हैं. इनमें से कोई एक इंस्टॉल करना काफ़ी है. आपको Windows के लिए बना वर्शन चाहिए. इसे https://www.python.orgसे डाउनलोड किया जा सकता है. MSYS2 में pacman के ज़रिए इंस्टॉल किए गए वर्शन काम नहीं करेंगे.
2.2. Windows पर Bazel को बूटस्ट्रैप करना
MSYS2 शेल खोलें.
ये एनवायरमेंट वैरिएबल सेट करें:
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"cdउस डायरेक्ट्री पर जाएं जहां आपने डिस्ट्रिब्यूशन आर्काइव को अनपैक किया है.कंपाइलेशन स्क्रिप्ट चलाएं:
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 से चलाया जा सकता है.