Glosario de Bazel

Informar un problema . Ver fuente . Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Acción

Un comando para ejecutar durante la compilación, por ejemplo, una llamada a un compilador que toma artefactos como entradas y produce otros artefactos como salidas. Incluye metadatos, como los argumentos de la línea de comandos, la clave de acción y el entorno variables de entrada y artefactos de entrada y salida declarados.

Consulta también: Documentación sobre las reglas

Caché de acciones

Una caché en el disco que almacena una asignación de las acciones ejecutadas al los resultados que crearon. La clave de caché se conoce como clave de acción. R Es el componente principal del modelo de incrementalidad de Bazel. La caché se almacena y, por lo tanto, sobrevive a los reinicios del servidor de Bazel.

Gráfico de acción

Un gráfico en la memoria de acciones y los artefactos que se leen y generan estas acciones. El grafo podría incluir artefactos que existen como archivos de origen (por ejemplo, en el sistema de archivos) y los archivos artefactos intermedios o finales que no se mencionan en los archivos BUILD Producida durante la fase de análisis y se usarán durante la ejecución por fases.

Consulta de grafo de acción (aquery)

Una herramienta de consulta que puede consultar sobre las acciones de compilación. Esto permite analizar cómo las reglas de compilación se traducen en las compilaciones de trabajo reales.

Tecla de acción

La clave de caché de una acción. Se calcula en función de los metadatos de la acción, que podría incluir el comando que se ejecutará en la acción, los indicadores del compilador, la biblioteca ubicaciones o encabezados del sistema, según la acción. Permite que Bazel almacene en caché o invalidar acciones individuales de manera determinista.

Fase de análisis

La segunda fase de una compilación. Procesa el gráfico de destino. especificado en archivos BUILD para producir una acción en la memoria gráfico que determina el orden de las acciones que se ejecutarán durante fase de ejecución. Esta es la fase en la que la regla implementaciones de AA.

Artefacto

Un archivo de origen o un archivo generado. También puede ser un directorio de archivos, conocido como artefactos de árbol.

Un artefacto puede ser una entrada para varias acciones, pero solo lo debe generar como máximo, una acción.

Se puede abordar un artefacto que corresponde a un destino de archivo mediante una etiqueta.

Aspecto

Un mecanismo para que las reglas creen acciones adicionales en sus dependencias. Por ejemplo, si el objetivo A depende de B, se puede aplicar un aspecto en A que desvía hacia arriba una arista de dependencia hasta B y ejecuta acciones adicionales en B para generar y recopilar archivos de salida adicionales. Estas acciones adicionales son almacenar en caché y reutilizarse entre destinos que requieran el mismo aspecto. Se crea con el aspect() función de la API de Starlark Build. Pueden usarse, por ejemplo, para generar metadatos para IDE y crea acciones de análisis con lint.

Consulta también: Documentación sobre los aspectos

Aspecto en aspecto

Un mecanismo de composición en el que se pueden aplicar aspectos a los resultados de otros aspectos. Por ejemplo, un aspecto que genera información para que la usen Los IDEs se pueden aplicar sobre un aspecto que genere archivos .java a partir de un proto.

Para que un aspecto A se aplique sobre el aspecto B, los proveedores que B publica anuncios en su atributo provides. debe coincidir con lo que A declara que desea en su required_aspect_providers .

Atributo

Un parámetro para una regla, que se usa para expresar información de compilación por destino. Entre los ejemplos, se incluyen srcs, deps y copts, que declaran respectivamente un archivos de origen del destino, dependencias y opciones de compiladores personalizados. El cliente potencial disponibles para un destino determinado dependen de su tipo de regla.

.bazelrc

Archivo de configuración de Bazel usado para cambiar los valores predeterminados del inicio marcas y las marcas de comando, y definir reglas grupos de opciones que luego se pueden configurar juntas en la línea de comandos de Bazel usando una marca --config. Bazel puede combinar la configuración de varios archivos de bazelrc. (en todo el sistema, por lugar de trabajo, por usuario o desde una ubicación personalizada) y una Es posible que el archivo bazelrc también importe la configuración de otros archivos bazelrc.

