Métodos globales disponibles en todos los archivos .bzl.
Miembros
- analysis_test_transition
- aspecto
- configuration_field
- depset
- exec_group
- exec_transition
- module_extension
- proveedor
- repository_rule
- rule
- seleccionar
- subregla
- tag_class
- visibilidad
analysis_test_transition
transition analysis_test_transition(settings)
Crea una transición de configuración que se aplicará en las dependencias de una regla de análisis y prueba. Esta transición solo se puede aplicar en los atributos de reglas con analysis_test = True
. Esas reglas tienen capacidades de restricción (por ejemplo, el tamaño de su árbol de dependencias es limitado), por lo que las transiciones creadas con esta función tienen un alcance potencial limitado en comparación con las transiciones creadas con transition()
.
Esta función está diseñada principalmente para facilitar la biblioteca principal del framework de prueba de análisis. Consulta su documentación (o su implementación) para conocer las prácticas recomendadas.
Parámetros
Parámetro | Descripción |
---|---|
settings
|
dict;
obligatorio Es un diccionario que contiene información sobre los ajustes de configuración que debe establecerse con esta transición de configuración. Las claves son etiquetas de configuración de compilación, y los valores son sus nuevos valores posteriores a la transición. El resto de la configuración no se modificará. Úsalo para declarar los parámetros de configuración específicos que una prueba de análisis requiere que se establezca para aprobar. |
aspecto
Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
function;
obligatorio Es una función de Starlark que implementa este aspecto, con exactamente dos parámetros: Target (el objetivo al que se aplica el aspecto) y ctx (el contexto de la regla desde el que se crea el objetivo). Los atributos del destino están disponibles en el campo ctx.rule . Esta función se evalúa durante la fase de análisis de cada aplicación de un aspecto a un objetivo.
|
attr_aspects
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de atributos. El aspecto se propaga a lo largo de las dependencias especificadas en los atributos de un destino con estos nombres. Los valores comunes aquí incluyen deps y exports . La lista también puede contener una sola cadena "*" para propagarse a lo largo de todas las dependencias de un destino.
|
toolchains_aspects
|
sequence;
el valor predeterminado es [] Lista de tipos de cadenas de herramientas. El aspecto se propaga a las cadenas de herramientas de destino que coinciden con estos tipos de cadenas de herramientas. |
attrs
|
dict;
el valor predeterminado es {} Es un diccionario que declara todos los atributos del aspecto. Asigna un nombre de atributo a un objeto de atributo, como `attr.label` o `attr.string` (consulta el módulo attr). Los atributos de aspecto están disponibles para la función de implementación como campos del parámetro ctx . Los atributos implícitos que comienzan con Los atributos explícitos deben tener el tipo |
required_providers
|
sequence;
el valor predeterminado es [] Este atributo permite que el aspecto limite su propagación solo a los destinos cuyas reglas anuncien sus proveedores obligatorios. El valor debe ser una lista que contenga proveedores individuales o listas de proveedores, pero no ambos. Por ejemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] es un valor válido, mientras que [FooInfo, BarInfo, [BazInfo, QuxInfo]] no lo es.Una lista de proveedores no anidada se convertirá automáticamente en una lista que contenga una lista de proveedores. Es decir, Para que algunos objetivos de reglas (p.ej., |
required_aspect_providers
|
sequence;
el valor predeterminado es [] Este atributo permite que este aspecto inspeccione otros aspectos. El valor debe ser una lista que contenga proveedores individuales o listas de proveedores, pero no ambos. Por ejemplo, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] es un valor válido, mientras que [FooInfo, BarInfo, [BazInfo, QuxInfo]] no lo es.Una lista de proveedores no anidada se convertirá automáticamente en una lista que contenga una lista de proveedores. Es decir, Para que otro aspecto (p.ej., |
provides
|
sequence;
el valor predeterminado es [] Una lista de proveedores que debe mostrar la función de implementación. Es un error si la función de implementación omite cualquiera de los tipos de proveedores que se enumeran aquí de su valor que se muestra. Sin embargo, la función de implementación puede mostrar proveedores adicionales que no se mencionan aquí. Cada elemento de la lista es un objeto |
requires
|
secuencia de Aspectos
el valor predeterminado es [] Lista de aspectos que se deben propagar antes de este aspecto. |
fragments
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de fragmentos de configuración que el aspecto requiere en la configuración de destino. |
host_fragments
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de fragmentos de configuración que el aspecto requiere en la configuración del host. |
toolchains
|
sequence;
el valor predeterminado es [] Si se establece, el conjunto de cadenas de herramientas que requiere este aspecto. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. Las cadenas de herramientas se encontrarán revisando la plataforma actual y se proporcionarán a la implementación de aspectos a través de ctx.toolchain .
|
incompatible_use_toolchain_transition
|
bool;
el valor predeterminado es False Este servicio es obsoleto, ya no está en uso y debería quitarse. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción del aspecto que se puede extraer con herramientas de generación de documentación. |
apply_to_generating_rules
|
bool;
el valor predeterminado es False Si es verdadero, el aspecto, cuando se aplique a un archivo de salida, se aplicará a la regla de generación del archivo de salida. Por ejemplo, supongamos que un aspecto se propaga transitivamente a través del atributo "deps" y se aplica al destino "alpha". Supongamos que `alpha` tiene `deps = [':beta_output']`, en el que `beta_output` es un resultado declarado de un objetivo `beta`. Supongamos que `beta` tiene un `charlie` de destino como uno de sus `deps`. Si "apply_to_generating_rules=True" para el aspecto, este se propagará a través de "alpha", "beta" y "charlie". Si es falso, el aspecto se propagará solo a "alfa". Falso de forma predeterminada. |
exec_compatible_with
|
secuencia de strings;
el valor predeterminado es [] Es una lista de restricciones en la plataforma de ejecución que se aplican a todas las instancias de este aspecto. |
exec_groups
|
dict; o None ;
el valor predeterminado es None Dictado del nombre del grupo de ejecución (cadena) a exec_group . Si se establece, permite que los aspectos ejecuten acciones en varias plataformas de ejecución dentro de una sola instancia. Consulta la documentación de grupos de ejecución para obtener más información.
|
subrules
|
secuencia de subreglas;
el valor predeterminado es [] Experimental: Es la lista de subreglas que usa este aspecto. |
configuration_field
LateBoundDefault configuration_field(fragment, name)
Ejemplo de uso:
Cómo definir un atributo de regla:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
Acceso en la implementación de reglas:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
Parámetros
Parámetro | Descripción |
---|---|
fragment
|
string;
obligatorio Es el nombre de un fragmento de configuración que contiene el valor de límite tardío. |
name
|
string;
obligatorio Es el nombre del valor que se obtendrá del fragmento de configuración. |
depset
depset depset(direct=None, order="default", *, transitive=None)
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. Usar 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 "default"
es compatible con cualquier otro pedido, y todos los demás pedidos 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 depósito. |
order
|
cadena;
el valor predeterminado es "default" Es la estrategia de recorrido para el nuevo conjunto de dependencias. Consulta aquí los valores posibles. |
transitive
|
secuencia de depsets; o None ;
el valor predeterminado es None Es una lista de los depsets cuyos elementos se convertirán en elementos indirectos del depset. |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])
Parámetros
Parámetro | Descripción |
---|---|
toolchains
|
sequence;
el valor predeterminado es [] Es el conjunto de cadenas de herramientas que requiere este grupo de ejecución. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. |
exec_compatible_with
|
secuencia de strings;
el valor predeterminado es [] Una lista de restricciones en la plataforma de ejecución. |
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition()
que se usa para definir la transición de ejecución. Consulta su documentación (o su implementación) para conocer las prácticas recomendadas. Solo se puede usar desde los componentes integrados de Bazel.
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
que se puede llamar;
obligatorio |
inputs
|
secuencia de strings;
obligatorio |
outputs
|
secuencia de strings;
obligatorio |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)
use_extension
.
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
que se puede llamar;
obligatorio Es la función que implementa la extensión de este módulo. Debe tomar un solo parámetro, module_ctx . Se llama a la función una vez al comienzo de una compilación para determinar el conjunto de repositorios disponibles.
|
tag_classes
|
dict;
El valor predeterminado es {} . Es un diccionario para declarar todas las clases de etiquetas que usa la extensión. Se asigna del nombre de la clase de etiqueta a un objeto tag_class .
|
doc
|
string; o None ;
el valor predeterminado es None Una descripción de la extensión del módulo que se puede extraer con herramientas de generación de documentación. |
environ
|
secuencia de strings;
el valor predeterminado es [] Proporciona una lista de las variables de entorno de las que depende esta extensión de módulo. Si cambia una variable de entorno de esa lista, se volverá a evaluar la extensión. |
os_dependent
|
bool;
el valor predeterminado es False Indica si esta extensión depende del SO o no |
arch_dependent
|
bool;
el valor predeterminado es False Indica si esta extensión depende o no de la arquitectura |
proveedor
unknown provider(doc=None, *, fields=None, init=None)
MyInfo = provider() ... def _my_library_impl(ctx): ... my_info = MyInfo(x = 2, y = 3) # my_info.x == 2 # my_info.y == 3 ...
Consulta Reglas (proveedores) para obtener una guía completa sobre cómo usar los proveedores.
Muestra un valor que se puede llamar de Provider
si no se especifica init
.
Si se especifica init
, muestra una tupla de 2 elementos: un valor que admite llamadas Provider
y un valor que admite llamadas de structor sin procesar. Para obtener más información, consulta Reglas (Inicialización personalizada de proveedores personalizados) y el debate sobre el parámetro init
a continuación.
Parámetros
Parámetro | Descripción |
---|---|
doc
|
string; o None ;
el valor predeterminado es None Una descripción del proveedor que se puede extraer con herramientas de generación de documentación. |
fields
|
secuencia de strings; o dict; o None ;
la configuración predeterminada es None Si se especifica, restringe el conjunto de campos permitidos. Los valores posibles son los siguientes:
|
init
|
que se puede llamar; o None ;
el valor predeterminado es None Una devolución de llamada opcional para el procesamiento previo y la validación de los valores de campo del proveedor durante la creación de la instancia. Si se especifica init , provider() muestra una tupla de 2 elementos: el símbolo de proveedor normal y un constructor sin procesar.A continuación, se incluye una descripción precisa. consulta Reglas (Inicialización personalizada de proveedores) para acceder a un análisis y casos de uso intuitivos. Deja que
init , una llamada al símbolo P actúa como una llamada a la función de constructor predeterminada c . en otras palabras, P(*args, **kwargs) muestra c(*args, **kwargs) . Por ejemplo:MyInfo = provider() m = MyInfo(foo = 1) m sea una instancia de MyInfo con m.foo == 1 .Sin embargo, cuando se especifique
Nota: Los pasos anteriores implican que se produce un error si De esta manera, la devolución de llamada Cuando se especifica MyInfo, _new_myinfo = provider(init = ...) |
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)
module extension
, o para que lo use use_repo_rule
.
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
que se puede llamar;
obligatorio la función que implementa esta regla. Debe tener un solo parámetro, repository_ctx . Se llama a la función durante la fase de carga para cada instancia de la regla.
|
attrs
|
dict; o None ;
el valor predeterminado es None diccionario para declarar todos los atributos de la regla. Asigna de un nombre de atributo a un objeto de atributo (consulta el módulo attr). Los atributos que comienzan con _ son privados y se pueden usar para agregar una dependencia implícita de una etiqueta a un archivo (una regla de repositorio no puede depender de un artefacto generado). El atributo name se agrega de forma implícita y no debe especificarse.
|
local
|
bool;
el valor predeterminado es False Indica que esta regla recupera todo del sistema local y que debe volver a evaluarse en cada recuperación. |
environ
|
secuencia de strings;
el valor predeterminado es [] Obsoleto. Este parámetro ya no está disponible. En su lugar, migra a repository_ctx.getenv .Proporciona una lista de variables de entorno de las que depende esta regla de repositorio. Si cambia una variable de entorno de esa lista, se volverá a recuperar el repositorio. |
configure
|
bool;
el valor predeterminado es False Indicar que el repositorio inspecciona el sistema para fines de configuración |
remotable
|
bool;
el valor predeterminado es False Experimental Este parámetro es experimental y puede cambiar en cualquier momento. No dependa de él. Esta opción se puede habilitar de forma experimental estableciendo --experimental_repo_remote_exec Compatible con la ejecución remota. |
doc
|
cadena o None ;
el valor predeterminado es None Es una descripción de la regla del repositorio que pueden extraer las herramientas de generación de documentación. |
regla
callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])
Las reglas deben asignarse a variables globales en un archivo .bzl. el nombre de la variable global es el nombre de la regla.
Las reglas de prueba deben tener un nombre que termine en _test
, mientras que las demás reglas no deben tener este sufijo. (Esta restricción se aplica únicamente a las reglas, no a sus objetivos).
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
function;
obligatorio La función Starlark que implementa esta regla debe tener exactamente un parámetro: ctx. Se llama a la función durante la fase de análisis para cada instancia de la regla. Puede acceder a los atributos que proporcionó el usuario. Debe crear acciones para generar todos los resultados declarados. |
test
|
bool;
el valor predeterminado es unbound Indica si esta es una regla de prueba, es decir, si puede estar sujeta a un comando blaze test . Todas las reglas de prueba se consideran automáticamente executable. No es necesario (y se recomienda) configurar de manera explícita executable = True para una regla de prueba. El valor predeterminado es False . Consulta la página Reglas para obtener más información.
|
attrs
|
dict;
el valor predeterminado es {} diccionario para declarar todos los atributos de la regla. Asigna de un nombre de atributo a un objeto de atributo (consulta el módulo attr). Los atributos que comienzan con _ son privados y se pueden usar para agregar una dependencia implícita en una etiqueta. El atributo name se agrega de forma implícita y no debe especificarse. Los atributos visibility , deprecation , tags , testonly y features se agregan de forma implícita y no se pueden anular. La mayoría de las reglas solo necesitan unos pocos atributos. Para limitar el uso de memoria, hay un límite en la cantidad de atributos que se pueden declarar.
|
outputs
|
dict; o None ; o función;
el valor predeterminado es None Obsoleto. Este parámetro dejó de estar disponible y se quitará pronto. No dependa de él. Está inhabilitado con --incompatible_no_rule_outputs_param . Usa esta marca para verificar que tu código sea compatible con su eliminación inminente. Este parámetro ya no está disponible. Migra las reglas para que usen OutputGroupInfo o attr.output en su lugar. Un esquema para definir resultados declarados con anterioridad. A diferencia de los atributos El valor de este argumento es un diccionario o una función de devolución de llamada que produce un diccionario. La devolución de llamada funciona de manera similar a los atributos de dependencia calculados: los nombres de los parámetros de la función se comparan con los atributos de la regla, por lo que, por ejemplo, si pasas Cada entrada en el diccionario crea un resultado declarado previamente, en el que la clave es un identificador y el valor es una plantilla de cadenas que determina la etiqueta del resultado. En la función de implementación de la regla, el identificador se convierte en el nombre del campo que se usa para acceder al
En la práctica, el marcador de posición de sustitución más común es |
executable
|
bool;
el valor predeterminado es unbound Si esta regla se considera ejecutable, es decir, si puede estar sujeta a un comando blaze run . El valor predeterminado es False . Consulta la página Reglas para obtener más información.
|
output_to_genfiles
|
bool;
el valor predeterminado es False Si es verdadero, los archivos se generarán en el directorio genfiles en lugar del directorio bin. A menos que la necesites para mantener la compatibilidad con reglas existentes (p.ej., cuando se generan archivos de encabezado para C++), no establezcas esta marca. |
fragments
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de fragmentos de configuración que requiere la regla en la configuración de destino. |
host_fragments
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de fragmentos de configuración que requiere la regla en la configuración del host. |
_skylark_testable
|
bool;
el valor predeterminado es False (Experimental) Si es verdadera, esta regla expondrá sus acciones para que las inspeccionen las reglas que dependen de ella a través de un proveedor de Actions . El proveedor también está disponible para la regla en sí. Para ello, llama a ctx.created_actions().Esto solo debe usarse para probar el comportamiento en el tiempo de análisis de las reglas de Starlark. Es posible que esta marca se quite en el futuro. |
toolchains
|
sequence;
el valor predeterminado es [] Si se establece, el conjunto de cadenas de herramientas que requiere esta regla. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. Las cadenas de herramientas se encontrarán revisando la plataforma actual y se proporcionarán a la implementación de reglas a través de ctx.toolchain .
|
incompatible_use_toolchain_transition
|
bool;
el valor predeterminado es False Este servicio es obsoleto, ya no está en uso y debería quitarse. |
doc
|
string; o None ;
el valor predeterminado es None Una descripción de la regla que se puede extraer con herramientas de generación de documentación. |
provides
|
sequence:
El valor predeterminado es [] . Es una lista de proveedores que debe mostrar la función de implementación. Es un error si la función de implementación omite cualquiera de los tipos de proveedores que se enumeran aquí de su valor que se muestra. Sin embargo, la función de implementación puede mostrar proveedores adicionales que no se mencionan aquí. Cada elemento de la lista es un objeto |
exec_compatible_with
|
secuencia de strings;
el valor predeterminado es [] Una lista de restricciones en la plataforma de ejecución que se aplican a todos los destinos de este tipo de regla. |
analysis_test
|
bool;
el valor predeterminado es False Si es verdadera, esta regla se trata como una prueba de análisis. Nota: Las reglas de prueba de análisis se definen principalmente con la infraestructura proporcionada en las bibliotecas principales de Starlark. Consulta Pruebas para obtener orientación. Si una regla se define como una regla de prueba de análisis, se le permite usar transiciones de configuración definidas mediante analysis_test_transition en sus atributos, pero habilita algunas restricciones:
|
build_setting
|
BuildSetting o None ;
el valor predeterminado es None Si se establece, describe qué tipo de build setting es esta regla. Consulta el módulo config . Si se configura, incluirá un atributo obligatorio llamado "build_setting_default" se agrega automáticamente a esta regla, con un tipo correspondiente al valor que se pasa aquí.
|
cfg
|
el valor predeterminado es None Si se establece, apunta a la transición de configuración que la regla aplicará a su propia configuración antes del análisis. |
exec_groups
|
dict; o None ;
el valor predeterminado es None Dictado del nombre del grupo de ejecución (cadena) a exec_group . Si se establece, permite que las reglas ejecuten acciones en varias plataformas de ejecución dentro de un solo objetivo. Consulta la documentación de grupos de ejecución para obtener más información.
|
initializer
|
el valor predeterminado es None Experimental: La función Stalark inicializa los atributos de la regla. Se llama a la función en el momento de carga para cada instancia de la regla. Se llama con Debe mostrar un diccionario de los nombres de atributos a los valores deseados. Los atributos que no se muestran no se ven afectados. Si se muestra Los inicializadores se evalúan antes que los valores predeterminados especificados en una definición de atributo. En consecuencia, si un parámetro en la firma del inicializador contiene valores predeterminados, este reemplaza el valor predeterminado de la definición del atributo (excepto si muestra Del mismo modo, si un parámetro en la firma del inicializador no tiene un valor predeterminado, será obligatorio. En esos casos, se recomienda omitir la configuración predeterminada o obligatoria en la definición de un atributo. Se recomienda usar En el caso de las reglas extendidas, se llama a todos los inicializadores como proceso de elemento secundario a principal. A cada inicializador se le pasan solo los atributos públicos que conoce. |
parent
|
el valor predeterminado es None Experimental: La regla de Stalark que se extiende. Cuando se configuran, los atributos públicos se combinan con los proveedores anunciados. La regla coincide con executable y test del elemento superior. Se combinan los valores de fragments , toolchains , exec_compatible_with y exec_groups . Es posible que no se establezcan los parámetros obsoletos o heredados. La transición de configuración entrante cfg del elemento superior se aplica después de la configuración entrante de esta regla.
|
extendable
|
bool; o Etiqueta; o string; o None ;
la configuración predeterminada es None Experimental: Es una etiqueta de una lista de entidades permitidas que define qué reglas pueden extender esta regla. También se puede configurar como verdadera o falsa para permitir o rechazar siempre la extensión. Bazel tiene la opción predeterminada para permitir extensiones siempre. |
subrules
|
secuencia de subreglas;
el valor predeterminado es [] Experimental: Es la lista de subreglas que usa esta regla. |
seleccionar
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
|
dict;
obligatorio Un dict que asigna condiciones de configuración a 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
|
string;
el valor predeterminado es '' Es el error personalizado opcional para informar si ninguna condición coincide. |
subregla
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
Parámetros
Parámetro | Descripción |
---|---|
implementation
|
function;
obligatorio La función Starlark que implementa esta subregla |
attrs
|
dict;
el valor predeterminado es {} Es un diccionario para declarar todos los atributos (privados) de la subregla. Las subreglas solo pueden tener atributos privados de tipo etiqueta (es decir, etiqueta o lista de etiquetas). Bazel pasa automáticamente los valores resueltos correspondientes a estas etiquetas a la función de implementación de la subregla como argumentos con nombre (por lo tanto, la función de implementación debe aceptar parámetros con nombre que coincidan con los nombres de los atributos). Los tipos de estos valores serán los siguientes:
|
toolchains
|
sequence;
el valor predeterminado es [] Si se establece, el conjunto de cadenas de herramientas que requiere esta subregla. La lista puede contener objetos String, Label o StarlarkToolchainTypeApi, en cualquier combinación. Para encontrar las cadenas de herramientas, verifica la plataforma actual y se proporciona a la implementación de la subregla a través de ctx.toolchains .
|
fragments
|
secuencia de strings;
el valor predeterminado es [] Lista de nombres de fragmentos de configuración que requiere la subregla en la configuración de destino. |
subrules
|
secuencia de subreglas;
el valor predeterminado es [] Lista de otras subreglas necesarias para esta subregla. |
tag_class
tag_class tag_class(attrs={}, *, doc=None)
Parámetros
Parámetro | Descripción |
---|---|
attrs
|
dict;
el valor predeterminado es {} Es un diccionario para declarar todos los atributos de esta clase de etiqueta. Asigna de un nombre de atributo a un objeto de atributo (consulta el módulo attr). |
doc
|
string; o None ;
el valor predeterminado es None Es una descripción de la clase de etiqueta que se puede extraer con herramientas de generación de documentación. |
visibilidad
None
visibility(value)
Establece la visibilidad de la carga del módulo .bzl que se está inicializando en ese momento.
La visibilidad de la carga de un módulo determina si otros archivos de COMPILACIÓN y .bzl pueden cargarlo. (Esto es distinto de la visibilidad objetivo del archivo fuente .bzl subyacente, que determina si el archivo puede aparecer como una dependencia de otros destinos). La visibilidad de carga funciona a nivel de paquetes: para cargar un módulo, el archivo que realiza la carga debe estar en un paquete al que se le haya otorgado visibilidad para el módulo. Un módulo siempre se puede cargar dentro de su propio paquete, independientemente de su visibilidad.
Solo se puede llamar a visibility()
una vez por archivo .bzl y solo en el nivel superior, no dentro de una función. El estilo preferido es colocar esta llamada inmediatamente debajo de las sentencias load()
y cualquier lógica breve necesaria para determinar el argumento.
Si la marca --check_bzl_visibility
se establece como falsa, las infracciones de visibilidad de carga emitirán advertencias, pero no fallará la compilación.
Parámetros
Parámetro | Descripción |
---|---|
value
|
obligatorio Una lista de cadenas de especificación del paquete o una sola cadena de especificación del paquete. Las especificaciones del paquete siguen el mismo formato que para
No se permite la sintaxis "@". Todas las especificaciones se interpretan en relación con el repositorio del módulo actual. Si Ten en cuenta que las marcas |