इस पेज पर, Bazel कंटेनर का कॉन्टेंट, Bzel कंटेनर के अंदर, Bazel का इस्तेमाल करके abseil-cpp प्रोजेक्ट बनाने, और डायरेक्ट्री माउंटिंग के साथ Bazel कंटेनर का इस्तेमाल करके, सीधे होस्ट मशीन से प्रोजेक्ट बनाने का तरीका बताया गया है.
डायरेक्ट्री माउंटिंग की मदद से, अपनी होस्ट मशीन से Abseil प्रोजेक्ट बनाएं
इस सेक्शन में दिए गए निर्देशों की मदद से, आपको होस्ट एनवायरमेंट में चेक आउट किए गए सोर्स के साथ, Bazel कंटेनर का इस्तेमाल करके बनाने की सुविधा मिलती है. आपके एक्ज़ीक्यूट किए गए हर बिल्ड निर्देश के लिए एक कंटेनर शुरू किया जाता है. बिल्ड के नतीजों को आपके होस्ट एनवायरमेंट में कैश मेमोरी में सेव किया जाता है, ताकि उन्हें सभी बिल्ड में फिर से इस्तेमाल किया जा सके.
प्रोजेक्ट को अपनी होस्ट मशीन की डायरेक्ट्री में क्लोन करें.
git clone --depth 1 --branch 20220623.1 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
बिल्ड फ़्लैग जोड़ें. इसके बाद,
पताSanitizer (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 था.
प्रोजेक्ट का क्लोन बनाएं.
ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
नियमित बिल्ड करें.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build //absl/...
सैनिटाइज़र की मदद से प्रोजेक्ट बनाने के लिए, --config=asan|tsan|msan
पता बनाएं और उसके हिसाब से AddressSanitizer (asan), ThreadSanitizer (tsan) या MemorySanitizer (msan) का इस्तेमाल करें.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Bazel कंटेनर के बारे में जानें
अगर आपने अब तक ऐसा नहीं किया है, तो Bazel कंटेनर में इंटरैक्टिव शेल शुरू करें.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
ubuntu@5a99103747c6:~$
कंटेनर का कॉन्टेंट एक्सप्लोर करें.
ubuntu@5a99103747c6:~$ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ubuntu@5a99103747c6:~$ java -version openjdk version "1.8.0_362" OpenJDK Runtime Environment (build 1.8.0_362-8u372-ga~us1-0ubuntu1~20.04-b09) OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)
ubuntu@5a99103747c6:~$ python -V Python 3.8.10
ubuntu@5a99103747c6:~$ bazel version WARNING: Invoking Bazel in batch mode since it is not invoked from within a workspace (below a directory having a WORKSPACE file). Extracting Bazel installation... Build label: 6.2.1 Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar Build time: Fri Jun 2 16:59:58 2023 (1685725198) Build timestamp: 1685725198 Build timestamp as int: 1685725198