Règles supplémentaires relatives aux actions

Règles

écouteur d'actions

action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

AVERTISSEMENT:Les actions supplémentaires sont obsolètes. Utilisez plutôt des aspects.

Une règle action_listener ne produit aucun résultat lui-même. Au lieu de cela, elle permet aux développeurs d'outils d'insérer des extra_action dans le système de compilation, en fournissant un mappage entre action et extra_action .

Les arguments de cette règle mappent les mnémoniques d'action aux règles extra_action.

Si vous spécifiez l'option --experimental_action_listener=<label>, le build utilise l'élément action_listener spécifié pour insérer des éléments extra_action dans le graphique de compilation.

Exemple

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

Arguments

Attributs
name

Name; required

Nom unique pour cette cible.

extra_actions

List of labels; required

Liste des cibles extra_action que action_listener doit ajouter au graphique de compilation. Exemple : [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Liste des mnémoniques d'actions que action_listener doit écouter, par exemple, [ "Javac" ].

Les mnémoniques ne sont pas une interface publique. Il n'y a aucune garantie que les mnémoniques et leurs actions ne changent pas.

action_supplémentaire

extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

AVERTISSEMENT:Les actions supplémentaires sont obsolètes. Utilisez plutôt des aspects.

Une règle extra_action ne produit aucun résultat significatif lorsqu'elle est spécifiée en tant que cible de compilation standard. Au lieu de cela, les développeurs d'outils peuvent insérer des actions supplémentaires dans le graphique de compilation qui masque les actions existantes.

Pour en savoir plus sur l'activation des extra_actions, consultez action_listener.

Les extra_action s'exécutent en tant que ligne de commande. L'outil de ligne de commande obtient l'accès à un fichier contenant un tampon de protocole sous la forme $(EXTRA_ACTION_FILE) avec des informations détaillées sur l'action d'origine bloquée. Elle a également accès à tous les fichiers d'entrée auxquels l'action d'origine a accès. Consultez le fichier extra_actions_base.proto pour en savoir plus sur les données stockées dans le tampon du protocole. Chaque fichier proto contient un message ExtraActionInfo.

Comme toutes les autres actions, les actions supplémentaires s'exécutent en bac à sable, et doivent être conçues pour gérer cela.

Arguments

Attributs
name

Name; required

Nom unique pour cette cible.

Vous pouvez faire référence à cette règle à l'aide de label dans l'argument extra_actions des règles action_listener.
cmd

String; required

Commande à exécuter.

Comme l'attribut genrule cmd, mais avec les différences suivantes:

  1. Pas d'expansion de libellé heuristique Seuls les libellés utilisant $(location ...) sont développés.

  2. Une transmission supplémentaire est appliquée à la chaîne pour remplacer toutes les occurrences des sorties créées à partir de l'attribut out_templates. Toutes les occurrences de $(output out_template) sont remplacées par le chemin d'accès au fichier indiqué par label.

    Par exemple, la valeur $(ACTION_ID).analysis de l'attribut "out_template" peut être mise en correspondance avec "$(output $(ACTION_ID).analysis)".

    En fait, cette substitution est identique à $(location), mais avec un champ d'application différent.

out_templates

List of strings; optional

Liste de modèles pour les fichiers générés par la commande extra_action.

Le modèle peut utiliser les variables suivantes:

  • $(ACTION_ID), identifiant unique de cet élément extra_action. Utilisé pour générer un fichier de sortie unique.

requires_action_output

Boolean; optional; default is False

Indique que ce champ extra_action nécessite que la sortie de l'action d'origine soit présente en tant qu'entrée sur ce champ extra_action.

Lorsque la valeur est définie sur "true" (valeur par défaut "false"), l'action "extra_action" suppose que les résultats d'action d'origine sont disponibles en tant qu'entrées.

tools

List of labels; optional

Liste de dépendances tool pour cette règle.

Pour en savoir plus, consultez la définition des dépendances.

Le système de compilation vérifie que ces conditions préalables sont remplies avant d'exécuter la commande extra_action. Ils sont créés à l'aide de la configuration host, car ils doivent être exécutés en tant qu'outil pendant le build lui-même. Le chemin d'une //x:y cible tools individuelle peut être obtenu à l'aide de $(location //x:y).

Tous les outils et leurs dépendances de données sont regroupés dans une seule arborescence dans laquelle la commande peut utiliser des chemins d'accès relatifs. Le répertoire de travail sera la racine de cet arbre unifié.