Blaze

Es la versión interna de Google de Bazel. el principal sistema de compilación de Google para su mono.

Archivo BUILD

Un archivo BUILD es el archivo de configuración principal que le indica a Bazel qué software salidas a compilar, cuáles son sus dependencias y cómo compilarlas. Bazel toma un archivo BUILD como entrada y lo usa para crear un gráfico de dependencias. y derivar las acciones que deben llevarse a cabo para crear objetivos intermedios y finales las salidas de software. Un archivo BUILD marca un directorio y cualquier subdirectorio con un archivo BUILD como package y puede contener destinos creados por reglas. También se puede asignar un nombre al archivo BUILD.bazel

Archivo BUILD.bazel

Consulta Archivo BUILD. Tiene prioridad sobre un archivo BUILD del mismo .

Archivo .bzl

Archivo que define reglas, macros y constantes escritas en Starlark. Luego, se pueden importar a BUILD. archivos con la función load().

Gráfico de compilación

El gráfico de dependencias que Bazel construye y recorre para realizar una compilación. Incluye nodos como objetivos, configurados destinos, acciones y artefactos. R compilación se considera completa cuando todos los artefactos en los que un conjunto de los destinos solicitados se verifican como actualizados.

Configuración de la compilación

Una configuración definida por Starlark. Las transiciones pueden establecer configuraciones de compilación para cambiar la configuración de configuración. Si se expone al usuario como una marca de línea de comandos, también conocido como indicador de compilación.

Compilación limpia

Una compilación que no usa los resultados de compilaciones anteriores. Por lo general, es más lento. que una compilación incremental, pero comúnmente se considera más correcta. Bazel garantiza compilaciones limpias e incrementales. siempre son correctas.

Modelo cliente-servidor

El cliente de línea de comandos bazel inicia automáticamente un servidor en segundo plano en la para ejecutar comandos de Bazel. El servidor persiste en comandos, pero se detiene automáticamente tras un período de inactividad (o de manera explícita mediante apagado de Bazel). Dividir Bazel en un servidor y un cliente ayuda a amortizar JVM tiempo de inicio y admite compilaciones incrementales más rápidas ya que el gráfico de acción permanece en la memoria de todos los comandos.

Comando

Se usa en la línea de comandos para invocar diferentes funciones de Bazel, como bazel build, bazel test, bazel run y bazel query.

Marcas de comando

Un conjunto de marcas específicas de un comando. Se especifican las marcas de comando después del comando (bazel build <command flags>). Las marcas pueden aplicarse uno o más comandos. Por ejemplo, --configure es una marca exclusivamente para el El comando bazel sync, pero --keep_going es aplicable a sync, build, test y más. Las marcas se usan a menudo para la configuración por lo que los cambios en los valores de las marcas pueden hacer que Bazel invalide en la memoria gráficos y reiniciar la fase de análisis.

Configuración

Información fuera de las definiciones de regla que afecta la forma en que estas generan acciones. Cada compilación tiene al menos una configuración que especifica la la plataforma de destino, las variables de entorno de acción y la compilación marcas. Las transiciones pueden crear más del servidor, como herramientas de host o compilación cruzada.

Consulta también: Configuraciones

Recorte de configuración

Es el proceso de incluir solo las partes de la configuración de un que el objetivo realmente necesita. Por ejemplo, si compilas el objeto binario //:j de Java con C++ dependencia //:c, es un desperdicio incluir el valor de --javacopt en el la configuración de //:c porque cambiar --javacopt rompe innecesariamente C++. crea capacidad de almacenamiento en caché de compilación.

Consulta configurada (cquery)

Una herramienta de consulta que consulta datos sobre configuración objetivos (después de la fase de análisis finaliza). Esto significa select() y marcas de compilación (como --platforms) se reflejan con precisión en los resultados.

Consulta también: documentación de cquery

Destino configurado

