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

Quy tắc

danh_sách_hành_động

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 thao tác khác không còn được dùng nữa. Thay vào đó, hãy sử dụng các 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 đó, loại mã này cho phép các nhà phát triển công cụ chèn extra_action vào hệ thống bản dựng, bằng cách cung cấp mối 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 các thuộc tính hành động với quy tắc extra_action.

Khi bạn chỉ định tùy chọn --experimental_action_listener=<label>, bản dựng sẽ sử dụng action_listener đã 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 dành riêng 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 phải thêm vào biểu đồ bản dựng. Ví dụ: [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Danh sách các tài liệu về hành động mà action_listener này nên nghe, ví dụ như [ "Javac" ].

Giao diện không phải là một giao diện công khai. Không có gì đảm bảo rằng các vận động viên và linh kiện của họ không thay đổi.

Hành động phụ

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 thao tác khác không còn được dùng nữa. Thay vào đó, hãy sử dụng các khía cạnh.

Quy tắc extra_action không tạo ra bất kỳ 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 đó, loại mã này cho phép nhà phát triển công cụ chèn các hành động khác vào biểu đồ bản dựng nhằm che đi 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 một 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 dưới dạng $(EXTRA_ACTION_FILE) kèm theo thông tin chi tiết về thao tác ban đầu mà vùng chứa đó đang ẩn. Hành động này cũng có quyền truy cập vào tất cả tệp nhập mà hành động ban đầu có quyền truy cập. Hãy xem additional_actions_base.proto để biết chi tiết về dữ liệu được lưu trữ trong bộ đệm giao thức. Mỗi tệp proto có chứa một thông báo extraActionInfo.

Giống như tất cả các hành động khác, các hành động bổ sung được chạy trong hộp cát và được thiết kế để xử lý.

Đối số

Thuộc tính
name

Name; required

Tên dành riêng cho mục tiêu này.

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

String; required

Lệnh để chạy.

Chẳng hạn như thuộc tính cmd trong genrule với các điểm khác biệt sau:

  1. Không mở rộng nhãn heuristic. Chỉ những nhãn sử dụng $(location ...) mới được mở rộng.

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

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

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

out_templates

List of strings; optional

Danh sách các mẫu của 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 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 yêu cầu thông tin đầu ra của hành động ban đầu dưới dạng thông tin đầu vào của extra_action này.

Khi là true (mặc định là false), hành động bổ sung có thể giả định rằng kết quả ban đầu của hành động đó có sẵn trong dữ liệu đầu vào.

tools

List of labels; optional

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

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

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

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