nativo/nativa/indígena/aborigen

Es un módulo integrado para admitir reglas nativas y otras funciones auxiliares de paquetes. Todas las reglas nativas aparecen como funciones en este módulo, por ejemplo, native.cc_library. Ten en cuenta que el módulo nativo solo está disponible en la fase de carga (es decir, para macros, no para implementaciones de reglas). Los atributos ignorarán los valores None y los tratarán como si el atributo no estuviera configurado.
Las siguientes funciones también están disponibles:

Miembros

existing_rule

unknown native.existing_rule(name)

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

Aquí, un objeto inmutable similar a un diccionario significa un objeto profundamente inmutable x 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, con la excepción de los privados (cuyos nombres no comienzan con una letra) y algunos tipos de atributos heredados no representables. Además, el diccionario contiene entradas para el name y el kind de la instancia de 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 los destinos en el mismo paquete o '//pkg:name' para los 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 forma recursiva de la misma manera.
  • Los valores select se muestran con su contenido transformado como se describió anteriormente.
  • 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 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 macros simbólicas de finalizador de reglas. No se recomienda usar esta función en otros contextos y se inhabilitará en una versión futura de Bazel. 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 formulario interno a Starlark: uno que usan los valores predeterminados calculados y el otro que usa ctx.attr.foo.

Parámetros

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

existing_rules

unknown native.existing_rules()

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

Aquí, un objeto inmutable similar a un diccionario significa un objeto profundamente inmutable x 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 macros simbólicas de finalizador de reglas. No se recomienda usar esta función en otros contextos y se inhabilitará en una versión futura de Bazel. Hace que los archivos BUILD sean frágiles y dependientes del orden.

exports_files

None native.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 cadenas; obligatorio
La lista de archivos que se exportarán.
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 cadenas; o None; el valor predeterminado es None
Licencias que se especificarán.

glob

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

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

Parámetros

Parámetro Descripción
include secuencia de cadenas; el valor predeterminado es []
La lista de patrones glob que se incluirán.
exclude secuencia de cadenas; el valor predeterminado es []
La lista de patrones glob que se excluirán.
exclude_directories int; el valor predeterminado es 1
Una marca para excluir o no 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 no debe estar vacío (después de que se excluyan las coincidencias de los patrones `exclude`).

module_name

string native.module_name()

Es el nombre del módulo de Bazel asociado con el repositorio en el que se encuentra este paquete. Si este paquete proviene de un repositorio definido en WORKSPACE en lugar de MODULE.bazel, estará vacío. Para 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 mostrar None.

module_version

string native.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 proviene de un repositorio definido en WORKSPACE en lugar de MODULE.bazel, estará vacío. Para 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 mostrar None.

package_default_visibility

List native.package_default_visibility()

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

package_group

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

package_name

string native.package_name()

Es el nombre del paquete que se está evaluando, 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 native.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 que se está ejecutando la macro actual). Si la entrada ya es un 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 en (por ejemplo) 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 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 un Label en el contexto de un paquete que no sea el archivo BUILD o el archivo .bzl que realiza la llamada. Por ese motivo, las macros externas siempre deben preferir pasar objetos Label a macros internas en lugar de cadenas de etiquetas.)ctx.package_relative_label() proporciona la misma funcionalidad dentro de una función de implementación de reglas o aspectos.

Parámetros

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

repo_name

string native.repo_name()

Es el nombre canónico del repositorio que contiene el paquete que se está evaluando, sin signos de arroba iniciales.

repository_name

string native.repository_name()

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

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

subpackages

sequence native.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 en relación con el 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 secuencia de cadenas; obligatorio
La lista de patrones glob que se incluirán en el análisis de subpaquetes.
exclude secuencia de cadenas; el valor predeterminado es []
La lista de patrones glob que se excluirán del análisis de subpaquetes.
allow_empty bool; el valor predeterminado es False
Indica si fallamos 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 superflua. Si se configura como verdadera, esta función tendrá éxito en ese caso.