Bu sayfada, Bazel kapsayıcısının içeriğine, Bazel kullanarak abseil-cpp projesini ve bu projenin doğrudan nasıl oluşturulacağını ele alacağız dizin bağlantısı içeren Bazel container'ını kullanarak bir ana makine makinesinden indiremezsiniz.
Dizin ekleme ile ana makine makinenizden Abseil projesi derleme
Bu bölümdeki talimatlar, barındırma ortamınızda alınan kaynaklarla Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Çalıştırdığınız her derleme komutu için bir kapsayıcı başlatılır. Derleme sonuçları, derlemeler arasında yeniden kullanılabilmeleri için barındırma ortamınızda önbelleğe alınır.
Projeyi ana makinenizdeki bir dizine klonlayın.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
Derlemeler arasında paylaşılacak önbelleğe alınmış sonuçların yer alacağı bir klasör oluşturun.
mkdir -p /tmp/build_output/
Projeyi derlemek ve derlemeyi oluşturmak için Bazel container'ını kullanın. çıkışları ekleyebilirsiniz.
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
derlemesini ekleyerek projeyi dezenfektanlarla geliştirin
flag'i kullanarak AddressSanitizer (asan), ThreadSanitizer (tsan) veya
MemorySanitizer (msan) ile uyumlu.
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
Container'dan Abseil projesi derleyin
Bu bölümdeki talimatlar, URL tabanlı bir dosya oluşturmak için Bazel container'ını kapsayıcıdaki kaynaklarla ilişkilendirildi. En baştan bir kapsayıcı başlatarak ve en kötü hızlarda değişiklik yaparak container'da yüklü değilse derleme sonuçları önbelleğe alınır.
Bazel kapsayıcısında bir kabuk başlatın:
docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
Her kapsayıcı kimliği benzersizdir. Aşağıdaki talimatlarda kapsayıcı 5a99103747c6 idi.
Projeyi klonlayın.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Düzenli bir derleme yapın.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan)'ı seçmek için --config=asan|tsan|msan
build işaretini ekleyerek projeyi temizleyicilerle derleyin.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Bazel kapsayıcısını keşfetme
Henüz yapmadıysanız Bazel kapsayıcısında etkileşimli bir kabuk başlatın.
docker run -it --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
root@5a99103747c6:/#
Kapsayıcı içeriğini keşfedin.
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: 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