Lưu ý: Phần này dành cho các nhà phát triển Bazel và không cần cho tác giả quy tắc.
Một số lớp SkyFunction triển khai quy trình giải quyết chuỗi công cụ:
RegisteredToolchainsFunction
vàRegisteredExecutionPlatformsFunction
tìm các chuỗi công cụ và nền tảng thực thi có sẵn, dựa trên chuỗi công cụ hiện tại và tệp WORKSPACE.SingleToolchainResolutionFunction
phân giải một loại chuỗi công cụ duy nhất cho mọi nền tảng thực thi. Tức là, đối với mọi nền tảng thực thi, công cụ này đều tìm thấy chuỗi công cụ đã đăng ký phù hợp nhất để sử dụng dựa trên các tiêu chí sau:- Đảm bảo chuỗi công cụ và nền tảng mục tiêu tương thích bằng cách kiểm tra
thuộc tính
target_compatible_with
. - Đảm bảo chuỗi công cụ và nền tảng thực thi tương thích bằng cách
đang kiểm tra thuộc tính
exec_compatible_with
. - Nếu bạn còn nhiều chuỗi công cụ, hãy chọn chuỗi công cụ có mức độ ưu tiên cao nhất ( một tài khoản được đăng ký đầu tiên).
- Đảm bảo chuỗi công cụ và nền tảng mục tiêu tương thích bằng cách kiểm tra
thuộc tính
ToolchainResolutionFunction
cuộc gọiSingleToolchainResolutionFunction
cho mỗi loại chuỗi công cụ được yêu cầu, và sau đó xác định nền tảng thực thi tốt nhất để sử dụng.- Trước tiên, hãy xoá mọi nền tảng thực thi không có nền tảng hợp lệ cho từng loại chuỗi công cụ được yêu cầu.
- Nếu còn nhiều nền tảng thực thi, hãy chọn mức độ ưu tiên cao nhất
một (mục được đăng ký đầu tiên).
- Trường hợp nền tảng thực thi đã được đặt bởi chuỗi công cụ hiệu ứng chuyển tiếp, trước tiên sẽ được chọn như được mô tả dưới đây.
Như đã thảo luận trong Chuỗi công cụ và cấu hình,
phần phụ thuộc từ một mục tiêu đến một chuỗi công cụ sử dụng một cấu hình đặc biệt
buộc nền tảng thực thi phải giống nhau cho cả hai. Tên khác
"công cụ chuyển đổi chuỗi công cụ", điều này không được triển khai dưới dạng cấu hình
chuyển đổi, mà thay vào đó là lớp con đặc biệt của
ConfiguredTargetKey
, có tên là
ToolchainDependencyConfiguredTargetKey
.
Ngoài các dữ liệu khác trong ConfiguredTargetKey
, lớp con này cũng chứa
nhãn của nền tảng thực thi. Khi ToolchainResolutionFunction
là
cân nhắc sử dụng nền tảng thực thi nào, nếu nền tảng thực thi bắt buộc
từ ToolchainDependencyConfiguredTargetKey
là hợp lệ, giá trị này sẽ được sử dụng ngay cả khi
nếu đó không phải là mức độ ưu tiên cao nhất.
Lưu ý: Nếu nền tảng thực thi bắt buộc không hợp lệ (vì không có chuỗi công cụ hợp lệ hoặc do các ràng buộc thực thi từ quy tắc hoặc mục tiêu), thì nền tảng thực thi hợp lệ có mức độ ưu tiên cao nhất sẽ được sử dụng.