UID

Es un objeto de contexto que se pasa a la función de implementación de una regla o un aspecto. Proporciona acceso a la información y los métodos necesarios para analizar el objetivo actual.

En particular, permite que la función de implementación acceda a la etiqueta, los atributos, la configuración y los proveedores de sus dependencias del destino actual. Tiene métodos para declarar archivos de salida y las acciones que los producen.

Los objetos de contexto existen durante la llamada a la función de implementación. No es útil acceder a estos objetos fuera de su función asociada. Consulta la página de reglas para obtener más información.

Miembros

acciones

actions ctx.actions

Contiene métodos para declarar archivos de salida y las acciones que los producen.

aspect_ids

list ctx.aspect_ids

Es una lista de IDs de todos los aspectos aplicados al objetivo. Solo está disponible en las funciones de implementación de aspectos.

attr

struct ctx.attr

Es una estructura para acceder a los valores de los atributos. El usuario proporciona los valores (si no lo hace, se usa un valor predeterminado). Los atributos de la estructura y los tipos de sus valores corresponden a las claves y los valores del diccionario attrs proporcionado a la función rule. Consulta un ejemplo de uso.

bin_dir

root ctx.bin_dir

Es la raíz correspondiente al directorio bin.

build_file_path

string ctx.build_file_path

Obsoleto: Usa ctx.label.package + '/BUILD'. Es la ruta de acceso al archivo BUILD de esta regla, relativa a la raíz de la fuente.

build_setting_value

unknown ctx.build_setting_value

Es el valor del parámetro de configuración de compilación representado por el destino actual. Si este no es el contexto para una instancia de una regla que establece el atributo build_setting, leer esto es un error.

configuración

configuration ctx.configuration

Es la configuración de compilación del destino actual. Consulta el tipo de configuración de Starlark y la documentación de configuración para obtener más detalles.

coverage_instrumented

bool ctx.coverage_instrumented(target=None)

Devuelve si se debe generar la instrumentación de la cobertura del código cuando se realizan acciones de compilación para esta regla o, si se proporciona target, la regla especificada por ese destino. (Si se proporciona un destino que no es una regla o una regla de Starlark, se devuelve False). Verifica si las fuentes de la regla actual (si no se proporciona ningún destino) o las fuentes del destino se deben instrumentar según los parámetros de configuración --instrumentation_filter y --instrument_test_targets. Esto difiere de coverage_enabled en la configuración, que indica si la recopilación de datos de cobertura está habilitada para toda la ejecución, pero no si se debe instrumentar un destino específico.

Parámetros

Parámetro Descripción
target Objetivo o None; el valor predeterminado es None
Es un objetivo que especifica una regla. Si no se proporciona, se usará la regla actual de forma predeterminada.

created_actions

StarlarkValue ctx.created_actions()

Para las reglas con _skylark_testable establecido en True, se devuelve un proveedor Actions que representa todas las acciones creadas hasta el momento para la regla actual. Para todas las demás reglas, devuelve None. Ten en cuenta que el proveedor no se actualiza cuando se crean acciones posteriores, por lo que deberás volver a llamar a esta función si deseas inspeccionarlas.

Esto tiene como objetivo ayudar a escribir pruebas para las funciones auxiliares de implementación de reglas, que pueden tomar un objeto ctx y crear acciones en él.

disabled_features

list ctx.disabled_features

Es el conjunto de funciones que el usuario inhabilita explícitamente para esta regla.

exec_groups

ExecGroupCollection ctx.exec_groups

Es una colección de los grupos de ejecución disponibles para esta regla, indexados por su nombre. Accede con ctx.exec_groups[name_of_group].

ejecutable

struct ctx.executable

Un struct que contiene archivos ejecutables definidos en atributos de tipo de etiqueta marcados como executable=True. Los campos de la struct corresponden a los nombres de los atributos. Cada valor de la estructura es File o None. Si no se especifica un atributo opcional en la regla, el valor de la estructura correspondiente es None. Si un tipo de etiqueta no está marcado como executable=True, no se genera ningún campo de struct correspondiente. Consulta un ejemplo de uso.

expand_location

string ctx.expand_location(input, targets=[])

