Archivos BUILD

Informar un problema Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Métodos disponibles en los archivos BUILD. Consulta también la Enciclopedia de compilación para obtener funciones y reglas de compilación adicionales, que también se pueden usar en archivos BUILD.

Miembros

deps

depset depset(direct=None, order="default", *, transitive=None)

Crea un depset. El parámetro direct es una lista de elementos directos del depset, y el parámetro transitive es una lista de depsets cuyos elementos se convierten en elementos indirectos del depset creado. El parámetro order especifica el orden en el que se muestran los elementos cuando el depset se convierte en una lista. Consulta la Descripción general de los depsets para obtener más información.

Todos los elementos (directos e indirectos) de un depset deben ser del mismo tipo, como se obtiene con la expresión type(x).

Dado que se usa un conjunto basado en hash para eliminar duplicados durante la iteración, todos los elementos de un depset deben ser hashables. Sin embargo, esta invariante no se verifica de manera coherente en todos los constructores. Usa la marca --incompatible_always_check_depset_elements para habilitar la verificación coherente. Este será el comportamiento predeterminado en versiones futuras. Consulta el problema 10313.

Además, los elementos deben ser inmutables, aunque esta restricción se flexibilizará en el futuro.

El orden del depset creado debe ser compatible con el orden de sus depsets de transitive. El orden "default" es compatible con cualquier otro orden, mientras que todos los demás órdenes solo son compatibles entre sí.

Parámetros

Parámetro Descripción
direct sequence o None; El valor predeterminado es None
Es una lista de elementos directos de un depset.
order string; el valor predeterminado es "default"
Estrategia de recorrido para el nuevo depset. Consulta aquí los valores posibles.
transitive sequence de depsets o None; el valor predeterminado es None
Es una lista de depsets cuyos elementos se convertirán en elementos indirectos del depset.

existing_rule

unknown existing_rule(name)

Devuelve un objeto inmutable similar a un diccionario que describe los atributos de una regla que se creó en el paquete de este subproceso o None si no existe ninguna instancia de regla con ese nombre.

Aquí, un objeto inmutable similar a un diccionario significa un objeto x profundamente inmutable que admite la iteración similar a un diccionario, len(x), name in x, x[name], x.get(name), x.items(), x.keys() y x.values().

El resultado contiene una entrada para cada atributo, excepto los privados (cuyos nombres no comienzan con una letra) y algunos tipos de atributos heredados no representables. Además, el diccionario contiene entradas para name y kind de la instancia de la regla (por ejemplo, 'cc_binary').

Los valores del resultado representan los valores de atributo de la siguiente manera:

  • Los atributos de tipo str, int y bool se representan tal cual.
  • Las etiquetas se convierten en cadenas con el formato ':foo' para los destinos del mismo paquete o '//pkg:name' para los destinos de un paquete diferente.
  • Las listas se representan como tuplas y los diccionarios se convierten en diccionarios nuevos y mutables. Sus elementos se convierten de forma recursiva de la misma manera.
  • Los valores de select se devuelven con su contenido transformado como se describió anteriormente.
  • Los atributos para los que no se especificó ningún valor durante la creación de la regla y cuyo valor predeterminado se calcula se excluyen del resultado. (Los valores predeterminados calculados no se pueden calcular hasta la fase de análisis).

Si es posible, usa esta función solo en las funciones de implementación de las macros simbólicas del finalizador de reglas. No se recomienda usar esta función en otros contextos, y se inhabilitará en una versión futura de Bazel, ya que hace que los archivos BUILD sean frágiles y dependientes del orden. Además, ten en cuenta que difiere sutilmente de las otras dos conversiones de valores de atributos de reglas del formato interno a Starlark: una que usan los valores predeterminados calculados y otra que usa ctx.attr.foo.

Parámetros

Parámetro Descripción
name string; obligatorio
Es el nombre del destino.

existing_rules

unknown existing_rules()

Devuelve un objeto inmutable similar a un diccionario que describe las reglas que se instanciaron hasta el momento en el paquete de este subproceso. Cada entrada del objeto similar a un diccionario asigna el nombre de la instancia de la regla al resultado que devolvería existing_rule(name).

