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

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 thao tác bổ sung không còn được dùng nữa. Hãy chuyển sang sử dụng khía cạnh thay thế.

Bản thân quy tắc action_listener không tạo ra đầu ra nào. Thay vào đó, quy tắc này cho phép 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ột mối liên kết từ thao tác đến extra_action .

Các đối số của quy tắc này liên kết các từ gợi nhớ thao tác với extra_action quy tắc.

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

Tên; bắt buộc

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

extra_actions

Danh sách nhãn; bắt buộc

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

Danh sách chuỗi; bắt buộc

Danh sách các từ gợi nhớ thao tác mà action_listener này sẽ theo dõi cho, ví dụ: [ "Javac" ].

Từ gợi nhớ không phải là giao diện công khai. Không có gì đảm bảo rằng các từ gợi nhớ và thao tác của chúng không thay đổi.

extra_action

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 thao tác bổ sung không còn được dùng nữa. Hãy chuyển sang sử dụng khía cạnh thay thế.

Quy tắc extra_action không tạo ra đầu ra có ý nghĩa nào khi được chỉ định là mục tiêu bản dựng thông thường. Thay vào đó, quy tắc này cho phép nhà phát triển công cụ chèn các thao tác bổ sung vào biểu đồ bản dựng để che phủ 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_actions.

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 bộ đệm giao thức dưới dạng $(EXTRA_ACTION_FILE) với thông tin chi tiết về thao tác gốc mà công cụ này đang che phủ. Công cụ này cũng có quyền truy cập vào tất cả các tệp đầu vào mà thao tác gốc có quyền truy cập. Hãy xem extra_actions_base.proto để biết thông tin chi tiết về dữ liệu được lưu trữ bên trong bộ đệ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 được đặt trong hộp cát và phải được thiết kế để xử lý thao tác đó.

Đối số

Thuộc tính
name

Tên; bắt buộc

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ằng label trong đối số extra_actions của các quy tắc action_listener.
cmd

Chuỗi; bắt buộc

Lệnh cần chạy.

Giống như thuộc tính genrule cmd với những điểm khác biệt sau:

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

  2. Một lần truyền bổ sung được áp dụng cho chuỗi để thay thế tất cả lần xuất hiện của đầ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 khớp với $(output $(ACTION_ID).analysis).

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

out_templates

Danh sách chuỗi; giá trị mặc định là []

Danh sách các 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 tệp đầu ra duy nhất.

requires_action_output

Boolean; giá trị mặc định là False

Cho biết extra_action này yêu cầu đầu ra của thao tác gốc phải có dưới dạng đầu vào cho extra_action.

Khi giá trị là true (giá trị mặc định là false), extra_action có thể giả định rằng đầu ra của thao tác gốc có sẵn dưới dạng một phần của đầu vào.

tools

Danh sách nhãn; giá trị mặc định là []

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

Hã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 rằng 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ấu hình exec, 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 riêng lẻ tools //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 chúng được hợp nhất thành một cây duy nhất mà trong đó lệnh có thể sử dụng các đường dẫn tương đối. Thư mục làm việc sẽ be là gốc của cây hợp nhất đó.