Expande todas las plantillas $(location ...) en la cadena determinada reemplazando $(location //x) por la ruta de acceso del archivo de salida del destino //x. La expansión solo funciona para las etiquetas que apuntan a dependencias directas de esta regla o que se enumeran de forma explícita en el argumento opcional targets.

$(location ...) causará un error si el destino al que se hace referencia tiene varias salidas. En este caso, usa $(locations ...), ya que produce una lista de rutas de acceso de salida separadas por espacios. También se puede usar de forma segura para un solo archivo de salida.

Esta función es útil para permitir que el usuario especifique un comando en un archivo BUILD (como para genrule). En otros casos, suele ser mejor manipular las etiquetas directamente.

Parámetros

Parámetro Descripción
input string; required
Es la cadena que se expandirá.
targets sequence de Targets; el valor predeterminado es []
Lista de destinos para obtener información de búsqueda adicional. Estos se expanden de la siguiente manera: Un destino con un solo archivo en DefaultInfo.files se expande a ese archivo. Otros destinos se expanden a su archivo DefaultInfo.executable si se configura y si --incompatible_locations_prefers_executable está habilitado; de lo contrario, se expanden a DefaultInfo.files.
Puede devolver None.

expand_make_variables

string ctx.expand_make_variables(attribute_name, command, additional_substitutions)

Obsoleto. En su lugar, usa ctx.var para acceder a las variables.
Devuelve una cadena después de expandir todas las referencias a "Crear variables". Las variables deben tener el siguiente formato: $(VAR_NAME). Además, $$VAR_NAME expands to $VAR_NAME. Examples:
ctx.expand_make_variables("cmd", "$(MY_VAR)", {"MY_VAR": "Hi"})  # == "Hi"
ctx.expand_make_variables("cmd", "$$PWD", {})  # == "$PWD"
Additional variables may come from other places, such as configurations. Note that this function is experimental.
                  
      

Parameters

Parameter Description
attribute_name string; required
The attribute name. Used for error reporting.
command string; required
The expression to expand. It can contain references to "Make variables".
additional_substitutions dict; required
Additional substitutions to make beyond the default make variables.

features

list ctx.features

The set of features that are explicitly enabled by the user for this rule. See example of use.

file

struct ctx.file

A struct containing files defined in label type attributes marked as allow_single_file. The struct fields correspond to the attribute names. The struct value is always a File or None. If an optional attribute is not specified in the rule then the corresponding struct value is None. If a label type is not marked as allow_single_file, no corresponding struct field is generated. It is a shortcut for:
list(ctx.attr.<ATTR>.files)[0]
In other words, use file to access the (singular) default output of a dependency. See example of use.

files

struct ctx.files

A struct containing files defined in label or label list type attributes. The struct fields correspond to the attribute names. The struct values are list of Files. It is a shortcut for:
[f for t in ctx.attr.<ATTR> for f in t.files]
In other words, use files to access the default outputs of a dependency. See example of use.

fragments

fragments ctx.fragments

Allows access to configuration fragments in target configuration.

genfiles_dir

root ctx.genfiles_dir

The root corresponding to genfiles directory.

info_file

File ctx.info_file

The file that is used to hold the non-volatile workspace status for the current build request. See documentation for --workspace_status_command for more information.

label

Label ctx.label

The label of the target currently being analyzed.

outputs

structure ctx.outputs

A pseudo-struct containing all the predeclared output files, represented by File objects. See the Rules page for more information and examples.

This field does not exist on aspect contexts, since aspects do not have predeclared outputs.

The fields of this object are defined as follows. It is an error if two outputs produce the same field name or have the same label.

  • If the rule declares an outputs dict, then for every entry in the dict, there is a field whose name is the key and whose value is the corresponding File.
  • For every attribute of type attr.output that the rule declares, there is a field whose name is the attribute's name. If the target specified a label for that attribute, then the field value is the corresponding File; otherwise the field value is None.
  • For every attribute of type attr.output_list that the rule declares, there is a field whose name is the attribute's name. The field value is a list of File objects corresponding to the labels given for that attribute in the target, or an empty list if the attribute was not specified in the target.
  • (Deprecated) If the rule is marked executable or test, there is a field named "executable", which is the default executable. It is recommended that instead of using this, you pass another file (either predeclared or not) to the executable arg of DefaultInfo.

package_relative_label

Label ctx.package_relative_label(input)

Converts the input string into a Label object, in the context of the package of the target currently being analyzed. If the input is already a Label, it is returned unchanged.

The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of the rule and accessing the corresponding Label() es que Label() usa el contexto del paquete del archivo .bzl que lo llamó, no el paquete del destino que se está analizando. Esta función tiene el mismo comportamiento que native.package_relative_label(), que no se puede usar en una regla ni en una función de implementación de aspectos.

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.

resolve_command

tuple ctx.resolve_command(*, command='', attribute=None, expand_locations=False, make_variables=None, tools=[], label_dict={}, execution_requirements={})

(Experimental) Devuelve una tupla (inputs, command, empty list) de la lista de entradas resueltas y la lista de argv para el comando resuelto, ambas adecuadas para pasarse como los argumentos con el mismo nombre del método ctx.action.
Nota para los usuarios de Windows: Este método requiere Bash (MSYS2). Considera usar resolve_tools() en su lugar (si se ajusta a tus necesidades). La lista vacía se devuelve como el tercer miembro de la tupla para garantizar la retrocompatibilidad.

Parámetros

Parámetro Descripción
command string; El valor predeterminado es ''
Comando para resolver.
attribute cadena o None; El valor predeterminado es None
Nombre del atributo asociado para el que se emitirá un error o None.
expand_locations bool; el valor predeterminado es False
¿Expandiremos las variables $(location)? Consulta ctx.expand_location() para obtener más detalles.
make_variables dict o None; el valor predeterminado es None
Crea variables para expandir o None.
tools sequence de Targets; el valor predeterminado es []
Lista de herramientas (lista de destinos).
label_dict dict; El valor predeterminado es {}
Diccionario de etiquetas resueltas y la lista correspondiente de archivos (un diccionario de Label : lista de archivos).
execution_requirements dict; el valor predeterminado es {}
Es la información para programar la acción que resolverá este comando. Consulta etiquetas para obtener claves útiles.

resolve_tools

tuple ctx.resolve_tools(*, tools=[])

Devuelve una tupla (inputs, empty list) del depset de entradas resueltas necesarias para ejecutar las herramientas, apta para pasar como el argumento con el mismo nombre de los métodos ctx.actions.run y ctx.actions.run_shell.

A diferencia de ctx.resolve_command, este método no requiere que se instale Bash en la máquina, por lo que es adecuado para reglas compiladas en Windows. La lista vacía se devuelve como parte de la tupla para garantizar la retrocompatibilidad.

Parámetros

Parámetro Descripción
tools sequence de Targets; el valor predeterminado es []
Lista de herramientas (lista de destinos).

regla

rule_attributes ctx.rule

Es el descriptor de los atributos de la regla a la que se aplica el aspecto. Solo está disponible en las funciones de implementación de aspectos.

runfiles

runfiles ctx.runfiles(files=[], transitive_files=None, collect_data=False, collect_default=False, symlinks={}, root_symlinks={})

Crea un objeto de archivos de ejecución.

Parámetros

Parámetro Descripción
files sequence de Files; el valor predeterminado es []
Es la lista de archivos que se agregarán a los archivos de ejecución.
transitive_files depset de Files o None; El valor predeterminado es None
Es el conjunto (transitivo) de archivos que se agregarán a los runfiles. El depset debe usar el orden default (que, como su nombre lo indica, es el predeterminado).
collect_data bool; el valor predeterminado es False
No se recomienda usar este parámetro. Consulta la guía de runfiles.

Indica si se deben recopilar los archivos ejecutables de datos de las dependencias en los atributos srcs, data y deps.

collect_default bool; el valor predeterminado es False
No se recomienda usar este parámetro. Consulta la guía de runfiles.

Indica si se deben recopilar los archivos ejecutables predeterminados de las dependencias en los atributos srcs, data y deps.

dict o depset de SymlinkEntrys; el valor predeterminado es {}
Ya sea un depset de SymlinkEntry o el mapa de symlinks que se agregará a los runfiles. Los vínculos simbólicos siempre se agregan en el directorio de archivos ejecutables del espacio de trabajo principal (p.ej., <runfiles_root>/_main/<symlink_path>, no el directorio correspondiente al repositorio del destino actual). Consulta Vínculos simbólicos de runfiles en la guía de reglas.
dict o depset de SymlinkEntrys; el valor predeterminado es {}
Ya sea un depset de SymlinkEntry o un mapa de symlinks que se agregarán a los runfiles. Consulta Vínculos simbólicos de runfiles en la guía de reglas.

split_attr

struct ctx.split_attr

Es una estructura para acceder a los valores de los atributos con configuraciones divididas. Si el atributo es una lista de etiquetas, el valor de split_attr es un diccionario de las claves de la división (como cadenas) en listas de ConfiguredTargets en esa rama de la división. Si el atributo es una etiqueta, el valor de split_attr es un diccionario de las claves de la división (como cadenas) para ConfiguredTargets individuales. Los atributos con configuraciones divididas seguirán apareciendo en la estructura attr, pero sus valores serán listas únicas con todas las ramas de la división combinadas.

super

unknown ctx.super()

Experimental: Llama a la función de implementación del elemento superior y devuelve sus proveedores

target_platform_has_constraint

bool ctx.target_platform_has_constraint(constraintValue)

Devuelve verdadero si el valor de restricción determinado forma parte de la plataforma de destino actual.

Parámetros

Parámetro Descripción
constraintValue ConstraintValueInfo; obligatorio
Es el valor de restricción con el que se verificará la plataforma de destino.

de seguridad

ToolchainContext ctx.toolchains

Son las cadenas de herramientas para el grupo de ejecución predeterminado de esta regla.

var

dict ctx.var

Diccionario (cadena a cadena) de variables de configuración.

version_file

File ctx.version_file

Es el archivo que se usa para mantener el estado volátil del espacio de trabajo para la solicitud de compilación actual. Consulta la documentación de --workspace_status_command para obtener más información.

workspace_name

string ctx.workspace_name

Es el nombre del espacio de trabajo, que es, en efecto, el nombre de la raíz de ejecución y el prefijo de los runfiles para el repo principal. Si --enable_bzlmod está activado, esta es la cadena fija _main. De lo contrario, este es el nombre del espacio de trabajo tal como se define en el archivo WORKSPACE.