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

Báo cáo vấn đề 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 thao tác bổ sung 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ả đầu ra nào. Thay vào đó, tính năng này cho phép các nhà phát triển công cụ chèn extra_actions vào hệ thống xây dựng, bằng cách cung cấp bản đồ ánh xạ từ hành động đến extra_action .

Các đối số của quy tắc này ánh xạ các ghi nhớ 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

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 extra_action nhắm 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

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

Một danh sách các ký hiệu hành động mà action_listener này nên theo dõi, ví dụ: [ "Javac" ].

Thuật toán ghi nhớ không phải là giao diện công khai. Không có gì đảm bảo rằng các hệ thống ghi nhớ và hành động của trẻ 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: Các thao tác bổ sung 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ỳ đầ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 đó, tính năng này cho phép các nhà phát triển công cụ chèn thêm các thao tác khá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 các extra_action.

extra_action chạy dưới dạng một dòng lệnh. Công cụ dòng lệnh này truy cập vào 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ề hành động ban đầu mà công cụ này đang ẩn đi. Ứng dụng này 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. 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ư mọi thao tác khác, các thao tác bổ sung có hộp cát và phải được thiết kế để xử lý việ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 khảo 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 cmd của genrules, có những điểm khác biệt sau:

  1. Không mở rộng nhãn suy đ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 dữ liệu đầ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

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

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), đây là 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; giá trị mặc định là False

Cho biết extra_action này yêu cầu dữ liệu đầu ra của hành động gốc phải được thể hiện làm dữ liệu đầu vào cho extra_action này.

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

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.

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 tạo trước khi chạy lệnh extra_action. Các điều kiện này được tạo bằng cách sử dụng execcấu hình, vì các điều kiện tiên quyết này phải chạy như 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 tools đích //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ác công cụ đó đượ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 đang hoạt động sẽ là gốc của cây hợp nhất đó.