Quy tắc về thao tác bổ sung

Quy tắc

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)

CẢNH BÁO: Các thao tác bổ sung không còn đượ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ự tạo ra bất kỳ đầu ra nào. Thay vào đó, nó 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ối liên kết từ hành động đến extra_action .

Các đối số của quy tắc này ánh xạ các gợi ý hành động 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 dành riêng cho mục tiêu này.

extra_actions

List of labels; required

Một danh sách extra_action nhắm đến action_listener này sẽ được 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 thuộc tính ghi nhớ hành động mà action_listener này nên theo dõi, ví dụ: [ "Javac" ].

Thao tác ghi nhớ không phải là giao diện công khai. Không có gì đảm bảo rằng chức năng ghi nhớ và hành động của chúng sẽ không thay đổi.

extra_action

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 bổ sung không còn đượ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 đầu ra 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 đó, nó cho phép nhà phát triển công cụ chèn thêm thao tác vào biểu đồ bản dựng để ẩn các thao tác 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 $(Extras_ACTION_FILE) với thông tin chi tiết về thao tác ban đầu đang ẩn. Ứng dụng này cũng có quyền truy cập vào tất cả tệp đầu vào mà thao tác ban đầu có quyền truy cập. Hãy xem phần extra_actions_base.proto để biết thông tin chi tiết về dữ liệu được lưu trữ trong vùng đệm giao thức. Mỗi tệp proto chứa một thông báo ExtraActionInfo.

Giống như tất cả các thao tác khác, các thao tác bổ sung đều được tạo hộp cát và phải được thiết kế để xử lý vấn đề đó.

Đố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 bằng 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 cmd tạo quy tắc có những điểm khác biệt sau:

  1. Không có tính năng mở rộng nhãn phỏng đoán. Chỉ những nhãn sử dụng $(location ...) mới được mở rộng.

  2. Một lượt truyền bổ sung được áp dụng cho chuỗi để thay thế tất cả các lần xuất hiện của 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 của $(output out_template) đều được thay thế bằng đường dẫn đến tệp được biểu thị bằng label.

    Ví dụ: out_template $(ACTION_ID).analysis có thể được so 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 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ã nhận dạng duy nhất nhận dạng 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 extra_action này yêu cầu đầu ra của thao tác ban đầu phải có dưới dạng dữ liệu đầu vào cho extra_action này.

Khi giá trị true (mặc định là sai), extra_action có thể giả định rằng dữ liệu đầu ra của hành động gốc có sẵn trong dữ liệu đầu vào.

tools

List of labels; optional

Danh sách các phần phụ thuộc tool đối với 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 các điều kiện tiên quyết này được xây dựng trước khi chạy lệnh extra_action. Các điều kiện tiên quyết này được xây dựng bằng cách sử dụng hostcấu hình, vì các điều kiện này 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 //x:y mục tiêu tools riêng lẻ bằng $(location //x:y).

Tất cả công cụ và phần phụ thuộc dữ liệu của các 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 các đường dẫn tương đối. Thư mục đang hoạt động sẽ là gốc của cây hợp nhất đó.