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

Báo cáo vấn đề Xem nguồn Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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: Chúng tôi không còn sử dụng hành động bổ sung nữa. Thay vào đó, hãy sử dụng phương diện.

Quy tắc action_listener không tự tạo ra kết quả nào. Thay vào đó, công cụ này cho phép 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 liên kết các câu thần chú hành động với 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 đã 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 câu thần chú hành động mà action_listener này sẽ theo dõi, ví dụ: [ "Javac" ].

Mã mnemonic không phải là giao diện công khai. Không có gì đảm bảo rằng câu thần chú và hành động của câu thần chú đó sẽ 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: Chúng tôi không còn sử dụng hành động bổ sung nữa. Thay vào đó, hãy sử dụng phương diện.

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 đó, công cụ này cho phép 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 để che 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 sẽ truy cập vào một tệp chứa vùng đệm giao thức dưới dạng $(EXTRA_ACTION_FILE) với thông tin chi tiết về hành động ban đầu mà nó đang theo dõi. Hành động này cũng có quyền truy cập vào tất cả tệp đầu vào mà hành động ban đầu 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 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 được đưa vào 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 quy tắc action_listener.
cmd

Chuỗi; bắt buộc

Lệnh để chạy.

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

  1. Không có phần 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 đầ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) sẽ đượ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).

    Về hiệu quả, đây là cách thay thế giống như $(location) nhưng có phạm vi khác.

out_templates

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

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

Mẫu này 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; mặc định là False

Cho biết extra_action này yêu cầu đầu ra của thao tác ban đầu phải xuất hiện dưới dạng dữ liệu đầu vào cho extra_action này.

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

tools

Danh sách nhãn; 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ề 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 tạo trước khi chạy lệnh extra_action; các điều kiện tiên quyết này được tạo bằng cấu hình exec vì chúng phải chạy dưới dạng một công cụ trong quá trình tạo bản dựng. Bạn có thể lấy đường dẫn của một mục tiêu tools riêng lẻ //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 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 đó.