El resultado de evaluar un objetivo con una configuración. La fase de análisis produce esto combinando las opciones de compilación con los objetivos que se deben compilar. Por ejemplo, si //:foo compila para dos arquitecturas diferentes en la misma tiene dos destinos configurados: <//:foo, x86> y <//:foo, arm>.

Precisión

Una compilación es correcta cuando su resultado refleja fielmente el estado de su las entradas transitivas. Para lograr compilaciones correctas, Bazel se esfuerza por herméticos, reproducibles y que generan análisis y ejecución de acciones son deterministas.

Dependencia

Un perímetro dirigido entre dos objetivos Un //:foo de destino tiene un objetivo dependencia en el //:bar de destino si los valores del atributo de //:foo contienen un referencia a //:bar. //:foo tiene una dependencia de acciones en //:bar si un acción en //:foo depende de un artefacto de entrada creado por un acción en //:bar.

En algunos contextos, también podría referirse a una dependencia externa. ver módulos.

Depset

Es una estructura de datos para recopilar datos sobre dependencias transitivas. Optimizado para que la combinación de dependencias es eficiente en el tiempo y el espacio, porque es común tener dependencias muy grandes (cientos de miles de archivos). Se implementa en se refieren de manera recursiva a otros depósitos por razones de eficiencia del espacio. Regla implementaciones no deben “compactarse” de clientes convirtiéndolos en listas, a menos la regla está en el nivel superior del gráfico de compilación. Compactar los depsets grandes genera un gran consumo de memoria. También se conocen como conjuntos anidados en la base de datos interna de Bazel. para implementarlos.

Consulta también: Documentación de Depset

Caché de disco

Un almacén local de BLOB en el disco para la función de almacenamiento en caché remoto. Se puede utilizar en en conjunción con un almacén remoto real de BLOB.

Distdir

Un directorio de solo lectura que contiene archivos que Bazel recuperaría de otro modo del en Internet con reglas de repositorio. Permite que las compilaciones se ejecuten por completo sin conexión.

Ejecución dinámica

Una estrategia de ejecución que selecciona entre la ejecución local y remota según diferentes heurísticas y usa los resultados de ejecución de la aplicación . Algunas acciones se ejecutan más rápido de forma local (por ejemplo, vínculos) y otras son más rápidas de forma remota (por ejemplo, altamente paralelizables compilación). Una estrategia de ejecución dinámica puede brindar la mejor tiempos de compilación incrementales y limpios.

Fase de ejecución

La tercera fase de una compilación. Ejecuta las acciones en la acción gráfico creado durante la fase de análisis. Estas acciones invocan ejecutables (compiladores, secuencias de comandos) para leer y escribir artefactos. Las estrategias de generación controlan la forma en que estas acciones se ejecutan de forma local, remota, dinámica, en zona de pruebas, Docker, etcétera.

Raíz de ejecución

Un directorio en la base de salida del lugar de trabajo en el que las acciones locales se ejecutan en compilaciones sin zona de pruebas. El contenido del directorio es mayormente symlinks de artefactos de entrada desde el lugar de trabajo. La raíz de ejecución también Contiene symlinks a repositorios externos como otras entradas y el bazel-out para almacenar resultados. Se prepara durante la fase de carga. con la creación de un bosque de symlink de los directorios que representan el cierre de paquetes de los que depende una compilación. Se puede acceder con bazel info execution_root en la línea de comandos.

Archivo

Consulta Artefacto.

Hermeticidad

Una compilación es hermética si no hay influencias externas en su compilación y prueba. lo que ayuda a garantizar que los resultados sean deterministas y correcto. Por ejemplo, las compilaciones herméticas generalmente no permiten el uso acceso a acciones, restringe el acceso a entradas declaradas, usa marcas de tiempo fijas y zonas horarias, restringir el acceso a variables de entorno y usar valores iniciales fijos para generadores de números aleatorios

Compilación incremental

