Cómo compilar Bazel desde la fuente

Informar un problema Ver fuente Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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 hacer lo siguiente:

Compila Bazel con Bazel

Resumen

  1. Obtén la versión más reciente de Bazel desde la página de versiones de GitHub o con Bazelisk.

  2. Descarga las fuentes de Bazel desde GitHub y extráelas en algún lugar. Como alternativa, puedes clonar el árbol de origen de Git desde https://github.com/bazelbuild/bazel.

  3. Instala los mismos requisitos previos que para el bootstrapping (consulta para sistemas similares a Unix o para Windows).

  4. Compila una compilación de desarrollo de Bazel con Bazel: bazel build //src:bazel-dev (o bazel build //src:bazel-dev.exe en Windows)

  5. El archivo binario resultante se encuentra en bazel-bin/src/bazel-dev (o bazel-bin\src\bazel-dev.exe en Windows). Puedes copiarlo donde quieras y usarlo de inmediato sin necesidad de instalarlo.

A continuación, encontrarás instrucciones detalladas.

Paso 1: Obtén la versión más reciente de Bazel

Objetivo: Instalar o descargar una versión de lanzamiento de Bazel Para asegurarte de que puedes ejecutarlo, escribe bazel en una terminal.

Motivo: Para compilar Bazel desde un árbol de origen de GitHub, necesitas un archivo binario de Bazel preexistente. Puedes instalar uno desde un administrador de paquetes o descargarlo desde GitHub. Consulta Cómo instalar Bazel. (O puedes compilar desde cero (arranque)).

Solución de problemas:

  • Si no puedes ejecutar Bazel escribiendo bazel en una terminal, haz lo siguiente:

    • Es posible que el directorio del archivo 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.

    • Es posible que el propio binario de Bazel no se llame bazel (en Unix) o bazel.exe (en Windows).

      Esto no es un gran problema. Puedes cambiar el nombre del archivo binario o escribir su nombre en lugar de bazel.

    • Tal vez el objeto binario no sea ejecutable (en Unix).

      Debes ejecutar chmod +x /path/to/bazel para que el objeto binario sea ejecutable.

Paso 2: Descarga las fuentes de Bazel desde GitHub

Si conoces Git, solo tienes que ejecutar git clone https://github.com/bazelbuild/bazel.

En caso contrario:

  1. Descarga las fuentes más recientes como un archivo ZIP.

  2. Extrae el contenido en algún lugar.

    Por ejemplo, crea un directorio bazel-src en tu directorio principal y extrae allí el contenido.

Paso 3: Instala los requisitos previos

Instala los mismos requisitos previos que para el bootstrapping (consulta a continuación): JDK, compilador de C++, MSYS2 (si compilas en Windows), etcétera.

Paso 4a: Compila Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix

Si quieres obtener instrucciones para Windows, consulta Cómo compilar Bazel en Windows.

Objetivo: Ejecuta Bazel para compilar un objeto binario de Bazel personalizado (bazel-bin/src/bazel-dev).

Instrucciones:

  1. Cómo iniciar una terminal de Bash

  2. 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 el siguiente comando:

    cd ~/bazel-src
    
  3. Compila Bazel desde la fuente:

    bazel build //src:bazel-dev
    

    Como alternativa, puedes ejecutar bazel build //src:bazel --compilation_mode=opt para generar un archivo binario más pequeño, pero la compilación es más lenta.

    Puedes compilar con la marca --stamp --embed_label=X.Y.Z para incorporar una versión de Bazel para el binario, de modo que bazel --version genere la versión determinada.

  4. El resultado estará en bazel-bin/src/bazel-dev (o bazel-bin/src/bazel).

Paso 4b: Compila Bazel en Windows

Si deseas obtener instrucciones para sistemas similares a Unix, consulta Ubuntu Linux, macOS y otros sistemas similares a Unix.

Objetivo: Ejecuta Bazel para compilar un objeto binario de Bazel personalizado (bazel-bin\src\bazel-dev.exe).

Instrucciones:

  1. Inicia el símbolo del sistema (menú Inicio > Ejecutar > "cmd.exe").

  2. 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 el siguiente comando:

    cd %USERPROFILE%\bazel-src
    
  3. Compila Bazel desde la fuente:

    bazel build //src:bazel-dev.exe

    Como alternativa, puedes ejecutar bazel build //src:bazel.exe --compilation_mode=opt para generar un archivo binario más pequeño, pero la compilación es más lenta.

    Puedes compilar con la marca --stamp --embed_label=X.Y.Z para incorporar una versión de Bazel para el binario, de modo que bazel --version genere la versión determinada.

  4. El resultado estará en bazel-bin\src\bazel-dev.exe (o bazel-bin\src\bazel.exe).

