इस पेज पर, Bazel कंटेनर के कॉन्टेंट के बारे में जानकारी दी गई है. साथ ही, Bazel कंटेनर में Bazel का इस्तेमाल करके abseil-cpp प्रोजेक्ट बनाने का तरीका बताया गया है. इसके अलावा, इसमें डायरेक्ट्री माउंट करने के साथ Bazel कंटेनर का इस्तेमाल करके, होस्ट मशीन से सीधे तौर पर इस प्रोजेक्ट को बनाने का तरीका भी बताया गया है.
डायरेक्ट्री माउंट करने की सुविधा का इस्तेमाल करके, अपनी होस्ट मशीन से Abseil प्रोजेक्ट बनाना
इस सेक्शन में दिए गए निर्देशों का पालन करके, Bazel कंटेनर का इस्तेमाल किया जा सकता है. इसके लिए, आपको अपने होस्ट एनवायरमेंट में सोर्स की जांच करनी होगी. हर बिल्ड कमांड के लिए, एक कंटेनर शुरू किया जाता है. बिल्ड के नतीजों को आपके होस्ट एनवायरमेंट में कैश मेमोरी में सेव किया जाता है, ताकि उन्हें सभी बिल्ड में फिर से इस्तेमाल किया जा सके.
प्रोजेक्ट को अपनी होस्ट मशीन की किसी डायरेक्ट्री में क्लोन करें.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
ऐसा फ़ोल्डर बनाएं जिसमें कैश मेमोरी में सेव किए गए नतीजे हों, ताकि उन्हें सभी बिल्ड के साथ शेयर किया जा सके.
mkdir -p /tmp/build_output/
प्रोजेक्ट बनाने के लिए, Bazel कंटेनर का इस्तेमाल करें. साथ ही, अपनी होस्ट मशीन के आउटपुट फ़ोल्डर में बिल्ड आउटपुट उपलब्ध कराएं.
docker run \
-e USER="$(id -u)" \
-u="$(id -u)" \
-v /src/workspace:/src/workspace \
-v /tmp/build_output:/tmp/build_output \
-w /src/workspace \
gcr.io/bazel-public/bazel:latest \
--output_user_root=/tmp/build_output \
build //absl/...
सैनिटाइज़र की मदद से प्रोजेक्ट बनाएं. इसके लिए, --config=asan|tsan|msan
build फ़्लैग जोड़ें. इससे AddressSanitizer (asan), ThreadSanitizer (tsan) या MemorySanitizer (msan) को चुना जा सकेगा.
docker run \
-e USER="$(id -u)" \
-u="$(id -u)" \
-v /src/workspace:/src/workspace \
-v /tmp/build_output:/tmp/build_output \
-w /src/workspace \
gcr.io/bazel-public/bazel:latest \
--output_user_root=/tmp/build_output \
build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
कंटेनर के अंदर से Abseil प्रोजेक्ट बनाना
इस सेक्शन में दिए गए निर्देशों का पालन करके, कंटेनर में मौजूद सोर्स का इस्तेमाल करके Bazel कंटेनर बनाया जा सकता है. डेवलपमेंट वर्कफ़्लो की शुरुआत में कंटेनर बनाने और कंटेनर में वर्कस्पेस में बदलाव करने से, बिल्ड के नतीजे कैश मेमोरी में सेव हो जाएंगे.
Bazel कंटेनर में शेल शुरू करें:
docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
हर कंटेनर आईडी यूनीक होता है. यहां दिए गए निर्देशों में, कंटेनर 5a99103747c6 था.
प्रोजेक्ट का क्लोन बनाएं.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
नियमित तौर पर बिल्ड करें.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
सैनिटाइज़र की मदद से प्रोजेक्ट बनाएं. इसके लिए, --config=asan|tsan|msan
बिल्ड फ़्लैग जोड़ें. इससे AddressSanitizer (asan), ThreadSanitizer (tsan) या
MemorySanitizer (msan) को चुना जा सकेगा.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Bazel कंटेनर एक्सप्लोर करना
अगर आपने अब तक ऐसा नहीं किया है, तो Bazel कंटेनर में इंटरैक्टिव शेल शुरू करें.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
root@5a99103747c6:/#
कंटेनर का कॉन्टेंट एक्सप्लोर करें.
root@5a99103747c6:/# clang --version clang version 8.0.0 (trunk 340178) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/local/bin
root@5a99103747c6:/# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
root@5a99103747c6:/# python -V Python 2.7.12
root@5a99103747c6:/# python3 -V Python 3.6.6
root@5a99103747c6:/# bazel version Extracting Bazel installation... Build label: 6.0.0 Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar Build time: Mon Dec 19 15:52:35 2022 (1671465155) Build timestamp: 1671465155 Build timestamp as int: 1671465155