Quy tắc hành động bổ sung

Báo cáo sự cố Xem nguồn

Quy tắc

Action_listener

Xem nguồn quy tắc
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)

CẢNH BÁO: Các hành động khác không được dùng nữa. Thay vào đó, hãy sử dụng khía cạnh.

Quy tắc action_listener không tạo ra bất kỳ kết quả nào. Thay vào đó, API này cho phép các nhà phát triển công cụ chèn extra_action vào hệ thống xây dựng bằng cách cung cấp một liên kết từ hành động đến extra_action .

Các đối số của quy tắc này liên kết nội dung hành động đối với các quy tắc extra_action.

Bằng cách chỉ định tuỳ chọn --experimental_action_listener=<label>, bản dựng sẽ sử dụng action_listener được chỉ định để chèn extra_action vào biểu đồ bản dựng.

Ví dụ:

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

Đối số

Thuộc tính
name

Name; required

Tên duy nhất cho mục tiêu này.

extra_actions

List of labels; required

Danh sách extra_action mục tiêu action_listener này sẽ thêm vào biểu đồ bản dựng. Ví dụ: [ "//my/tools:analyzer" ]
mnemonics

List of strings; required

Danh sách ghi nhớ hành động mà action_listener này nên theo dõi, ví dụ: [ "Javac" ].

Thuật toán không phải là một giao diện công khai. Không có gì đảm bảo rằng thuật toán và hành động của chúng không thay đổi.

hành động_thêm

Xem nguồn quy tắc
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)

CẢNH BÁO: Các hành động khác không được dùng nữa. Thay vào đó, hãy sử dụng khía cạnh.

Quy tắc extra_action không tạo ra kết quả có ý nghĩa nào khi được chỉ định làm mục tiêu bản dựng thông thường. Thay vào đó, API này cho phép các nhà phát triển công cụ chèn các hành động bổ sung vào biểu đồ bản dựng để ẩn các hành động hiện có.

Hãy xem action_listener để biết thông tin chi tiết về cách bật extra_action.

extra_action chạy dưới dạng dòng lệnh. Công cụ dòng lệnh có quyền truy cập vào một tệp chứa vùng đệm giao thức là $(EXTRA_ACTION_FILE) với thông tin chi tiết về thao tác gốc mà bộ đệm đang ẩn. Nó cũng có quyền truy cập vào tất cả các tệp đầu vào mà hành động gốc có quyền truy cập. Xem extra_actions_base.proto để biết thông tin chi tiết về dữ liệu được lưu trữ bên trong vùng đệm giao thức. Mỗi tệp proto chứa một thông báo ExtraActionInfo.

Cũng giống như tất cả các tác vụ khác, các tác vụ bổ sung đều nằm trong hộp cát và được thiết kế để xử lý điều đó.

Đối số

Thuộc tính
name

Name; required

Tên duy nhất cho mục tiêu này.

Bạn có thể tham chiếu đến quy tắc này bởi label trong đối số extra_actions của các quy tắc action_listener.
cmd

String; required

Lệnh chạy.

Giống như thuộc tính noindex quy tắc với các điểm khác biệt sau:

  1. Không mở rộng nhãn heuristic. Chỉ mở rộng nhãn sử dụng $(vị trí ...).

  2. Một chuỗi bổ sung được áp dụng cho chuỗi để thay thế tất cả kết quả đầu ra được tạo từ thuộc tính out_templates. Tất cả các lần xuất hiện $(output out_template) đều được thay thế bằng đường dẫn đến tệp biểu thị bằng label.

    Ví dụ: Out_template $(ACTION_ID).analysis có thể được khớp với $(output $(ACTION_ID).analysis).

    Trên thực tế, đây là hàm thay thế giống như $(location) nhưng có phạm vi khác.

out_templates

List of strings; optional

Danh sách mẫu cho các tệp do lệnh extra_action tạo.

Mẫu có thể sử dụng các biến sau:

  • $(ACTION_ID), một mã nhận dạng duy nhất cho extra_action này. Dùng để tạo một tệp đầu ra duy nhất.

requires_action_output

Boolean; optional; default is False

Cho biết rằng extra_action này đòi hỏi kết quả của hành động gốc phải có dưới dạng đầu vào cho extra_action này.

Khi là giá trị true (sai mặc định), extra_action có thể giả định rằng các kết quả đầu ra của hành động ban đầu là một phần của dữ liệu đầu vào tương ứng.

tools

List of labels; optional

Danh sách các phần phụ thuộc tool cho quy tắc này.

Hãy xem định nghĩa về phần phụ thuộc để biết thêm thông tin.

Hệ thống xây dựng đảm bảo những điều kiện tiên quyết này được xây dựng trước khi chạy lệnh extra_action; chúng được xây dựng bằng lệnh execcấu hình, vì chúng phải chạy dưới dạng một công cụ trong chính bản dựng. Bạn có thể lấy đường dẫn của một mục tiêu tools mục tiêu //x:y bằng cách sử dụng $(location //x:y).

Tất cả các công cụ và phần phụ thuộc dữ liệu của những công cụ này được hợp nhất thành một cây duy nhất mà trong đó lệnh có thể sử dụng đường dẫn tương đối. Thư mục đang hoạt động sẽ là thư mục gốc của cây hợp nhất đó.