Una compilación incremental reutiliza los resultados de compilaciones anteriores para reducir el tiempo de compilación y el uso de los recursos. La verificación de dependencias y el almacenamiento en caché tienen como objetivo producir para este tipo de compilación. Una compilación incremental es lo contrario a una compilación limpia compilar.

Etiqueta

Un identificador para un objetivo. Suele tener la forma @repo//path/to/package:target, en el que repo es el nombre (aparente) de la repositorio que contiene el destino, path/to/package es la ruta de acceso. al directorio que contiene el archivo BUILD que declara el target (este directorio también se conoce como el paquete) y target es el nombre del objetivo en sí. Según la situación, algunas partes pero la sintaxis se puede omitir.

Consulta también: Etiquetas

Fase de carga

La primera fase de una compilación, en la que Bazel ejecuta archivos BUILD para crear paquetes. Macros y ciertas funciones, como glob() se evalúan en esta fase. Intercalado con la segunda fase del compilar, la fase de análisis, para crear un objetivo gráfico.

Macro

Un mecanismo para componer varias declaraciones de destino rule juntas en una sola función Starlark. Permite volver a usar la declaración de reglas comunes patrones en los archivos BUILD. Se expandió al destino de la regla subyacente declaraciones de estado durante la fase de carga.

Consulta también: Documentación de macros

Mnemónico

Una cadena corta y legible por humanos, seleccionada por el autor de la regla, para comprenderla rápidamente lo que hace una acción en la regla. Los mnemónicos se pueden usar como identificadores para las selecciones de estrategia de generación. Algunos ejemplos de mnemotecnias de acción son Javac de reglas de Java, CppCompile de reglas de C++ y AndroidManifestMerger de las reglas de Android.

Módulo

Un proyecto de Bazel que puede tener varias versiones, cada una de las cuales puede tener dependencias en otros módulos. Esto es similar a los conceptos familiares en otras de administración de dependencias, como un artefacto de Maven, un paquete de npm, un Ve a module o a un cajón de carga. Los módulos forman la columna vertebral de la infraestructura externa de Bazel de administración de dependencias.

Cada módulo está respaldado por un repositorio con un archivo MODULE.bazel en su raíz. Este archivo contiene metadatos sobre el módulo en sí (como su nombre y version), sus dependencias directas y muchos otros datos, incluida la cadena de herramientas registros y la entrada de extensión de módulo.

Los metadatos del módulo se alojan en los registros de Bazel.

Consulta también: Módulos de Bazel

Extensión del módulo

Un fragmento de lógica que se puede ejecutar para generar repositorios mediante la lectura entradas de todo el gráfico de dependencia module y de invocación del repositorio de usuario. Las extensiones de módulo tienen funciones similares a las de repo. de firewall, lo que les permite acceder a Internet, realizar operaciones de E/S de archivos, etcétera.

Consulta también: Extensiones de módulos

Reglas nativas

Las reglas que se compilan en Bazel y se implementan en Java. Estas reglas aparecerán en archivos .bzl como funciones en el módulo nativo (para por ejemplo, native.cc_library o native.java_library). Reglas definidas por el usuario (no nativos) se crean con Starlark.

Base de salida

Un directorio específico de workspace para almacenar archivos de salida de Bazel. Usado para separar los resultados del árbol de fuentes del espacio de trabajo (el espacio de trabajo principal) repo). Se encuentra en la raíz de usuario de salida.

Grupos de salida

Un grupo de archivos que se espera que se compile cuando Bazel termine de compilar un objetivo. Las reglas colocan sus resultados habituales en el “grupo de salida predeterminado” (p. ej., el archivo .jar de un java_library, .a y .so para cc_library objetivos). El grupo de salida predeterminado es aquel cuyo Los artefactos se compilan cuando se solicita un destino en la línea de comandos. Las reglas pueden definir más grupos de salida con nombre que pueden especificarse explícitamente en Archivos BUILD (regla filegroup) o la línea de comandos (marca --output_groups).

Raíz de usuario de salida

