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, p.ej., 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 se hubiera establecido.
También están disponibles las siguientes funciones:
Miembros
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpackages
existing_rule
unknown native.existing_rule(name)
None
si no existe ninguna 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()
.
Si se establece la marca --noincompatible_existing_rules_immutable_view
, se devuelve un nuevo diccionario 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 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, evita usar esta función. Hace que los archivos BUILD sean frágiles y dependan 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
|
obligatorio Es el nombre del destino. |
existing_rules
unknown native.existing_rules()
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 se establece la marca --noincompatible_existing_rules_immutable_view
, se devuelve un nuevo diccionario mutable con el mismo contenido.
Nota: Si es posible, evita usar esta función. Hace que los archivos BUILD sean frágiles y dependan del orden. Además, si se configura la marca --noincompatible_existing_rules_immutable_view
, esta función puede ser muy costosa, en especial si se llama dentro de un bucle.
exports_files
None
native.exports_files(srcs, visibility=None, licenses=None)
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 native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Coincide con al menos un patrón en
include
. - No coincide con ninguno de los patrones en
exclude
(valor predeterminado[]
).
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
|
El valor predeterminado es 1 . Es una marca que indica si se deben excluir directorios o no. |
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 native.module_name()
module.name
que se ve en module_ctx.modules
.
Puede devolver None
.
module_version
string native.module_version()
module.version
que se ve en module_ctx.modules
.
Puede devolver None
.
package_group
None
native.package_group(name, packages=[], includes=[])
visibility
.
Parámetros
Parámetro | Descripción |
---|---|
name
|
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 native.package_name()
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.
package_relative_label
Label native.package_relative_label(input)
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 native.repo_name()
repository_name
string native.repository_name()
--+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 @
.
subpaquetes
sequence native.subpackages(include, exclude=[], allow_empty=False)
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
|
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. |