ctx.actions
.
Miembros
- args
- declarar_directorio
- declarar_archivo
- declarar_symlink
- nada
- expand_template
- correr
- ejecución_ejecutiva
- symlink
- plantilla_dict
- escribir
args
Args actions.args()Muestra un objeto Args que se puede usar para crear líneas de comandos de memoria eficiente.
declarar_directorio
File actions.declare_directory(filename, *, sibling=None)Declara que la regla o el aspecto crean un directorio con el nombre determinado en el paquete actual. Debes crear una acción que genere el directorio. No se puede acceder directamente al contenido del directorio desde Starlark, pero se puede expandir en un comando de acción con
Args.add_all()
. Solo los archivos y directorios normales pueden estar en el contenido expandido de un declarar_directory.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio Si no se proporciona ningún "elemento del mismo nivel", es la ruta del directorio nuevo en relación con el paquete actual. De lo contrario, el nombre base de un archivo ("sibling" define un directorio). |
sibling
|
File; or None ; default = NoneUn archivo que se encuentra en el mismo directorio que el directorio recién declarado. El archivo debe estar en el paquete actual. |
declarar_archivo
File actions.declare_file(filename, *, sibling=None)Declara que la regla o el aspecto crean un archivo con el nombre de archivo especificado. Si no se especifica
sibling
, el nombre del archivo es relativo al directorio del paquete; de lo contrario, el archivo se encuentra en el mismo directorio que sibling
. No se pueden crear archivos fuera del paquete actual.Recuerda que, además de declarar un archivo, debes crear por separado una acción que emita ese archivo. Para crear esa acción, se deberá pasar el objeto File
que se muestra a la función de construcción de la acción.
Ten en cuenta que no es necesario (y no se puede) declarar los archivos de salida previamente declarados con esta función. En su lugar, puedes obtener sus objetos File
de ctx.outputs
. Ver ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio Si no se proporciona ningún "elemento del mismo nivel", es la ruta del archivo nuevo en relación con el paquete actual. De lo contrario, el nombre base de un archivo (“sibling” determina un directorio). |
sibling
|
File; or None ;
default = NoneUn archivo que se encuentra en el mismo directorio que el archivo recién creado. El archivo debe estar en el paquete actual. |
declarar_symlink
File actions.declare_symlink(filename, *, sibling=None)
Este parámetro es experimental y puede cambiar en cualquier momento. Es posible que se inhabilite mediante la configuración de --noexperimental_allow_unresolved_symlinks
Declara que la regla o el aspecto crean un symlink con el nombre determinado en el paquete actual. Debes crear una acción que genere este symlink. Bazel nunca hará una referencia a este symlink y lo transferirá de forma literal a zonas de pruebas o ejecutores remotos. Por el momento, no se admiten symlinks dentro de artefactos de árbol.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio: Si no se proporciona ningún "elemento del mismo nivel", es la ruta del nuevo symlink en relación con el paquete actual. De lo contrario, el nombre base de un archivo ("sibling" define un directorio). |
sibling
|
File; or None ; default = NoneUn archivo que se encuentra en el mismo directorio que el symlink recién declarado. |
no_nada
None actions.do_nothing(mnemonic, inputs=[])Crea una acción vacía que no ejecuta un comando ni produce ningún resultado, pero que es útil para insertar “acciones adicionales”.
Parámetros
Parámetro | Descripción |
---|---|
mnemonic
|
obligatorio Es una descripción de una acción de una palabra, como CppCompile o GoLink. |
inputs
|
sequence of Files; or depset ; default = []Lista de los archivos de entrada de la acción. |
expandir_plantilla
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)Crea una acción de expansión de plantilla. Cuando se ejecute la acción, se generará un archivo basado en una plantilla. Algunas partes de la plantilla se reemplazarán por el diccionario
substitutions
, en el orden en que se especifican las sustituciones. Cuando aparece una clave del diccionario en la plantilla (o el resultado de una sustitución anterior), se la reemplaza por el valor asociado. No hay sintaxis especial para las claves. Por ejemplo, puedes usar llaves para evitar conflictos. Por ejemplo, {KEY}
. Consulta un ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
template
|
obligatorio El archivo de plantilla, que es un archivo de texto con codificación UTF-8. |
output
|
obligatorio Es el archivo de salida, que es un archivo de texto con codificación UTF-8. |
substitutions
|
default = {} Sustituciones para hacer cuando se expande la plantilla. |
is_executable
|
default = False Indica si el archivo de salida debe ser ejecutable. |
computed_substitutions
|
TemplateDict ;
default = unboundExperimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de esto. Se puede habilitar de forma experimental estableciendo --+experimental_lazy_template_expansion Experimental: Sustituciones para hacer cuando se expande la plantilla. |
run
None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)Crea una acción que ejecuta un ejecutable. Ver ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
outputs
|
sequence of Files ;
obligatorioLista de los archivos de salida de la acción. |
inputs
|
sequence of Files; or depset ; default = []Lista o salida de los archivos de entrada de la acción. |
unused_inputs_list
|
File; or None ; default = NoneArchivo que contiene una lista de entradas que usa la acción. El contenido de este archivo (por lo general, es uno de los resultados de la acción) corresponde a la lista de archivos de entrada que no se usaron durante toda la ejecución de la acción. Ningún cambio en esos archivos debe afectar de ninguna manera los resultados de la acción. |
executable
|
File; or string; or FilesToRunProvider ;obligatorioEs el archivo ejecutable al que llamará la acción. |
tools
|
sequence; or depset ; default = unboundEnumera o anula la implementación de cualquier herramienta que necesite la acción. Las herramientas son entradas con runfiles adicionales que se ponen a disposición automáticamente para la acción. Cuando se proporciona una lista, puede ser una colección heterogénea de archivos, instancias de FilesToRunProvider o depsets de Files. A los archivos que están directamente en la lista y que provienen de ctx.executable se les agregarán automáticamente los archivos de ejecución. Cuando se proporciona un Depset, este solo debe contener Archivos. En ambos casos, no se hace una referencia cruzada de los archivos dentro de los conjuntos de datos con ctx.executable para runfiles. |
arguments
|
sequence ; default = []Argumentos de la línea de comandos de la acción. Debe ser una lista de strings, o bien objetos actions.args() .
|
mnemonic
|
string; or None ; default = NoneUna descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
progress_message
|
string; or None ;
default = NoneMensaje de progreso que se mostrará al usuario durante la compilación, por ejemplo, "Compilación de foo.cc para crear foo.o". El mensaje puede contener patrones %{label} , %{input} o %{output} , que se sustituyen por una string de etiqueta, la primera entrada o la ruta de acceso del resultado, respectivamente. Prefiere usar patrones en lugar de strings estáticas, ya que los primeros son más eficientes.
|
use_default_shell_env
|
default = False Indica si la acción debe usar o no el entorno de shell integrado. |
env
|
dict; or None ;
default = NoneEstablece el diccionario de variables de entorno. |
execution_requirements
|
dict; or None ; default = NoneInformación para programar la acción. Consulta las etiquetas para ver claves útiles. |
input_manifests
|
sequence; or None ; default = None(Experimental) establece los metadatos de los archivos runrun de entrada; por lo general, se generan mediante resolve_command. |
exec_group
|
string; or None ; default = NoneEjecuta la acción en la plataforma de ejecución del grupo de ejecución determinado. Si no hay ninguna, usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action ;
default = NoneEjecuta la acción con las entradas y el entorno de la acción bloqueada dadas que se agregaron a la lista de entrada y el entorno de la acción. El entorno de acción puede reemplazar cualquiera de las variables de entorno de la acción bloqueada. Si no hay ninguna, usa solo las entradas de la acción y el entorno determinado. |
resource_set
|
callable; or None ; default = NoneEs una función de devolución de llamada que muestra un diccionario de conjuntos de recursos, que se usa para estimar el uso de recursos en el momento de la ejecución si esta acción se ejecuta de forma local. La función acepta dos argumentos posicionales: una string que representa un nombre de SO (p.ej., "osx") y un número entero que representa la cantidad de entradas que se realizan en la acción. El diccionario que se muestra puede contener las siguientes entradas, cada una de las cuales puede ser un número de punto flotante o int:
Si este parámetro se establece en La devolución de llamada debe ser de nivel superior (no se permiten las funciones lambda ni anidadas). |
toolchain
|
Label; or string; or None ;
predeterminado = no delimitadoEs el tipo de cadena de herramientas que se puede utilizar en esta acción. Se debe establecer el parámetro para que la acción se ejecute en la plataforma de ejecución correcta. En este momento, es una no-op, pero recomendamos configurarla cuando se use una cadena de herramientas, ya que será obligatoria en las versiones futuras de Bazel. Tenga en cuenta que la regla que crea esta acción debe definir esta cadena de herramientas dentro de la función "rule()". Cuando se establezcan los parámetros “toolchain” y “exec_group”, se usará “exec_group”. Se genera un error en caso de que “exec_group” no especifique lo mismo. |
run_shell
None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)Crea una acción que ejecuta un comando shell. Ver ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
outputs
|
sequence of Files ;
obligatorioLista de los archivos de salida de la acción. |
inputs
|
sequence of Files; or depset ; default = []Lista o salida de los archivos de entrada de la acción. |
tools
|
sequence of Files; or depset ; default = unboundEnumera o anula la implementación de cualquier herramienta que necesite la acción. Las herramientas son entradas con runfiles adicionales que se ponen a disposición automáticamente para la acción. La lista puede contener instancias de Files o FilesToRunProvider. |
arguments
|
sequence ; default = []Argumentos de la línea de comandos de la acción. Debe ser una lista de strings, o bien objetos actions.args() .Bazel pasa los elementos de este atributo como argumentos al comando.El comando puede acceder a estos argumentos mediante sustituciones de variables de shell, como En el caso de que |
mnemonic
|
string; or None ; default = NoneUna descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
command
|
string; or sequence of strings ; obligatorioComando de shell para ejecutar. Puede ser una string (preferida) o una secuencia de strings (obsoleta). Si (Obsoleto) Si Bazel usa el mismo shell para ejecutar el comando y genrules. |
progress_message
|
string; or None ;
default = NoneMensaje de progreso que se mostrará al usuario durante la compilación, por ejemplo, "Compilación de foo.cc para crear foo.o". El mensaje puede contener patrones %{label} , %{input} o %{output} , que se sustituyen por una string de etiqueta, la primera entrada o la ruta de acceso del resultado, respectivamente. Prefiere usar patrones en lugar de strings estáticas, ya que los primeros son más eficientes.
|
use_default_shell_env
|
default = False Indica si la acción debe usar o no el entorno de shell integrado. |
env
|
dict; or None ;
default = NoneEstablece el diccionario de variables de entorno. |
execution_requirements
|
dict; or None ; default = NoneInformación para programar la acción. Consulta las etiquetas para ver claves útiles. |
input_manifests
|
sequence; or None ; default = None(Experimental) establece los metadatos de los archivos runrun de entrada; por lo general, se generan mediante resolve_command. |
exec_group
|
string; or None ; default = NoneEjecuta la acción en la plataforma de ejecución del grupo de ejecución determinado. Si no hay ninguna, usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action ;
default = NoneEjecuta la acción con las entradas detectadas de la acción bloqueada dadas agregadas a la lista de entradas de la acción. Si no hay ninguna, usa solo las entradas de la acción. |
resource_set
|
callable; or None ; default = NoneUna función de devolución de llamada para estimar el uso de recursos si se ejecuta de manera local. Consulta ctx.actions.run() .
|
toolchain
|
Label; or string; or None ;
predeterminado = no delimitadoEs el tipo de cadena de herramientas que se puede utilizar en esta acción. Se debe establecer el parámetro para que la acción se ejecute en la plataforma de ejecución correcta. En este momento, es una no-op, pero recomendamos configurarla cuando se use una cadena de herramientas, ya que será obligatoria en las versiones futuras de Bazel. Tenga en cuenta que la regla que crea esta acción debe definir esta cadena de herramientas dentro de la función "rule()". Cuando se establezcan los parámetros “toolchain” y “exec_group”, se usará “exec_group”. Se genera un error en caso de que “exec_group” no especifique lo mismo. |
symlink
None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)Crea una acción que escribe un symlink en el sistema de archivos.
Se debe llamar a esta función exactamente con uno de estos valores: target_file
o target_path
.
Cuando uses target_file
, declara output
con declare_file()
o declare_directory()
y coincide con el tipo de target_file
. Esto hace que el punto del symlink se dirija a target_file
. Bazel invalida el resultado de esta acción cada vez que cambia el destino del symlink o su contenido.
De lo contrario, cuando uses target_path
, declara output
con declare_symlink()
. En este caso, el symlink apunta a target_path
. Bazel nunca resuelve el symlink y el resultado de esta acción se invalida solo cuando cambia el contenido de texto del symlink (es decir, el valor de readlink()
). En particular, se puede usar para crear un symlink colgante.
Parámetros
Parámetro | Descripción |
---|---|
output
|
obligatorio El resultado de esta acción. |
target_file
|
File; or None ;
default = NoneEl archivo al que apunta el symlink de salida. |
target_path
|
string; or None ; default = NoneLa ruta de acceso exacta a la que apuntará el symlink de salida. No se aplica ninguna normalización ni otro procesamiento. |
is_executable
|
default = False Solo se puede usar con target_file , no con target_path . Si es verdadero, cuando se ejecuta la acción, se comprueba la ruta de acceso de la target_file para confirmar que es ejecutable y que se informa un error si no lo es. Establecer is_executable como falso no significa que el destino no es ejecutable, solo que no se realiza ninguna verificación.Esta función no tiene sentido para |
progress_message
|
string; or None ; default = NoneMensaje de progreso que se mostrará al usuario durante la compilación. |
Plantilla_de diccionario
TemplateDict actions.template_dict()Experimental: Esta API es experimental y puede cambiar en cualquier momento. No dependas de esto. Se puede habilitar de forma experimental estableciendo
--+experimental_lazy_template_expansion
Experimental: Muestra un objeto TemplateDict para la expansión de plantilla de manera eficiente en términos de memoria.
write
None actions.write(output, content, is_executable=False)Crea una acción de escritura de archivo. Cuando se ejecute la acción, escribirá el contenido dado en un archivo. Se usa para generar archivos con información disponible en la fase de análisis. Si el archivo es grande y tiene mucho contenido estático, considera usar
expand_template
.
Parámetros
Parámetro | Descripción |
---|---|
output
|
obligatorio El archivo de salida. |
content
|
string; or Args ; es obligatorioel contenido del archivo. Puede ser una string o un objeto actions.args() .
|
is_executable
|
default = False Indica si el archivo de salida debe ser ejecutable. |