Chi tiết triển khai giải pháp cho công cụ chuỗi

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Báo cáo sự cố Xem nguồn

Lưu ý: Phần này dành cho các nhà phát triển Bazel và không cần thiết cho các 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ụ:

  1. RegisteredToolchainsFunctionRegisteredExecutionPlatformsFunction tìm thấy các chuỗi công cụ và nền tảng thực thi có sẵn dựa trên cấu hình hiện tại và tệp WORKSPACE.

  2. SingleToolchainResolutionFunction giải quyết một loại chuỗi công cụ duy nhất cho mọi nền tảng thực thi. Điều này có nghĩa là đối với mọi nền tảng thực thi, công cụ này tìm chuỗi công cụ đã đăng ký tốt nhất để sử dụng dựa trên các tiêu chí sau:

    1. Hãy đả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.
    2. Hãy đảm bảo chuỗi công cụ và nền tảng thực thi tương thích bằng cách kiểm tra thuộc tính exec_compatible_with.
    3. Nếu còn lại nhiều chuỗi công cụ, hãy chọn chuỗi ưu tiên cao nhất (chuỗi được đăng ký trước).
  3. ToolchainResolutionFunction gọi SingleToolchainResolutionFunction cho từng loại chuỗi công cụ được yêu cầu, sau đó xác định nền tảng thực thi tốt nhất để sử dụng.

    1. Trước tiên, hãy xoá mọi nền tảng thực thi không có chuỗi công cụ hợp lệ cho mỗi loại chuỗi công cụ được yêu cầu.
    2. Nếu còn lại nhiều nền tảng thực thi, hãy chọn nền tảng có mức độ ưu tiên cao nhất (nền tảng đã được đăng ký trước).
      1. Nếu nền tảng thực thi đã được thiết lập bởi quá trình chuyển đổi chuỗi công cụ, thì nền tảng đó sẽ được chọn trước tiên như mô tả bên dưới.

Như đã thảo luận trong Chuỗi công cụ và cấu hình, phần phụ thuộc từ mục tiêu đến chuỗi công cụ sẽ sử dụng cấu hình đặc biệt buộc nền tảng thực thi phải giống nhau cho cả hai. Mặc dù có tên là "chuyển đổi chuỗi công cụ", điều này không được triển khai dưới dạng chuyển đổi cấu hình, mà thay vào đó là một lớp con đặc biệt của ConfiguredTargetKey, được gọi là ToolchainDependencyConfiguredTargetKey. Ngoài dữ liệu khác trong ConfiguredTargetKey, lớp con này còn giữ nhãn của nền tảng thực thi. Khi ToolchainResolutionFunction đang cân nhắc 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ệ, thì nền tảng đó sẽ được sử dụng ngay cả khi đó 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 hạn chế 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.