এই পৃষ্ঠাটি Bazel কন্টেইনারের বিষয়বস্তু, Bazel কন্টেইনারের ভিতরে Bazel ব্যবহার করে কিভাবে abseil-cpp প্রকল্প তৈরি করতে হয়, এবং ডিরেক্টরি মাউন্ট করার সাথে Bazel কন্টেইনার ব্যবহার করে হোস্ট মেশিন থেকে সরাসরি এই প্রকল্পটি কীভাবে তৈরি করা যায় তার বিশদ বিবরণ প্রদান করে।
ডিরেক্টরি মাউন্ট করার সাথে আপনার হোস্ট মেশিন থেকে Abseil প্রকল্প তৈরি করুন
এই বিভাগে নির্দেশাবলী আপনাকে আপনার হোস্ট পরিবেশে চেক আউট উত্সগুলির সাথে Bazel কন্টেইনার ব্যবহার করে নির্মাণ করার অনুমতি দেয়৷ আপনি চালানো প্রতিটি বিল্ড কমান্ডের জন্য একটি ধারক শুরু হয়। বিল্ড ফলাফলগুলি আপনার হোস্ট পরিবেশে ক্যাশে করা হয় যাতে সেগুলি বিল্ড জুড়ে পুনরায় ব্যবহার করা যায়।
আপনার হোস্ট মেশিনের একটি ডিরেক্টরিতে প্রকল্পটি ক্লোন করুন।
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
একটি ফোল্ডার তৈরি করুন যাতে ক্যাশে ফলাফলগুলি বিল্ড জুড়ে ভাগ করা হবে৷
mkdir -p /tmp/build_output/
প্রকল্পটি তৈরি করতে ব্যাজেল কন্টেইনার ব্যবহার করুন এবং আপনার হোস্ট মেশিনের আউটপুট ফোল্ডারে বিল্ড আউটপুটগুলি উপলব্ধ করুন।
docker run \
-e USER="$(id -u)" \
-u="$(id -u)" \
-v /src/workspace:/src/workspace \
-v /tmp/build_output:/tmp/build_output \
-w /src/workspace \
l.gcr.io/google/bazel:latest \
--output_user_root=/tmp/build_output \
build //absl/...
--config= asan | tsan | msan
যোগ করে স্যানিটাইজার দিয়ে প্রকল্পটি তৈরি করুন --config= asan | tsan | msan
সে অনুযায়ী অ্যাড্রেস স্যানিটাইজার (আসান), থ্রেড স্যানিটাইজার (টসান) বা মেমরি স্যানিটাইজার (এমএন) নির্বাচন করতে --config= asan | tsan | 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 \
l.gcr.io/google/bazel:latest \
--output_user_root=/tmp/build_output \
build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
পাত্রের ভিতর থেকে Abseil প্রকল্প তৈরি করুন
এই বিভাগের নির্দেশাবলী আপনাকে কন্টেইনারের ভিতরের উৎসগুলির সাথে বেজেল কন্টেইনার ব্যবহার করে নির্মাণ করতে দেয়। আপনার ডেভেলপমেন্ট ওয়ার্কফ্লো শুরুতে একটি কন্টেইনার শুরু করে এবং কন্টেইনারের মধ্যে ওয়ার্কস্পেস পরিবর্তন করে, বিল্ড ফলাফল ক্যাশে করা হবে।
বেজেল পাত্রে একটি শেল শুরু করুন:
docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/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
যোগ করে স্যানিটাইজার দিয়ে প্রকল্পটি তৈরি করুন --config= asan | tsan | msan
সে অনুযায়ী অ্যাড্রেস স্যানিটাইজার (আসান), থ্রেড স্যানিটাইজার (টসান) বা মেমরি স্যানিটাইজার (এমএন) নির্বাচন করতে --config= asan | tsan | 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 l.gcr.io/google/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/binroot@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.12root@5a99103747c6:/# python3 -V
Python 3.6.6root@5a99103747c6:/# bazel version
Extracting Bazel installation...
Build label: 0.17.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Sep 14 10:39:25 2018 (1536921565)
Build timestamp: 1536921565
Build timestamp as int: 1536921565