En esta página, se describe cómo instalar Bazel desde la fuente y se proporcionan sugerencias para solucionar problemas comunes.
Para compilar Bazel desde la fuente, puedes realizar una de las siguientes acciones:
Compila el archivo sin un objeto binario existente de Bazel, que se conoce como arranque.
Compila Bazel con Bazel
Resumen
Obtén la versión más reciente de Bazel desde la página de versiones de GitHub o con Bazelisk.
Descarga las fuentes de Bazel desde GitHub y extráela en alguna parte. Como alternativa, puedes clonar el árbol de fuentes de Git desde https://github.com/bazelbuild/bazel
Instala los mismos requisitos previos para la inicialización (consulta para sistemas similares a Unix o para Windows).
Compila una compilación de desarrollo de Bazel con Bazel:
bazel build //src:bazel-dev
(obazel build //src:bazel-dev.exe
en Windows)El objeto binario resultante se encuentra en
bazel-bin/src/bazel-dev
(obazel-bin\src\bazel-dev.exe
en Windows). Puedes copiarlo cuando quieras y usarlo de inmediato sin necesidad de instalarlo más.
Sigue las instrucciones detalladas a continuación.
Paso 1: Obtén la versión más reciente de Bazel
Objetivo: Instalar o descargar una versión de lanzamiento de Bazel. Escribe bazel
en una terminal para asegurarte de que se pueda ejecutar.
Motivo: Para compilar Bazel a partir de un árbol de fuentes de GitHub, necesitas un objeto binario preexistente de Bazel. Puedes instalar uno desde un administrador de paquetes o descargar uno desde GitHub. Consulta Instala Bazel. (También puedes compilar desde cero (inicio)).
Solución de problemas:
Si no puedes ejecutar Bazel, escribe
bazel
en una terminal:Es posible que el directorio de tu objeto binario de Bazel no esté en la ruta de acceso.
Esto no es un gran problema. En lugar de escribir
bazel
, deberás escribir la ruta completa.Tal vez el objeto binario de Bazel no se llame
bazel
(en Unixes) nibazel.exe
(en Windows).Esto no es un gran problema. Puedes renombrar el objeto binario o escribir el nombre del objeto en lugar de
bazel
.Tal vez el objeto binario no sea ejecutable (en Unixes).
Debes ejecutar
chmod +x /path/to/bazel
para que el objeto binario sea ejecutable.
Paso 2: Descarga las fuentes de Bazel desde GitHub
Si está familiarizado con Git, entonces solo git clone https://github.com/bazelbuild/bazel.
En caso contrario:
Descarga las fuentes más recientes como un archivo ZIP.
Extrae el contenido en alguna parte.
Por ejemplo, crea un directorio
bazel-src
en tu directorio principal y extráelo allí.
Paso 3: Instala los requisitos previos
Instala los mismos requisitos previos para la inicialización (consulta a continuación): JDK, compilador C++, MSYS2 (si compilas en Windows), etcétera.
Paso 4a: Compila Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix
Si deseas obtener instrucciones para Windows, consulta Build Bazel en Windows.
Objetivo: Ejecuta Bazel para compilar un objeto binario personalizado de Bazel (bazel-bin/src/bazel-dev
).
Instrucciones:
Inicia una terminal de Bash
cd
en el directorio en el que extrajiste (o clonaste) las fuentes de Bazel.Por ejemplo, si extrajiste las fuentes en tu directorio principal, ejecuta lo siguiente:
cd ~/bazel-src
Compila Bazel desde la fuente:
bazel build //src:bazel-dev
Como alternativa, puedes ejecutar
bazel build //src:bazel --compilation_mode=opt
para producir un objeto binario más pequeño, pero su compilación es más lenta.El resultado será
bazel-bin/src/bazel-dev
(obazel-bin/src/bazel
).
Paso 4b: Compila Bazel en Windows
Para obtener instrucciones sobre sistemas similares a Unix, consulta Ubuntu Linux, macOS y otros sistemas similares de Unix.
Objetivo: Ejecuta Bazel para compilar un objeto binario personalizado de Bazel
(bazel-bin\src\bazel-dev.exe
).
Instrucciones:
Símbolo del sistema (menú de inicio > Ejecutar > "cmd.exe")
cd
en el directorio en el que extrajiste (o clonaste) las fuentes de Bazel.Por ejemplo, si extrajiste las fuentes en tu directorio principal, ejecuta lo siguiente:
cd %USERPROFILE%\bazel-src
Compila Bazel desde la fuente:
bazel build //src:bazel-dev.exe
Como alternativa, puedes ejecutar
bazel build //src:bazel.exe --compilation_mode=opt
para producir un objeto binario más pequeño, pero su compilación es más lenta.El resultado estará en
bazel-bin\src\bazel-dev.exe
(obazel-bin\src\bazel.exe
).
Paso 5: Instala el objeto binario compilado
No es necesario instalar nada.
El resultado del paso anterior es un objeto binario autónomo que incluye Bazel. Puedes copiarlo en cualquier directorio y usarlo de inmediato. (Es útil si ese directorio está en tu RUTA DE ACCESO para que puedas ejecutar “bazel” en todas partes).
Compila Bazel desde cero (inicio)
También puedes compilar Bazel desde cero, sin usar un objeto binario de Bazel existente.
Paso 1: Descarga las fuentes de Bazel (archivo de distribución)
(Este paso es el mismo para todas las plataformas).
Descarga
bazel-<version>-dist.zip
desde GitHub, por ejemplo,bazel-0.28.1-dist.zip
.Atención:
- Hay un único archivo de distribución independiente de la arquitectura. No hay archivos de distribución específicos de la arquitectura o del SO.
- Estas fuentes no son las mismas que las del árbol de fuentes de GitHub. Debes usar el archivo de distribución para iniciar un bootstrap en Bazel. No puedes usar un árbol fuente clonado desde GitHub. (El archivo de distribución contiene archivos fuente generados que son necesarios para el arranque y no son parte del árbol de fuentes de Git normal).
Descomprime el archivo de distribución en algún lugar del disco.
Debes verificar la firma que realizó la clave de lanzamiento de Bazel 3D5919B448457EE0.
Paso 2a: Bootstrap Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix
Para obtener instrucciones sobre Windows, consulta Bootstrap Bazel en Windows.
2.1. Instala los requisitos previos
Bash
zip, descomprimir
Cadena de herramientas de compilación de C++
JDK. La versión 11 es obligatoria.
Python. Las versiones 2 y 3 son compatibles; instalar una de ellas es suficiente.
Por ejemplo, en Ubuntu Linux, puedes instalar estos requisitos mediante el siguiente comando:
sudo apt-get install build-essential openjdk-11-jdk python zip unzip
2.2. Bootstrap Bazel en Unix
Abre un shell o una ventana de terminal.
cd
al directorio donde desempaquetaste el archivo de distribución.Ejecuta la secuencia de comandos de compilación:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh
.
El resultado compilado se coloca en output/bazel
. Este es un objeto binario de Bazel autónomo, sin un JDK incorporado. Puedes copiarlo en cualquier lugar o usarlo en el lugar. Para mayor comodidad, copia este objeto binario en un directorio que esté en tu PATH
(como /usr/local/bin
en Linux).
Para compilar el objeto binario bazel
de forma reproducible, también configura SOURCE_DATE_EPOCH
en el paso "Ejecutar la secuencia de comandos de compilación".
Paso 2b: Bootstrap Bazel en Windows
Para obtener instrucciones sobre sistemas similares a Unix, consulta Bootstrap Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix.
2.1. Instala los requisitos previos
Los paquetes MSYS2 para zip y descomprimir. Ejecuta el siguiente comando en el shell de MSYS2:
pacman -S zip unzip patch
El compilador de Visual C++. Instala el compilador de Visual C++ como parte de Visual Studio 2015 o posterior, o mediante la instalación más reciente de las Herramientas de compilación para Visual Studio 2017.
JDK. La versión 11 es obligatoria.
Python. Las versiones 2 y 3 son compatibles; instalar una de ellas es suficiente. Necesitas la versión nativa de Windows (descargable en https://www.python.org). Las versiones instaladas a través de pacman en MSYS2 no funcionarán.
2.2. Bootstrap Bazel en Windows
Abre el shell de MSYS2.
Configura las siguientes variables del entorno:
BAZEL_VS
oBAZEL_VC
(no son iguales): Se establece en la ruta al directorio de Visual Studio (BAZEL_VS) o al directorio de Visual C++ (BAZEL_VC). Establecer una de ellas es suficiente.BAZEL_SH
: Ruta de acceso del MSYS2bash.exe
. Consulta el comando en los siguientes ejemplos.No establecer en
C:\Windows\System32\bash.exe
. (Tienes ese archivo si instalaste el Subsistema de Windows para Linux). Bazel no admite esta versión debash.exe
.PATH
: Agrega el directorio de Python.JAVA_HOME
: Configurado en el directorio de JDK.
Ejemplo (con BAZEL_VS):
export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk1.8.0_112"
o (mediante BAZEL_VC):
export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk1.8.0_112"
cd
al directorio donde desempaquetaste el archivo de distribución.Ejecuta la secuencia de comandos de compilación:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh
El resultado compilado se coloca en output/bazel.exe
. Este es un objeto binario de Bazel autónomo, sin un JDK incorporado. Puedes copiarlo en cualquier lugar o usarlo en el lugar. Para mayor comodidad, copia este objeto binario en un directorio que esté en tu PATH
.
Para compilar el objeto binario bazel.exe
de forma reproducible, también configura SOURCE_DATE_EPOCH
en el paso "Ejecutar la secuencia de comandos de compilación".
No necesitas ejecutar Bazel desde la shell de MSYS2. Puedes ejecutar Bazel desde el
Símbolo del sistema (cmd.exe
) o PowerShell.