ctx.actions
.
Miembros
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- escribir
args
Args actions.args()Muestra un objeto Args que se puede usar para compilar líneas de comandos eficientes en términos de memoria.
declare_directory
File actions.declare_directory(filename, *, sibling=None)Declara que la regla o el aspecto crean un directorio con el nombre dado 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 con un comando de acción con
Args.add_all()
.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
required Si no se proporciona un valor "sibling", la ruta de acceso del nuevo directorio, en relación con el paquete actual. De lo contrario, es un nombre base para 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. |
declare_file
File actions.declare_file(filename, *, sibling=None)Declara que la regla o el aspecto crean un archivo con el nombre de archivo determinado. Si no se especifica
sibling
, el nombre del archivo está relacionado con el directorio del paquete; de lo contrario, el archivo está 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 el archivo. Para crear esa acción, deberás 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 declarar los archivos de salida declarados previamente (ni pueden estar) con esta función. En su lugar, puedes obtener sus objetos File
desde ctx.outputs
. Consulta un ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
required Si no se proporciona un valor "sibling", la ruta del archivo nuevo, en relación con el paquete actual. De lo contrario, es un nombre base para un archivo ("sibling" determina un directorio). |
sibling
|
File; or None ;
default = NoneEs un archivo que se encuentra en el mismo directorio que el archivo recién creado. El archivo debe estar en el paquete actual. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
Experimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar de forma experimental si se configura --experimental_allow_unresolved_symlinks
.
Declara que la regla o el aspecto crea un symlink con el nombre dado en el paquete actual. Debes crear una acción que genere este symlink. Bazel nunca desviará la referencia de este symlink y lo transferirá textualmente a zonas de pruebas o ejecutores remotos.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
required Si no se proporciona un valor "sibling", la ruta de acceso del nuevo symlink, en relación con el paquete actual. De lo contrario, es un nombre base para un archivo ("sibling" define un directorio). |
sibling
|
File; or None ;
default = NoneUn archivo que se encuentra en el mismo directorio que el symlink recientemente declarado. |
do_nothing
None actions.do_nothing(mnemonic, inputs=[])Crea una acción vacía que no ejecuta un comando ni produce ningún resultado, pero es útil para insertar “acciones adicionales”.
Parámetros
Parámetro | Descripción |
---|---|
mnemonic
|
required Es una descripción de la acción de una sola palabra, por ejemplo, CppCompile o GoLink. |
inputs
|
sequence of Files; or depset ;
default = []Lista de los archivos de entrada de la acción. |
expand_template
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)Crea una acción de expansión de plantillas. Cuando se ejecute la acción, se generará un archivo basado en una plantilla. Algunas partes de la plantilla se reemplazarán con el diccionario
substitutions
, en el orden en que se especifiquen las sustituciones. Cada vez que una clave del diccionario aparece en la plantilla (o el resultado de una sustitución anterior), se reemplaza por el valor asociado. No hay una 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
|
required El archivo de plantilla, que es un archivo de texto codificado en UTF-8. |
output
|
required El archivo de salida, que es un archivo de texto codificado en UTF-8. |
substitutions
|
default = {} Sustituciones que se deben realizar al expandir la plantilla. |
is_executable
|
default = False Indica si el archivo de salida debe ser ejecutable. |
computed_substitutions
|
TemplateDict ; predeterminado = unboundExperimental. Este parámetro es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar de manera experimental si se configura --+experimental_lazy_template_expansion Experimental: Sustituciones para realizar 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=None)Crea una acción que ejecuta un ejecutable. Consulta un 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 ; predeterminado = []Lista o disminución de los archivos de entrada de la acción. |
unused_inputs_list
|
File; or None ; predeterminado = NingunoArchivo que contiene una lista de entradas que la acción no usa. El contenido de este archivo (generalmente 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 (obligatorio)El archivo ejecutable al que la acción debe llamar. |
tools
|
sequence; or depset ;
predeterminado = no delimitadoLista o desactivación de todas las herramientas que necesita la acción. Las herramientas son entradas con archivos de ejecución adicionales que están disponibles 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 archivos. Se agregarán automáticamente los archivos runfile que estén directamente en la lista y que provengan de ="{.executable. Cuando se proporciona un depset, solo debe contener Files. En ambos casos, no se puede hacer referencia cruzada de los archivos dentro de los archivos depset con el valor ;executable para los archivos runfile. |
arguments
|
sequence ; predeterminado = []Argumentos de la línea de comandos de la acción. Debe ser una lista de cadenas o de objetos actions.args() .
|
mnemonic
|
string; or None ; predeterminado = NoneEs una descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
progress_message
|
string; or None ;
default = NoneEs el mensaje de progreso que se mostrará al usuario durante la compilación (por ejemplo, "Compiling foo.cc to create foo.o"). El mensaje puede contener patrones %{label} , %{input} o %{output} , que se sustituyen por la cadena de etiqueta, la primera entrada o la ruta de acceso del resultado, respectivamente. Prefieres usar patrones en lugar de cadenas estáticas, porque las primeras 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 ; predeterminado = NingunoConfigura el diccionario de variables de entorno. |
execution_requirements
|
dict; or None ;
default = NoneEs la información para programar la acción. Consulta las etiquetas para conocer claves útiles. |
input_manifests
|
sequence; or None ; default = None(Experimental) establece los metadatos de los archivos de ejecución 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 ejecuciones determinada. Si no hay ninguno, usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action ;
default = NoneEjecuta la acción mediante las entradas de la acción bloqueada dada y el entorno agregados al entorno y a la lista de entradas 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 ninguno, usa solo las entradas de la acción y el entorno dado. |
resource_set
|
callable; or None ;
default = NoneUna función de devolución de llamada que muestra un diccionario de conjunto 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 manera 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 a la acción. El diccionario devuelto puede contener las siguientes entradas, cada una de las cuales puede ser un número de punto flotante o un número entero:
Si este parámetro se establece en La devolución de llamada debe ser de nivel superior (no se permiten funciones lambda ni anidadas). |
toolchain
|
Label; or string; or None ;
predeterminado = NingunoTipo de cadena de herramientas del ejecutable o las herramientas que se usan en esta acción. Se debe configurar el parámetro para que la acción se ejecute en la plataforma de ejecución correcta. Por el momento, no es una operación, pero te recomendamos configurarla cuando se use una cadena de herramientas, ya que será necesaria en versiones futuras de Bazel. Ten en cuenta que la regla que crea esta acción necesita definir esta cadena de herramientas dentro de su función 'rule()'. Cuando se configuren los parámetros `toolchain` y `exec_group`, se usará `exec_group`. Se genera un error en caso de que el `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=None)Crea una acción que ejecuta un comando de shell. Consulta un 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 ; predeterminado = []Lista o disminución de los archivos de entrada de la acción. |
tools
|
sequence of Files; or depset ;
predeterminado = no delimitadoLista o desactivación de todas las herramientas que necesita la acción. Las herramientas son entradas con archivos de ejecución adicionales que están disponibles automáticamente para la acción. La lista puede contener archivos o instancias de FilesToRunProvider. |
arguments
|
sequence ; predeterminado = []Argumentos de la línea de comandos de la acción. Debe ser una lista de cadenas o de objetos actions.args() .Bazel pasa los elementos de este atributo como argumentos al comando.El comando puede acceder a estos argumentos con sustituciones de variables de shell, como Cuando |
mnemonic
|
string; or None ; predeterminado = NoneEs una descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
command
|
string; or sequence of strings ;
obligatoriocomando de Shell para ejecutarse. Puede ser una cadena (opción preferida) o una secuencia de cadenas (obsoleta). Si (Obsoleto) Si Bazel usa la misma shell para ejecutar el comando que para genrules. |
progress_message
|
string; or None ;
default = NoneEs el mensaje de progreso que se mostrará al usuario durante la compilación (por ejemplo, "Compiling foo.cc to create foo.o"). El mensaje puede contener patrones %{label} , %{input} o %{output} , que se sustituyen por la cadena de etiqueta, la primera entrada o la ruta de acceso del resultado, respectivamente. Prefieres usar patrones en lugar de cadenas estáticas, porque las primeras 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 ; predeterminado = NingunoConfigura el diccionario de variables de entorno. |
execution_requirements
|
dict; or None ;
default = NoneEs la información para programar la acción. Consulta las etiquetas para conocer claves útiles. |
input_manifests
|
sequence; or None ; default = None(Experimental) establece los metadatos de los archivos de ejecución 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 ejecuciones determinada. Si no hay ninguno, usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action ; default = NoneEjecuta la acción mediante las entradas descubiertas de la acción bloqueada que se agregaron a la lista de entradas de la acción. Si no hay ninguno, usa solo las entradas de la acción. |
resource_set
|
callable; or None ;
default = NoneEs una 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 = NingunoTipo de cadena de herramientas del ejecutable o las herramientas que se usan en esta acción. Se debe configurar el parámetro para que la acción se ejecute en la plataforma de ejecución correcta. Por el momento, no es una operación, pero te recomendamos configurarla cuando se use una cadena de herramientas, ya que será necesaria en versiones futuras de Bazel. Ten en cuenta que la regla que crea esta acción necesita definir esta cadena de herramientas dentro de su función 'rule()'. Cuando se configuren los parámetros `toolchain` y `exec_group`, se usará `exec_group`. Se genera un error en caso de que el `exec_group` no especifique la misma cadena de herramientas. |
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 con exactamente uno de los valores target_file
o target_path
especificado.
Cuando uses target_file
, declara output
con declare_file()
o declare_directory()
, y haz coincidir el tipo de target_file
. Esto hace que el symlink apunta 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, esto se puede usar para crear un symlink.
Parámetros
Parámetro | Descripción |
---|---|
output
|
required El resultado de esta acción. |
target_file
|
File; or None ;
default = NoneEl archivo al que apuntará el symlink de salida. |
target_path
|
string; or None ;
default = None(Experimental) La ruta de acceso exacta a la que apuntará el symlink de salida. No se aplica ninguna normalización ni otro procesamiento. Para acceder a esta función, debes configurar --experimental_allow_unresolved_symlinks .
|
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 verifica la ruta de acceso de target_file para confirmar que es ejecutable. De lo contrario, se informa un error. Establecer is_executable como falso no significa que el destino no sea ejecutable, solo que no se realizó ninguna verificación.Esta función no tiene sentido para |
progress_message
|
string; or None ;
default = NoneEs el mensaje de progreso que se mostrará al usuario durante la compilación. |
template_dict
TemplateDict actions.template_dict()Experimental. Esta API es experimental y puede cambiar en cualquier momento. No dependas de ello. Se puede habilitar de manera experimental si se configura
--+experimental_lazy_template_expansion
Experimental: Muestra un objeto TemplateDict para una expansión de plantilla eficiente en la memoria.
escritura
None actions.write(output, content, is_executable=False)Crea una acción de escritura de archivos. Cuando se ejecute la acción, escribirá el contenido dado en un archivo. Se usa para generar archivos con la 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
|
required El archivo de salida. |
content
|
string; or Args ; obligatorioel contenido del archivo. Puede ser una cadena o un objeto actions.args() .
|
is_executable
|
default = False Indica si el archivo de salida debe ser ejecutable. |