Zusätzliche Aktionen

Regeln

action_listener

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)

WARNUNG:Zusätzliche Aktionen wurden verworfen. Verwenden Sie stattdessen Aspekte.

Eine action_listener-Regel erzeugt keine Ausgabe selbst. Stattdessen können Toolentwickler extra_action in das Build-System einfügen, indem sie eine Zuordnung von Aktionen zu extra_action .

Die Argumente dieser Regel ordnen Aktionsnemonien extra_action-Regeln zu.

Wenn Sie die Option --experimental_action_listener=<label> angeben, verwendet der Build die angegebenen action_listener, um extra_actions in die Build-Grafik.

Beispiel

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)",
)

Argumente

Attribute
name

Name; required

Ein eindeutiger Name für dieses Ziel.

extra_actions

List of labels; required

Eine Liste mit extra_action-Zielen, die diese action_listener dem Build-Diagramm hinzufügen sollte. Beispiel: [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Eine Liste von Aktionssignalen, die dieser action_listener überwachen soll, z.B. [ "Javac" ].

Mechanik ist keine öffentliche Schnittstelle. Es gibt keine Garantie dafür, dass sich die Gemälde und ihre Aktionen nicht ändern.

zusätzliche Aktion

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)

WARNUNG:Zusätzliche Aktionen wurden verworfen. Verwenden Sie stattdessen Aspekte.

Eine extra_action-Regel erzeugt keine sinnvolle Ausgabe, wenn sie als reguläres Build-Ziel angegeben ist. Stattdessen können Toolentwickler zusätzliche Aktionen in die Build-Grafik einfügen, die vorhandene Aktionen verdecken.

Weitere Informationen zum Aktivieren von extra_actions finden Sie unter action_listener.

Die extra_actions werden als Befehlszeile ausgeführt. Mit dem Befehlszeilentool wird auf eine Datei zugegriffen, die einen Protokollpuffer als $(EXTRA_ACTION_FILE) enthält, mit detaillierten Informationen zur ursprünglichen Aktion, für die das Shadowing gilt. Außerdem hat er Zugriff auf alle Eingabedateien, auf die die ursprüngliche Aktion Zugriff hat. Weitere Informationen zu den im Protokollpuffer gespeicherten Daten finden Sie unter extra_actions_base.proto. Jede Proto-Datei enthält eine ExtraActionInfo-Nachricht.

Wie bei allen anderen Aktionen werden auch hier zusätzliche Aktionen in einer Sandbox ausgeführt und sollten entsprechend gestaltet werden.

Argumente

Attribute
name

Name; required

Ein eindeutiger Name für dieses Ziel.

Sie können auf diese Regel von label im extra_actions-Argument von action_listener-Regeln verweisen.
cmd

String; required

Der auszuführende Befehl.

Wie auch das Attribut genrule cmd mit den folgenden Unterschieden:

  1. Keine heuristische Labelerweiterung Nur Labels mit $(location ...) werden maximiert.

  2. Ein zusätzlicher Pass wird auf den String angewendet, um alle Vorkommen der durch das Attribut out_templates erstellten Ausgaben zu ersetzen. Alle Vorkommen von $(output out_template) werden durch den durch label angegebenen Pfad zur Datei ersetzt.

    Beispielsweise kann outout_template“ $(ACTION_ID).analysis mit $(output $(ACTION_ID).analysis) abgeglichen werden.

    In Wirklichkeit ist dies die gleiche Ersetzung wie bei $(location), jedoch mit einem anderen Bereich.

out_templates

List of strings; optional

Eine Liste von Vorlagen für Dateien, die mit dem Befehl extra_action generiert wurden.

Die Vorlage kann die folgenden Variablen verwenden:

  • $(ACTION_ID), eine ID, die dieses extra_action eindeutig identifiziert. Wird zum Generieren einer eindeutigen Ausgabedatei verwendet.

requires_action_output

Boolean; optional; default is False

Gibt an, dass dieser extra_action erfordert, dass die Ausgabe der ursprünglichen Aktion als Eingabe für diesen extra_action vorhanden ist.

Bei Einstellung auf "true" (Standardeinstellung "false" kann davon ausgegangen werden, dass die ursprünglichen Aktionsausgaben als Teil ihrer Eingaben verfügbar sind.

tools

List of labels; optional

Eine Liste von tool-Abhängigkeiten für diese Regel.

Weitere Informationen finden Sie in der Definition von Abhängigkeiten.

Das Build-System sorgt dafür, dass diese Voraussetzungen erfüllt sind, bevor der Befehl extra_action ausgeführt wird. Sie werden mit der hostKonfiguration erstellt, da sie während des Build-Vorgangs als Tool ausgeführt werden müssen. Der Pfad eines einzelnen tools-Ziels //x:y kann mit $(location //x:y) abgerufen werden.

Alle Tools und ihre Datenabhängigkeiten werden in einer einzigen Struktur zusammengefasst, in der der Befehl relative Pfade verwenden kann. Das Arbeitsverzeichnis ist das Stammverzeichnis dieser einheitlichen Baumstruktur.