Aquí, un objeto inmutable similar a un diccionario significa un objeto x profundamente inmutable que admite la iteración similar a un diccionario, len(x), name in x, x[name], x.get(name), x.items(), x.keys() y x.values().

Si es posible, usa esta función solo en las funciones de implementación de las macros simbólicas del finalizador de reglas. No se recomienda usar esta función en otros contextos, y se inhabilitará en una versión futura de Bazel, ya que hace que los archivos BUILD sean frágiles y dependientes del orden.

exports_files

None exports_files(srcs, visibility=None, licenses=None)

Especifica una lista de archivos que pertenecen a este paquete y que se exportan a otros paquetes.

Parámetros

Parámetro Descripción
srcs sequence de strings; obligatorio
Es la lista de archivos que se exportarán.
visibility sequence o None; el valor predeterminado es None
Se puede especificar una declaración de visibilidad. Los archivos serán visibles para los objetivos especificados. Si no se especifica la visibilidad, los archivos serán visibles para todos los paquetes.
licenses sequence de strings o None; el valor predeterminado es None
Son las licencias que se deben especificar.

glob

sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

Glob devuelve una lista nueva, mutable y ordenada de cada archivo del paquete actual que cumpla con las siguientes condiciones:
  • Coincide con al menos un patrón en include.
  • No coincide con ninguno de los patrones en exclude (valor predeterminado []).
Si el argumento exclude_directories está habilitado (establecido en 1), los archivos de tipo directorio se omitirán de los resultados (1 predeterminado).

Parámetros

Parámetro Descripción
include sequence de strings; el valor predeterminado es []
Es la lista de patrones glob que se incluirán.
exclude sequence de strings; el valor predeterminado es []
Es la lista de patrones glob que se excluirán.
exclude_directories int; el valor predeterminado es 1
Es una marca que indica si se deben excluir los directorios.
allow_empty El valor predeterminado es unbound
. Indica si permitimos que los patrones glob no coincidan con nada. Si `allow_empty` es False, cada patrón de inclusión individual debe coincidir con algo, y el resultado final también debe no estar vacío (después de que se excluyan las coincidencias de los patrones de `exclude`).

module_name

string module_name()

Es el nombre del módulo de Bazel asociado con el repo en el que se encuentra este paquete. Si este paquete proviene de un repo definido en WORKSPACE en lugar de MODULE.bazel, este campo estará vacío. En el caso de los repositorios generados por extensiones de módulos, este es el nombre del módulo que aloja la extensión. Es lo mismo que el campo module.name que se ve en module_ctx.modules. Puede devolver None.

module_version

string module_version()

Es la versión del módulo de Bazel asociado con el repo en el que se encuentra este paquete. Si este paquete proviene de un repo definido en WORKSPACE en lugar de MODULE.bazel, este campo estará vacío. En el caso de los repositorios generados por extensiones de módulos, esta es la versión del módulo que aloja la extensión. Es lo mismo que el campo module.version que se ve en module_ctx.modules. Puede devolver None.

paquete

unknown package(**kwargs)

Declara metadatos que se aplican a cada regla del paquete. Se debe llamar como máximo una vez dentro de un paquete (archivo BUILD). Si se llama, debe ser la primera llamada en el archivo BUILD, justo después de las instrucciones load().

Parámetros

Parámetro Descripción
kwargs obligatorio
Consulta la función package() en la Enciclopedia de compilación para ver los argumentos aplicables.

package_default_visibility

List package_default_visibility()

Devuelve la visibilidad predeterminada del paquete que se está evaluando. Es el valor del parámetro default_visibility de package(), que se extiende para incluir el paquete en sí.

package_group

None package_group(name, packages=[], includes=[])

Esta función define un conjunto de paquetes y asigna una etiqueta al grupo. Se puede hacer referencia a la etiqueta en los atributos visibility.

Parámetros

Parámetro Descripción
name string; obligatorio
Es el nombre único de esta regla.
packages sequence de strings; el valor predeterminado es []
Es una enumeración completa de los paquetes de este grupo.
includes sequence de strings; el valor predeterminado es []
Otros grupos de paquetes que se incluyen en este.

package_name

string package_name()