Paso 5: Instala el objeto binario compilado

En realidad, no hay nada que instalar.

El resultado del paso anterior es un archivo binario de Bazel autónomo. Puedes copiarlo en cualquier directorio y usarlo de inmediato. (Es útil si ese directorio está en tu PATH para que puedas ejecutar "bazel" en cualquier lugar).


Cómo compilar Bazel desde cero (bootstrap)

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).

  1. Descarga bazel-<version>-dist.zip de GitHub, por ejemplo, bazel-0.28.1-dist.zip.

    Atención:

    • Existe un archivo de distribución único e independiente de la arquitectura. No hay archivos de distribución específicos para la arquitectura o el SO.
    • Estas fuentes no son las mismas que el árbol de fuentes de GitHub. Debes usar el archivo de distribución para iniciar Bazel. No puedes usar un árbol de origen clonado desde GitHub. (El archivo de distribución contiene archivos fuente generados que son necesarios para el bootstrapping y no forman parte del árbol fuente normal de Git).
  2. Descomprime el archivo de distribución en algún lugar del disco.

    Debes verificar la firma realizada por la clave de lanzamiento 3D5919B448457EE0 de Bazel.

Paso 2a: Inicializa Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix

Si deseas obtener instrucciones para Windows, consulta Bootstrap Bazel on Windows.

2.1. Instala los requisitos previos

  • Bash

  • zip, unzip

  • Cadena de herramientas de compilación de C++

  • JDK: Se requiere la versión 21.

  • Python Se admiten las versiones 2 y 3, por lo que es suficiente con instalar una de ellas.

Por ejemplo, en Ubuntu Linux, puedes instalar estos requisitos con el siguiente comando:

sudo apt-get install build-essential openjdk-21-jdk python zip unzip

2.2. Cómo iniciar Bazel en Unix

  1. Abre una ventana de shell o de terminal.

  2. cd al directorio en el que descomprimiste el archivo de distribución.

  3. 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 archivo binario de Bazel independiente, sin un JDK integrado. Puedes copiarlo en cualquier lugar o usarlo en el mismo 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 archivo binario bazel de forma reproducible, también establece SOURCE_DATE_EPOCH en el paso "Ejecuta la secuencia de comandos de compilación".

Paso 2b: Inicializa Bazel en Windows

Si deseas obtener instrucciones para sistemas similares a Unix, consulta Bootstrap Bazel en Ubuntu Linux, macOS y otros sistemas similares a Unix.

2.1. Instala los requisitos previos

  • Shell de MSYS2

  • Los paquetes de MSYS2 para zip y unzip. 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 una versión posterior, o bien instala las herramientas de compilación más recientes para Visual Studio 2017.

  • JDK: Se requiere la versión 21.

  • Python Se admiten las versiones 2 y 3, por lo que es suficiente con instalar una de ellas. Necesitas la versión nativa de Windows (que se puede descargar desde https://www.python.org). Las versiones instaladas a través de pacman en MSYS2 no funcionarán.

2.2. Cómo iniciar Bazel en Windows

  1. Abre la shell de MSYS2.

  2. Configura las siguientes variables de entorno:

    • BAZEL_VS o BAZEL_VC (no son iguales): Se establece en la ruta de acceso al directorio de Visual Studio (BAZEL_VS) o al directorio de Visual C++ (BAZEL_VC). Es suficiente con configurar uno de ellos.
    • BAZEL_SH: Es la ruta de acceso de bash.exe de MSYS2. Consulta el comando en los ejemplos que se muestran a continuación.

      No configures este parámetro como C:\Windows\System32\bash.exe. (Tienes ese archivo si instalaste el Subsistema de Windows para Linux). Bazel no admite esta versión de bash.exe.

    • PATH: Agrega el directorio de Python.

    • JAVA_HOME: Se establece en el directorio del 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/jdk-21"
    

    o bien (con 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/jdk-21"
    
  3. cd al directorio en el que descomprimiste el archivo de distribución.

  4. 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 archivo binario de Bazel independiente, sin un JDK integrado. Puedes copiarlo en cualquier lugar o usarlo en el mismo lugar. Para mayor comodidad, copia este objeto binario en un directorio que esté en tu PATH.

Para compilar el archivo binario bazel.exe de forma reproducible, también establece SOURCE_DATE_EPOCH en el paso "Ejecuta la secuencia de comandos de compilación".

No es necesario que ejecutes Bazel desde la shell de MSYS2. Puedes ejecutar Bazel desde el símbolo del sistema (cmd.exe) o PowerShell.