Un directorio específico del usuario para almacenar los resultados de Bazel. El nombre del directorio es derivadas del nombre de usuario del sistema del usuario. Evita las colisiones de archivos de salida si varios usuarios compilan el mismo proyecto en el sistema al mismo tiempo. Contiene subdirectorios correspondientes a los resultados de compilación de espacios de trabajo individuales. también conocidos como bases de salida.

Paquete

Es el conjunto de destinos definido por un archivo BUILD. R el nombre del paquete es la ruta del archivo BUILD en relación con el repositorio raíz. Un paquete puede contener subpaquetes o subdirectorios que contengan BUILD archivos, lo que forma una jerarquía de paquetes.

Grupo de paquetes

Un objetivo que representa un conjunto de paquetes Se usa con frecuencia en visibility valores de atributos.

Plataforma

Un “tipo de máquina” involucradas en una compilación. Esto incluye la máquina en la que se ejecuta Bazel (la plataforma “anfitrión”), las herramientas de compilación de las máquinas se ejecutan en las plataformas “ejecutivas” (exec), y las máquinas para los que se crean los objetivos (“plataformas de destino”).

Proveedor

Un esquema que describe una unidad de información para pasar destinos de la regla junto con las relaciones de dependencia. Normalmente, esto contiene información como opciones del compilador, archivos de origen o de salida transitivos, y compilar metadatos. Se usa con frecuencia junto con depsets para para almacenar con eficiencia los datos transitivos acumulados. Ejemplo de un proveedor integrado es DefaultInfo.

Consulta también: Documentación para proveedores

Consulta (concepto)

El proceso de analizar un gráfico de compilación para comprender propiedades objetivo y estructuras de dependencias. Bazel admite tres variantes de consulta: query, cquery y aquery.

query (comando)

Una herramienta de consulta que opera durante la carga posterior a la carga de la compilación fase gráfico de destino. Es relativamente rápido, pero no puede analizar los efectos de select(), las marcas de compilación artefactos o acciones de compilación.

Consulta también: Instructivo para consultas, Referencia de consultas

Repositorio

Un árbol de directorios con un archivo de marcador de límite en la raíz que contenga el código fuente que se pueden usar en una compilación de Bazel. A menudo se abrevia como repo.

Un archivo de marcador de límite del repositorio puede ser MODULE.bazel (lo que indica que este repositorio representa un módulo de Bazel), REPO.bazel o, en contextos heredados, WORKSPACE. WORKSPACE.bazel Cualquier archivo de marcador de límite del repositorio indicará el límite de un repo; pueden coexistir en un directorio.

El repositorio principal es el repositorio en el que se ejecuta el comando actual de Bazel.

Los repositorios externos se definen especificando módulos en MODULE.bazel o invocar reglas de repositorio en el módulo extensiones. Se pueden recuperar a pedido a una red "mágico" ubicación en el disco.

Cada repositorio tiene un nombre canónico único y constante que puede ser diferente apparent cuando se ven desde otros repositorios.

Consulta también: Descripción general de las dependencias externas

Caché del repositorio

Una caché de contenido compartido direccionable de archivos que descarga Bazel para compilaciones que se puede compartir en los espacios de trabajo. Habilita compilaciones sin conexión después de descarga inicial. De uso general para almacenar en caché archivos descargados a través de repositorios reglas como http_archive y APIs de reglas de repositorio, como repository_ctx.download Los archivos se almacenan en caché solo si sus sumas de verificación SHA-256 son especificadas para la descarga.

Regla del repositorio

Un esquema para definiciones de repositorios que le indica a Bazel cómo materializar (o "fetch") un repositorio. A menudo se abrevia como regla del repositorio. Bazel invoca internamente las reglas de repo para definir repositorios respaldados por módulos o que se puedan invocar a través de extensiones de módulos. Las reglas de repositorio pueden acceder a Internet o realizar operaciones de E/S de archivos. el repositorio más común regla es http_archive para descargar un archivo con archivos fuente de la a Internet.

Consulta también: Documentación de reglas de repositorio

Reproducibilidad