Es el nombre del paquete que se evalúa, sin el nombre del repositorio. Por ejemplo, en el archivo BUILD some/package/BUILD, su valor será some/package. Si el archivo BUILD llama a una función definida en un archivo .bzl, package_name() coincidirá con el paquete del archivo BUILD que realiza la llamada. El valor siempre será una cadena vacía para el paquete raíz.

package_relative_label

Label package_relative_label(input)

Convierte la cadena de entrada en un objeto Label, en el contexto del paquete que se está inicializando actualmente (es decir, el archivo BUILD para el que se está ejecutando la macro actual). Si la entrada ya es un Label, se devuelve sin cambios.

Solo se puede llamar a esta función mientras se evalúa un archivo BUILD y las macros a las que llama directa o indirectamente. No se puede llamar, por ejemplo, en una función de implementación de reglas.

El resultado de esta función es el mismo valor Label que se produciría si se pasara la cadena determinada a un atributo con valor de etiqueta de un destino declarado en el archivo BUILD.

Nota de uso: La diferencia entre esta función y Label() es que Label() usa el contexto del paquete del archivo .bzl que la llamó, no el paquete del archivo BUILD. Usa Label() cuando necesites hacer referencia a un destino fijo que esté codificado en la macro, como un compilador. Usa package_relative_label() cuando necesites normalizar una cadena de etiquetas proporcionada por el archivo BUILD en un objeto Label. (No hay forma de convertir una cadena en un Label en el contexto de un paquete que no sea el archivo BUILD o el archivo .bzl de llamada. Por ese motivo, las macros externas siempre deben preferir pasar objetos Label a las macros internas en lugar de cadenas de etiquetas).

Parámetros

Parámetro Descripción
input cadena o Label; obligatorio
Es la cadena de la etiqueta de entrada o el objeto Label. Si se pasa un objeto Label, se devuelve tal cual.

repo_name

string repo_name()

Nombre canónico del repositorio que contiene el paquete que se está evaluando actualmente, sin signos arroba iniciales.

repository_name

string repository_name()

Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de él. Se puede habilitar de forma experimental configurando --+incompatible_enable_deprecated_label_apis
Obsoleto. Es preferible usar repo_name, que no contiene el signo arroba inicial falso, pero se comporta de manera idéntica en otros aspectos.

Es el nombre canónico del repositorio que contiene el paquete que se está evaluando actualmente, con un solo signo arroba (@) como prefijo. Por ejemplo, en los paquetes que se invocan con la cláusula WORKSPACE local_repository(name='local', path=...), se establecerá en @local. En los paquetes del repositorio principal, se establecerá en @.

seleccionar

unknown select(x, no_match_error='')

select() es la función auxiliar que hace que un atributo de regla sea configurable. Consulta la enciclopedia de compilaciones para obtener más información.

Parámetros

Parámetro Descripción
x dict; required
Es un diccionario que asigna condiciones de configuración a valores. Cada clave es una Label o una cadena de etiqueta que identifica una instancia de config_setting o constraint_value. Consulta la documentación sobre macros para saber cuándo usar una etiqueta en lugar de una cadena.
no_match_error string; El valor predeterminado es ''
Es un error personalizado opcional que se informa si no coincide ninguna condición.

subpaquetes

sequence subpackages(include, exclude=[], allow_empty=False)

Devuelve una nueva lista mutable de cada subpaquete directo del paquete actual, independientemente de la profundidad del directorio del sistema de archivos. La lista que se devuelve está ordenada y contiene los nombres de los subpaquetes relativos al paquete actual. Se recomienda usar los métodos del módulo bazel_skylib.subpackages en lugar de llamar a esta función directamente.

Parámetros

Parámetro Descripción
include sequence de strings; obligatorio
Lista de patrones glob que se incluirán en el análisis de los subpaquetes.
exclude sequence de strings; el valor predeterminado es []
Es la lista de patrones glob que se excluirán del análisis de los subpaquetes.
allow_empty bool; el valor predeterminado es False
Indica si se produce un error si la llamada devuelve una lista vacía. De forma predeterminada, una lista vacía indica un posible error en el archivo BUILD, en el que la llamada a subpackages() es superflua. Si se configura como verdadero, esta función se ejecutará correctamente en ese caso.