Dodatkowe reguły

Reguły

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)

UWAGA: Dodatkowe działania zostały wycofane. Zamiast nich użyj aspecs.

Reguła action_listener nie generuje żadnych danych wyjściowych. Umożliwia programistom narzędzi wstawianie obiektów extra_action do systemu kompilacji poprzez udostępnienie mapowania z działania na extra_action .

Argumenty tej reguły mapują mnemoniki działania na reguły extra_action.

Jeśli określisz opcję --experimental_action_listener=<label>, kompilacja będzie używać podanego action_listener do wstawiania extra_action w wykres kompilacji.

Przykład

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

Argumenty

Atrybuty
name

Name; required

Unikalna nazwa tego celu.

extra_actions

List of labels; required

Lista wartości docelowych (extra_action), którą action_listener powinien dodać do wykresu kompilacji. Na przykład [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Lista mnemoniki akcji, których powinna posłuchać ta osoba (action_listener), np. [ "Javac" ].

Mnemonika nie jest interfejsem publicznym. Nie ma gwarancji, że mnemoniki i ich działania się nie zmienią.

dodatkowe działanie

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)

UWAGA: Dodatkowe działania zostały wycofane. Zamiast nich użyj aspecs.

Reguła extra_action nie generuje żadnych istotnych danych wyjściowych, gdy jest określona jako cel kompilacji kompilacji. Pozwala programistom narzędzi wstawiać na wykresie kompilacji dodatkowe działania, które powielają istniejące działania.

Szczegółowe informacje o włączaniu uprawnień extra_action znajdziesz w sekcji action_listener.

extra_action są uruchamiane z poziomu wiersza poleceń. Narzędzie wiersza poleceń uzyska dostęp do pliku zawierającego bufor protokołu jako $(EXTRA_ACTION_FILE) zawierający szczegółowe informacje na temat pierwotnej operacji powielania. Ma też dostęp do wszystkich plików wejściowych, do których ma dostęp pierwotne działanie. Szczegółowe informacje o danych przechowywanych w buforze protokołu znajdziesz w sekcji extra_actions_base.proto. Każdy plik proto zawiera komunikat ExtraActionInfo.

Tak jak w przypadku pozostałych działań, dodatkowe działania są umieszczane w piaskownicy i należy je obsługiwać.

Argumenty

Atrybuty
name

Name; required

Unikalna nazwa tego celu.

Odwołania do tej reguły możesz odwołać się do label w argumencie extra_actions dotyczącym reguł action_listener.
cmd

String; required

Polecenie do uruchomienia.

Tak jak w przypadku atrybutu genrule cmd z tymi różnicami:

  1. Brak rozszerzenia etykiety heurystycznej. Rozwinięte są tylko etykiety używające $(lokalizacja ...).

  2. Do ciągu znaków zostanie zastosowana dodatkowa karta, która zastąpi wszystkie wystąpienia danych wyjściowych utworzonych z atrybutu out_templates. Wszystkie wystąpienia atrybutu $(output out_template) są zastępowane ścieżką do pliku oznaczonego tagiem label.

    Szablon eg out$(ACTION_ID).analysis można dopasować do$(output $(ACTION_ID).analysis) danych

    W rzeczywistości jest to ten sam podstawie co $(location), ale ma inny zakres.

out_templates

List of strings; optional

Lista szablonów dla plików wygenerowanych za pomocą polecenia extra_action.

Szablon może korzystać z tych zmiennych:

  • $(ACTION_ID) – unikalny identyfikator tego identyfikatora (extra_action). Służy do generowania unikalnego pliku wyjściowego.

requires_action_output

Boolean; optional; default is False

Wskazuje, że element extra_action wymaga, aby dane wyjściowe pierwotnego działania były dostępne jako dane wejściowe tego elementu extra_action.

Jeśli ma wartość true (domyślnie), ma wartość fałszywą, która zakłada, że dane wyjściowe pierwotnego działania są dostępne jako część danych wejściowych.

tools

List of labels; optional

Lista zależności tool dla tej reguły.

Więcej informacji znajdziesz w definicji zależności.

System kompilacji zapewnia, że wymagania wstępne są spełnione przed uruchomieniem polecenia extra_action. są tworzone za pomocą hostkonfiguracji, ponieważ muszą być uruchomione jako narzędzie podczas samej kompilacji. Ścieżka osoby fizycznejtools cel//x:y można uzyskać za pomocą $(location //x:y) danych

Wszystkie narzędzia i ich zależności są skonsolidowane w ramach jednego drzewa, w którym to polecenie może używać ścieżek względnych. Katalog roboczy będzie katalogiem tego ujednoliconego drzewa.