Módulo que proporciona funciones para crear acciones. Accede a este módulo con ctx.actions
.
Miembros
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- write
args
Args actions.args()Muestra un objeto Args que se puede usar para compilar líneas de comandos eficientes en el uso de memoria.
declare_directory
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 declare_directory.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio Si no se proporciona un "hermano", es la ruta del directorio nuevo en relación con el paquete actual. De lo contrario, es un nombre base para un archivo ("sibling" define un directorio). |
sibling
|
Archivo o None ;
el valor predeterminado es None Es un archivo que se encuentra en el mismo directorio que el directorio declarado recientemente. 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 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 una acción por separado que lo emita. 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 los archivos de salida declarados previamente no se deben declarar (ni se pueden declarar) con esta función. En su lugar, puedes obtener sus objetos File
desde ctx.outputs
. Consulta el ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio Si no se proporciona un "hermano", es 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
|
Archivo o None ;
el valor predeterminado es None Es 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)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 anulará la referencia de este symlink y lo transferirá literalmente a las zonas de pruebas o a los ejecutores remotos. Actualmente, no se admiten los symlinks dentro de los artefactos de árbol.
Parámetros
Parámetro | Descripción |
---|---|
filename
|
obligatorio Si no se proporciona un "hermano", es 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
|
Archivo o None ;
el valor predeterminado es None Es un archivo que se encuentra en el mismo directorio que el symlink declarado recientemente. |
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 que es útil para insertar "acciones adicionales".
Parámetros
Parámetro | Descripción |
---|---|
mnemonic
|
obligatorio Es una descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
inputs
|
secuencia de archivos o depset;
el valor predeterminado es [] Es la 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. Las partes de la plantilla se reemplazarán con el diccionario substitutions
, en el orden en que se especifican las sustituciones. Cada vez que aparece una clave del diccionario en la plantilla (o un 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 el ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
template
|
obligatorio Es 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
|
El valor predeterminado es {} Sustituciones que se deben realizar cuando se expande la plantilla. |
is_executable
|
El valor predeterminado es False Indica si el archivo de salida debe ser ejecutable. |
computed_substitutions
|
TemplateDict:
El valor predeterminado es unbound . Son las sustituciones que se deben 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=unbound)
Crea una acción que ejecuta un ejecutable. Consulta el ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
outputs
|
secuencia de archivos;
obligatorio Es la lista de los archivos de salida de la acción. |
inputs
|
secuencia de archivos o depset;
el valor predeterminado es [] Es una lista o un depset de los archivos de entrada de la acción. |
unused_inputs_list
|
Archivo o None ;
el valor predeterminado es None Archivo que contiene una lista de entradas que no usa la acción. El contenido de este archivo (por lo general, 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. Cualquier cambio en esos archivos no debe afectar de ninguna manera los resultados de la acción. |
executable
|
Archivo, cadena o FilesToRunProvider;
obligatorio Es el archivo ejecutable al que llamará la acción. |
tools
|
sequence o depset;
el valor predeterminado es unbound Es la lista o el conjunto de dependencias de las herramientas que necesita la acción. Las herramientas son entradas con archivos de ejecución adicionales que se ponen a disposición de la acción automáticamente. Cuando se proporciona una lista, puede ser una colección heterogénea de archivos, instancias de FilesToRunProvider o conjuntos de dependencias de archivos. Los archivos que se encuentran directamente en la lista y provienen de ctx.executable tendrán sus archivos de ejecución agregados automáticamente. Cuando se proporciona un conjunto de dependencias, este solo debe contener archivos. En ambos casos, los archivos dentro de los conjuntos de dependencias no tienen referencias cruzadas con ctx.executable para los archivos de ejecución. |
arguments
|
secuencia:
El valor predeterminado es [] . Son los argumentos de la línea de comandos de la acción. Debe ser una lista de cadenas o objetos actions.args() .
|
mnemonic
|
cadena o None ;
el valor predeterminado es None Es una descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
progress_message
|
cadena; o None ;
el valor predeterminado es None Es el mensaje de progreso que se muestra 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 salida, respectivamente. Prefiere usar patrones en lugar de cadenas estáticas, ya que los primeros son más eficientes.
|
use_default_shell_env
|
El valor predeterminado es False Indica si la acción debe usar el entorno de shell predeterminado, que consta de algunas variables dependientes del SO, así como variables configuradas a través de --action_env .Si |
env
|
dict o None ;
el valor predeterminado es None Establece el diccionario de variables de entorno. Si |
execution_requirements
|
dict o None ;
el valor predeterminado es None Información para programar la acción. Consulta las etiquetas para ver las claves útiles. |
input_manifests
|
sequence o None ;
el valor predeterminado es None (Experimental) Establece los metadatos de runfiles de entrada, que suelen generarse con resolve_command. |
exec_group
|
cadena o None ;
el valor predeterminado es None Ejecuta la acción en la plataforma de ejecución del grupo de ejecución determinado. Si no se proporciona ninguno, se usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action:
El valor predeterminado es None . Ejecuta la acción con las entradas y el entorno de la acción con sombra que se agregaron a la lista de entradas y el entorno de la acción. El entorno de la acción puede reemplazar cualquiera de las variables de entorno de la acción ensombrecida. Si no se especifica ninguno, se usan solo las entradas de la acción y el entorno determinado. |
resource_set
|
callable; o None ;
el valor predeterminado es None Es 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 cadena que representa el nombre de un SO (p.ej., "osx") y un número entero que representa la cantidad de entradas de 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 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
|
Etiqueta, cadena o None ;
El valor predeterminado es unbound . Es el tipo de cadena de herramientas del ejecutable o las herramientas que se usan en esta acción. El parámetro debe establecerse para que la acción se ejecute en la plataforma de ejecución correcta. Por el momento, no realiza ninguna acción, pero te recomendamos que la configures cuando se use una cadena de herramientas, ya que será obligatoria en las próximas versiones de Bazel. Ten en cuenta que la regla que crea esta acción debe definir esta cadena de herramientas dentro de su 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 de shell. Consulta el ejemplo de uso.
Parámetros
Parámetro | Descripción |
---|---|
outputs
|
secuencia de archivos;
obligatorio Es la lista de los archivos de salida de la acción. |
inputs
|
secuencia de archivos o depset;
el valor predeterminado es [] Es una lista o un depset de los archivos de entrada de la acción. |
tools
|
secuencia de archivos o depset;
el valor predeterminado es unbound Es la lista o el conjunto de dependencias de las herramientas que necesita la acción. Las herramientas son entradas con archivos de ejecución adicionales que se ponen a disposición de la acción automáticamente. La lista puede contener instancias de Files o FilesToRunProvider. |
arguments
|
secuencia:
El valor predeterminado es [] . Son los argumentos de la línea de comandos de la acción. Debe ser una lista de cadenas o 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
|
cadena o None ;
el valor predeterminado es None Es una descripción de una palabra de la acción, por ejemplo, CppCompile o GoLink. |
command
|
cadena o secuencia de cadenas;
obligatorio Comando de Shell para ejecutar. Puede ser una cadena (preferida) o una secuencia de cadenas (obsoleto). Si (Obsoleto) Si Bazel usa el mismo shell para ejecutar el comando que para genrules. |
progress_message
|
cadena; o None ;
el valor predeterminado es None Es el mensaje de progreso que se muestra 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 salida, respectivamente. Prefiere usar patrones en lugar de cadenas estáticas, ya que los primeros son más eficientes.
|
use_default_shell_env
|
El valor predeterminado es False Indica si la acción debe usar el entorno de shell predeterminado, que consta de algunas variables dependientes del SO, así como variables configuradas a través de --action_env .Si |
env
|
dict o None ;
el valor predeterminado es None Establece el diccionario de variables de entorno. Si |
execution_requirements
|
dict o None ;
el valor predeterminado es None Información para programar la acción. Consulta las etiquetas para ver las claves útiles. |
input_manifests
|
sequence o None ;
el valor predeterminado es None (Experimental) Establece los metadatos de runfiles de entrada, que suelen generarse con resolve_command. |
exec_group
|
cadena o None ;
el valor predeterminado es None Ejecuta la acción en la plataforma de ejecución del grupo de ejecución determinado. Si no se proporciona ninguno, se usa la plataforma de ejecución predeterminada del destino. |
shadowed_action
|
Action:
El valor predeterminado es None . Ejecuta la acción con las entradas descubiertas de la acción sombreada que se agregaron a la lista de entradas de la acción. Si no hay ninguno, se usan solo las entradas de la acción. |
resource_set
|
callable; o None ;
el valor predeterminado es None Es una función de devolución de llamada para estimar el uso de recursos si se ejecuta de forma local. Consulta ctx.actions.run() .
|
toolchain
|
Etiqueta, cadena o None ;
El valor predeterminado es unbound . Es el tipo de cadena de herramientas del ejecutable o las herramientas que se usan en esta acción. El parámetro debe establecerse para que la acción se ejecute en la plataforma de ejecución correcta. Por el momento, no realiza ninguna acción, pero te recomendamos que la configures cuando se use una cadena de herramientas, ya que será obligatoria en las próximas versiones de Bazel. Ten en cuenta que la regla que crea esta acción debe definir esta cadena de herramientas dentro de su 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 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
especificados.
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 apunte 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
|
Archivo o None ;
El valor predeterminado es None Es el archivo al que apuntará el symlink de salida. |
target_path
|
cadena o None ;
el valor predeterminado es None Es la ruta de acceso exacta a la que apuntará el symlink de salida. No se aplica ninguna normalización ni ningún otro procesamiento. |
is_executable
|
El valor predeterminado es 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 sea ejecutable y, si no lo es, se informa un error. Si estableces is_executable como False, no significa que el destino no sea ejecutable, sino que no se realiza ninguna verificación.Esta función no tiene sentido para |
progress_message
|
cadena; o None ;
el valor predeterminado es None Es el mensaje de progreso que se muestra al usuario durante la compilación. |
template_dict
TemplateDict actions.template_dict()Muestra un objeto TemplateDict para la expansión de plantillas eficiente en la 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 determinado 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
|
obligatorio Es el archivo de salida. |
content
|
cadena o Args;
obligatorio el contenido del archivo. Puede ser una cadena o un objeto actions.args() .
|
is_executable
|
El valor predeterminado es False Indica si el archivo de salida debe ser ejecutable. |