Archivos BUILD

Informar un problema

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 los archivos de COMPILACIÓN.

Miembros

depset

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 que se muestran los elementos cuando el depset se convierte en una lista. Consulta la Descripción general de las dependencias para obtener más información.

Todos los elementos (directos e indirectos) de un depósito deben ser del mismo tipo, como se obtuvo por la expresión type(x).

Debido a que un conjunto basado en hash se usa para eliminar duplicados durante la iteración, todos los elementos de un depset deben tener codificación hash. 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 Error 10313.

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

El orden del depset creado debe ser compatible con el orden de sus destinos de transitive. El pedido de "default" es compatible con cualquier otro pedido. Los demás pedidos solo son compatibles con ellos mismos.

Parámetros

Parámetro Descripción
direct secuencia o None; el valor predeterminado es None
Una lista de elementos directos de un destino.
order el valor predeterminado es "default"
La estrategia de recorrido para el nuevo depósito. Consulta aquí los valores posibles.
transitive secuencia de depset; 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)

Muestra un objeto inmutable similar a un diccionario que describe los atributos de una instancia de regla creada en el paquete de este subproceso, o None si no existe una instancia de regla con ese nombre.

En este caso, un objeto inmutable similar a un dict significa un objeto profundamente inmutable x que admite iteraciones similares a las de un diccionario: len(x), name in x, x[name], x.get(name), x.items(), x.keys() y x.values().

Si se establece la marca --noincompatible_existing_rules_immutable_view, en su lugar, muestra un nuevo dict mutable con el mismo contenido.

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

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

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

Si es posible, evita usar esta función. Hace que los archivos BUILD se vuelvan frágiles y dependen del orden. Además, ten en cuenta que difiere sutilmente de las otras dos conversiones de valores de atributos de reglas de formato interno a Starlark: una se usa por valores predeterminados calculados y la otra se usa por ctx.attr.foo.

Parámetros

Parámetro Descripción
name obligatorio
El nombre del destino.

existing_rules

unknown existing_rules()

Muestra un objeto inmutable similar a un diccionario, en el que se describen las reglas para las que se crearon instancias en el paquete de este subproceso. Cada entrada del objeto similar a dict asigna el nombre de la instancia de la regla al resultado que mostrará existing_rule(name).

En este caso, un objeto inmutable similar a un dict significa un objeto profundamente inmutable x que admite iteraciones similares a las de un diccionario: len(x), name in x, x[name], x.get(name), x.items(), x.keys() y x.values().

Si se establece la marca --noincompatible_existing_rules_immutable_view, en su lugar, muestra un nuevo dict mutable con el mismo contenido.

Nota: Si es posible, evita usar esta función. Hace que los archivos BUILD se vuelvan frágiles y dependen del orden. Además, si se establece la marca --noincompatible_existing_rules_immutable_view , esta función puede ser muy costosa, en especial si se la llama dentro de un bucle.

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 secuencia de strings; obligatoria
Es la lista de archivos para exportar.
visibility secuencia o None; el valor predeterminado es None
Se puede especificar una declaración de visibilidad. Los archivos serán visibles para los destinos especificados. Si no se especifica la visibilidad, los archivos serán visibles para todos los paquetes.
licenses secuencia de string o None. El valor predeterminado es None
Licencias que se especificarán.

glob

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

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

Parámetros

Parámetro Descripción
include secuencia de strings; el valor predeterminado es []
Es la lista de patrones glob que se incluirán.
exclude secuencia de strings; el valor predeterminado es []
Es la lista de patrones glob que se excluirán.
exclude_directories el valor predeterminado es 1
Una marca para excluir directorios o no.
allow_empty el valor predeterminado es unbound
Indica si se permite que los patrones glob no coincidan con nada. Si `allow_empty` es falso, cada patrón de inclusión individual debe coincidir con algún elemento y también el resultado final no debe estar vacío (después de excluir las coincidencias de los patrones `excluir`).

module_name

string module_name()

El nombre del módulo de Bazel asociado con el repositorio en el que se encuentra este paquete. Si este paquete es de un repositorio definido en WORKSPACE en lugar de MODULE.bazel, este campo estará vacío. En el caso de los repositorios generados por extensiones de módulo, este es el nombre del módulo que aloja la extensión. Es igual al campo module.name que se ve en module_ctx.modules. Es posible que se muestre None.

module_version

string module_version()

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

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 obligatorio
El nombre único de esta regla.
packages secuencia de strings; el valor predeterminado es []
Es una enumeración completa de los paquetes de este grupo.
includes secuencia de strings; el valor predeterminado es []
Otros grupos de paquetes que se incluyen en este.

package_name

string package_name()

El nombre del paquete que se evalúa. Por ejemplo, en el archivo COMPILACIÓN 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 de archivos BUILD del llamador. Esta función es equivalente a la variable obsoleta PACKAGE_NAME.

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 (es decir, el archivo BUILD para el cual se ejecuta la macro actual). Si la entrada ya es Label, se muestra sin cambios.

Solo se puede llamar a esta función mientras se evalúa un archivo BUILD y las macros 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 de Label que se produciría si pasas la cadena dada 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 codificado en la macro, como un compilador. Usa package_relative_label() cuando necesites normalizar una cadena de etiqueta proporcionada por el archivo BUILD a un objeto Label. (No hay forma de convertir una cadena en Label en el contexto de un paquete que no sea el archivo BUILD o el archivo .bzl que realiza la llamada. Por esa razón, las macros externas siempre deberían pasar objetos de etiqueta a macros internas en lugar de strings de etiquetas).

Parámetros

Parámetro Descripción
input string o Label; obligatorio
La string de la etiqueta de entrada o el objeto Label. Si se pasa un objeto Label, se muestra tal como está.

repository_name

string repository_name()

El nombre del repositorio desde el que se llama la regla o extensión de compilación. Por ejemplo, en los paquetes que la estrofa local_repository(name='local', path=...) de WORKSPACE, se establecerá como @local. En los paquetes del repositorio principal, se establecerá como @. Esta función es equivalente a la variable obsoleta REPOSITORY_NAME.

select

unknown select(x, no_match_error='')

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

Parámetros

Parámetro Descripción
x required
Un dict que asigna las condiciones de configuración a los valores. Cada clave es una Label o una cadena de etiqueta que identifica una instancia 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 el valor predeterminado es ''
Es un error personalizado opcional para informar si no coincide ninguna condición.

subpaquetes

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

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

Parámetros

Parámetro Descripción
include secuencia de strings; obligatoria
Es la lista de patrones glob que se incluirán en el análisis de subpaquetes.
exclude secuencia de strings; el valor predeterminado es []
Es la lista de patrones glob que se excluirán del análisis de subpaquetes.
allow_empty el valor predeterminado es False
Indica si se produce un error si la llamada muestra una lista vacía. De forma predeterminada, la lista vacía indica un posible error en el archivo BUILD, en el que la llamada a subpackages() es superflous. Establecer el valor en verdadero permite que esta función se ejecute correctamente en ese caso.