Propiedad de una compilación o prueba que mostrará un conjunto de entradas producen siempre el mismo conjunto de resultados cada vez, sin importar el tiempo, el método o entorno. Esto no implica necesariamente que las salidas correct o para obtener los resultados deseados.

Regla

Un esquema para definir destinos de la regla en un archivo BUILD, como cc_library Desde la perspectiva del autor de un archivo BUILD, una regla consta de lo siguiente: un conjunto de atributos y lógica de caja negra. La lógica le indica de destino cómo producir artefactos de salida y pasar información a otros objetivos de la regla. Desde la perspectiva de los autores de .bzl, las reglas son forma principal de extender Bazel para admitir nuevos lenguajes de programación y entornos de prueba.

Se crean instancias de las reglas para generar objetivos de reglas en la fase de carga. En la regla de la fase de análisis los objetivos comunican información a sus dependencias descendentes en forma de proveedores de servicios en la nube y registrar acciones que describan cómo generan sus artefactos de salida. Estas acciones se ejecutan en la fase de ejecución fase de análisis.

Consulta también: Documentación sobre las reglas

Objetivo de la regla

Un objetivo que es una instancia de una regla. Contrasta con los objetivos de archivo y grupos de paquetes. No se debe confundir con la regla.

Archivos de ejecución

Las dependencias del entorno de ejecución de un destino ejecutable. Por lo general, el ejecutable es el resultado ejecutable de una regla de prueba, y los runfiles son el entorno de ejecución las dependencias de datos de la prueba. Antes de invocar el archivo ejecutable (durante bazel), Bazel prepara el árbol de los archivos de ejecución junto con el ejecutable de prueba. según su estructura de directorio del código fuente.

Consulta también: Documentación de archivos de ejecución

Zona de pruebas

Es una técnica para aislar una acción en ejecución dentro de una raíz de ejecución temporal, lo que ayuda a garantizar que leer entradas no declaradas o escribir salidas no declaradas La zona de pruebas mejora considerablemente hermeticidad, pero suele tener un costo de rendimiento y requiere asistencia del sistema operativo. El costo de rendimiento depende de la plataforma. En Linux, no es significativo, pero en macOS puede hacer que la zona de pruebas sea inutilizable.

Skyframe

Skyframe es el marco de trabajo de evaluación incremental, funcional y paralelo principal de Bazel.

Estampado

Una función para incorporar información adicional en entornos artefactos. Se puede usar para controlar el código fuente, compilar y otra información relacionada con el espacio de trabajo o el entorno para las compilaciones de lanzamiento. Habilítalo a través de la marca --workspace_status_command y las reglas que admiten el atributo de sello.

Starlark

El lenguaje de extensión para escribir reglas y macros R subconjunto restringido de Python (sintáctica y gramaticalmente) destinado a las de la configuración y para mejorar el rendimiento. Usa el .bzl . BUILD archivos usan un versión restringida de Starlark (como sin definiciones de función def), que antes se conocido como Skylark.

Consulta también: documentación sobre lenguaje de Starlark

Marcas de inicio

El conjunto de marcas especificadas entre bazel y el comando Por ejemplo, la compilación de bazel --host_jvm_debug. Estas marcas modifican el configuración del servidor de Bazel, por lo que cualquier modificación del las marcas de inicio reinician el servidor. Las marcas de inicio no son específicas de ninguna kubectl.

Objetivo

Un objeto que se define en un archivo BUILD y se identifica con un etiqueta. Los destinos representan las unidades que se pueden compilar de un lugar de trabajo desde la perspectiva del usuario final.

Un objetivo que se declara mediante la creación de una instancia de una regla se denomina regla objetivo. Según la regla, estos se pueden ejecutar (como cc_binary) o se pueden probar (como cc_test). Los objetivos de las reglas suelen depender de otras orientaciones mediante sus atributos (como deps) estas las dependencias forman la base del gráfico objetivo.

