En esta página, se proporcionan detalles sobre el contenido del contenedor de Bazel y cómo compilar el proyecto abseil-cpp con Bazel en el contenedor de Bazel y cómo compilar este proyecto directamente desde la máquina anfitrión con el contenedor de Bazel con activación de directorio.
Compila el proyecto Abseil desde tu máquina anfitrión con activación de directorio
Las instrucciones de esta sección te permiten compilar con el contenedor de Bazel con las fuentes que se consultaron en tu entorno de host. Se inicia un contenedor para cada comando de compilación que ejecutes. Los resultados de compilación se almacenan en caché en tu host en un entorno de ejecución para que se puedan reutilizar en las compilaciones.
Clona el proyecto en un directorio de tu máquina host.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
Crea una carpeta que tenga resultados almacenados en caché para compartirlos entre las compilaciones.
mkdir -p /tmp/build_output/
Usa el contenedor de Bazel para compilar el proyecto y hacer que los resultados de la compilación estén disponibles en la carpeta de salida de tu máquina host.
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/...
Para compilar el proyecto con limpiadores, agrega la compilación --config=asan|tsan|msan
.
para seleccionar AddressSanitizer (asan), ThreadSanitizer (tsan) o
MemorySanitizer (msan) según corresponda.
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
Compila el proyecto de Abseil desde dentro del contenedor
Las instrucciones de esta sección te permiten compilar con el contenedor de Bazel con las fuentes dentro del contenedor. Iniciando un contenedor al principio del flujo de trabajo de desarrollo y realizar cambios en el lugar de trabajo , los resultados de compilación se almacenarán en caché.
Inicia una shell en el contenedor de Bazel:
docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
Cada ID de contenedor es único. En las instrucciones que se indican a continuación, el contenedor era 5a99103747c6.
Clona el proyecto.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Realiza una compilación habitual.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
Para compilar el proyecto con validadores, agrega la marca de compilación --config=asan|tsan|msan
para seleccionar AddressSanitizer (asan), ThreadSanitizer (tsan) o MemorySanitizer (msan) según corresponda.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Explora el contenedor de Bazel
Si aún no lo hiciste, inicia una shell interactiva dentro del contenedor de Bazel.
docker run -it --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
root@5a99103747c6:/#
Explora el contenido del contenedor.
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