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 de None
y los tratarán como si 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
- subpaquetes
existing_rule
unknown native.existing_rule(name)Muestra un objeto inmutable similar a un dict que describe los atributos de una regla cuya instancia se creó en el paquete de este subproceso, o
None
si no existe una instancia de regla con ese nombre.Aquí, un objeto inmutable tipo dict significa un objeto profundamente inmutable x
que admite iteraciones similares a dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
y x.values()
.
Si se configura la marca --noincompatible_existing_rules_immutable_view
, en su lugar, se muestra un nuevo dict mutable con el mismo contenido.
El resultado contiene una entrada para cada atributo, a excepción de los privados (cuyos nombres no comienzan con una letra) y algunos tipos de atributos heredados que no se pueden representar. Además, el dict contiene entradas para name
y kind
de la instancia de regla (por ejemplo, 'cc_binary'
).
Los valores del resultado representan valores de 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 dicts se convierten en dicts nuevos y mutables. Sus elementos se convierten de la misma manera de manera recursiva.
- Los valores
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 la instancia de la regla y cuyo valor predeterminado se calcula. (Los valores predeterminados calculados no se pueden calcular hasta la fase de análisis).
En lo 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 la regla de formato interno a Starlark: una que se usa en los valores predeterminados calculados y la otra que usa ctx.attr.foo
.
Parámetros
Parámetro | Descripción |
---|---|
name
|
required El nombre del destino. |
existing_rules
unknown native.existing_rules()Muestra un objeto inmutable similar a un dict que describe las reglas que se crearon hasta el momento en el paquete de este subproceso. Cada entrada del objeto similar a un dict asigna el nombre de la instancia de la regla al resultado que mostraría
existing_rule(name)
.Aquí, un objeto inmutable tipo dict significa un objeto profundamente inmutable x
que admite iteraciones similares a dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
y x.values()
.
Si se configura la marca --noincompatible_existing_rules_immutable_view
, en su lugar, se muestra un nuevo dict mutable con el mismo contenido.
Nota: En lo 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)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 of strings ;
obligatorioLa lista de archivos para exportar. |
visibility
|
sequence; or None ;
predeterminado = NingunoSe 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
|
sequence of strings; or None ;
predeterminado = NingunaLicencias 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 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
(el predeterminado es[]
).
exclude_directories
está habilitado (configurado en 1
), se omitirán los archivos de tipo de directorio de los resultados (valor predeterminado de 1
).
Parámetros
Parámetro | Descripción |
---|---|
include
|
sequence of strings ;
default = []La lista de patrones glob que se incluirán. |
exclude
|
sequence of strings ;
default = []La lista de patrones glob para excluir. |
exclude_directories
|
default = 1 Una marca si se debe excluir directorios o no. |
allow_empty
|
default = unbound Indica si permitimos que los patrones glob no coincidan. Si `allow_empty` es False, cada patrón de inclusión individual debe coincidir con algo y, además, el resultado final no debe estar vacío (después de que se excluyen 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, está vacío. Para los repositorios generados por extensiones de módulo, 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, está 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 lo mismo que el campo
module.version
que se ve en module_ctx.modules
.
Puede mostrar None
.
package_group
None native.package_group(name, packages=[], includes=[])Esta función define un conjunto de paquetes y le asigna una etiqueta al grupo. Se puede hacer referencia a la etiqueta en los atributos
visibility
.
Parámetros
Parámetro | Descripción |
---|---|
name
|
required Es el nombre único de esta regla. |
packages
|
sequence of strings ;
default = []Es una enumeración completa de los paquetes de este grupo. |
includes
|
sequence of strings ;
default = []Otros grupos de paquetes que se incluyen en este. |
package_name
string native.package_name()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 de archivos BUILD que realiza la llamada.
package_relative_label
Label native.package_relative_label(input)Convierte la string de entrada en un objeto Label, en el contexto del paquete que se está inicializando en el momento (es decir, el archivo
BUILD
para el que 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 a las que llama directa o indirectamente. Por ejemplo, es posible que no se la llame 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 pasas la cadena dada a un atributo con valor de etiqueta de un objetivo 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 lo llamó, no el paquete del archivo BUILD
. Usa Label()
cuando necesites hacer referencia a un objetivo fijo que esté 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 esa razón, las macros externas siempre deben pasar los objetos de etiqueta a las macros internas en lugar de las cadenas de etiquetas).
Parámetros
Parámetro | Descripción |
---|---|
input
|
string; or Label ; obligatorioLa cadena de etiqueta de entrada o el objeto de etiqueta. Si se pasa un objeto Label, se muestra tal como está. |
repo_name
string native.repo_name()El nombre canónico del repositorio que contiene el paquete que se está evaluando, sin signos arroces iniciales.
repository_name
string native.repository_name()Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar en una fase experimental si se configura
--+incompatible_enable_deprecated_label_apis
Obsoleto. Es preferible usar
repo_name
, que no contiene el arroba inicial falso, pero se comporta de forma idéntica.El nombre canónico del repositorio que contiene el paquete que se está evaluando, con un solo símbolo arroba (@
) prefijado. Por ejemplo, en los paquetes que la estrofa local_repository(name='local', path=...)
del espacio de trabajo llama a su existencia, se establecerá en @local
. En los paquetes del repositorio principal, se configurará como @
.
subpaquetes
sequence native.subpackages(include, exclude=[], allow_empty=False)Muestra una nueva lista mutable de cada subpaquete directo del paquete actual, sin importar 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 directamente a esta función.
Parámetros
Parámetro | Descripción |
---|---|
include
|
sequence of strings ;
obligatorioLa lista de patrones glob que se incluirán en el análisis de subpaquetes. |
exclude
|
sequence of strings ;
default = []La lista de patrones glob que se excluirán del análisis de subpaquetes. |
allow_empty
|
default = 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 superflosa. Configurarlo como verdadero permite que esta función tenga éxito en ese caso. |