Además de los objetivos de las reglas, también existen los objetivos de archivo y los grupos de paquetes. objetivos. Los destinos de archivo corresponden a los artefactos a los que se hace referencia dentro de un archivo BUILD. Como caso especial, el archivo BUILD de cualquier paquete se se considera siempre como destino del archivo fuente en ese paquete.

Los objetivos se descubren durante la fase de carga. Durante el fase de análisis, los objetivos están asociados con compilación de Terraform para formar configuraciones objetivos.

Gráfico de destino

Un gráfico en la memoria de objetivos y sus dependencias. Producida durante la fase de carga y se utiliza como entrada para el análisis por fases.

Patrón de objetivo

Una manera de especificar un grupo de destinos en la línea de comandos. Comúnmente los patrones utilizados son :all (todos los objetivos de la regla), :* (todos los destinos de la regla y del archivo), ... (el paquete actual y todos los subpaquetes, de forma recurrente). Se puede usar en conjunto, por ejemplo, //...:* significa todos los objetivos de reglas y archivos de todos paquetes de manera recurrente desde la raíz de workspace.

Pruebas

Reglas que se crearon en destinos a partir de reglas de prueba y, por lo tanto, contienen un ejecutable de prueba. Un código de retorno de cero desde la finalización del ejecutable indica que la prueba fue exitosa. El contrato exacto entre Bazel y las pruebas (como los variables de entorno o métodos de recopilación de resultados de pruebas) se especifica en la sección Enciclopedia.

Cadena de herramientas

Un conjunto de herramientas para generar resultados para un lenguaje. Por lo general, una cadena de herramientas incluye compiladores, vinculadores, intérpretes o linters. Una cadena de herramientas también puede variar es decir, los componentes del conjunto de herramientas del compilador Unix pueden diferir Variante de Windows, aunque la cadena de herramientas es para el mismo idioma. Selección el conjunto de herramientas adecuado para la plataforma se conoce como resolución del conjunto de herramientas.

Objetivo de nivel superior

Un destino de compilación es de nivel superior si se solicita en el comando de Bazel. línea. Por ejemplo, si //:foo depende de //:bar, y bazel build //:foo es se llama, entonces, para esta compilación, //:foo es de nivel superior y //:bar no es nivel superior, aunque deberán crearse ambos objetivos. Una diferencia importante entre objetivos de nivel superior y no de nivel superior es que comando de marcas establecidas en la línea de comandos de Bazel (o mediante .bazelrc) establecerá la configuración para los pero se pueden modificar con una transición para los segmentos objetivos.

Transición

Es una asignación del estado de la configuración de un valor a otro. Permite que los objetivos en el gráfico de compilación tengan valores diferentes parámetros de configuración, incluso si se crearon instancias de la misma regla. R El uso común de las transiciones es con las transiciones divididas, en las que ciertas partes el gráfico de destino se bifurca con parámetros de configuración distintos para cada tenedor. Por ejemplo, se puede compilar un APK de Android con objetos binarios nativos compilada para ARM y x86 con transiciones divididas en una sola compilación.

Consulta también: Transiciones definidas por el usuario

Artefacto de árbol

Un artefacto que representa una colección de archivos. Dado que estas no son artefactos en sí mismos, una acción que opera en ellos debe sino que lo registra como su entrada o salida.

Visibilidad

Uno de estos dos mecanismos para evitar dependencias no deseadas en el sistema de compilación: visibilidad del objetivo para controlar si se puede depender de un objetivo por otros objetivos; y visibilidad de carga para controlar si un BUILD o .bzl puede cargar un archivo .bzl determinado. Sin contexto, por lo general, “visibilidad” se refiere a la visibilidad del objetivo.

Consulta también: Documentación sobre visibilidad

Lugar de trabajo

El entorno que comparten todos los comandos de Bazel se ejecutan desde la misma instancia principal. Cloud Storage.

Históricamente, los conceptos de “repositorio” y “espacio de trabajo” han sido combinadas; el término “espacio de trabajo” se suele usar para referirse a los principales repositorio y, a veces, incluso se usa como sinónimo de "repositorio". Dicho uso debe evitarse para mayor claridad.