หมายเหตุ: ส่วนนี้มีไว้สำหรับนักพัฒนา Bazel และผู้เขียนกฎไม่จำเป็นต้องใช้
คลาส SkyFunction หลายคลาสใช้กระบวนการการแก้ไข Toolchain ดังนี้
RegisteredToolchainsFunctionและRegisteredExecutionPlatformsFunctionค้นหาชุดเครื่องมือและแพลตฟอร์มการดำเนินการที่พร้อมใช้งานตาม การกำหนดค่าปัจจุบันและไฟล์ WORKSPACESingleToolchainResolutionFunctionจะแก้ไขประเภทเชนเครื่องมือเดียวสำหรับแพลตฟอร์มการดำเนินการทุกแพลตฟอร์ม กล่าวคือ สำหรับแพลตฟอร์มการดำเนินการทุกแพลตฟอร์ม ระบบจะค้นหาเครื่องมือที่ลงทะเบียนที่ดีที่สุดเพื่อใช้ตามเกณฑ์ต่อไปนี้- ตรวจสอบว่า Toolchain และแพลตฟอร์มเป้าหมายเข้ากันได้โดยดูแอตทริบิวต์
target_compatible_with - ตรวจสอบว่าเครื่องมือและแพลตฟอร์มการดำเนินการเข้ากันได้โดย
ดู
exec_compatible_withแอตทริบิวต์ - หากมี Toolchain หลายรายการ ให้เลือก Toolchain ที่มีลำดับความสำคัญสูงสุด (Toolchain ที่ลงทะเบียนก่อน)
- ตรวจสอบว่า Toolchain และแพลตฟอร์มเป้าหมายเข้ากันได้โดยดูแอตทริบิวต์
ToolchainResolutionFunctionสำหรับเครื่องมือแต่ละประเภทที่ขอ และ จากนั้นจะพิจารณาแพลตฟอร์มการดำเนินการที่ดีที่สุดที่จะใช้SingleToolchainResolutionFunction- ก่อนอื่น ให้นำแพลตฟอร์มการดำเนินการที่ไม่มี ทูลเชนที่ถูกต้องสำหรับทูลเชนแต่ละประเภทที่ขอออก
- หากเหลือแพลตฟอร์มการดำเนินการหลายแพลตฟอร์ม ให้เลือกแพลตฟอร์มที่มีลำดับความสำคัญสูงสุด (แพลตฟอร์มที่ลงทะเบียนก่อน)
- หากเครื่องมือเปลี่ยนชุดเครื่องมือได้ตั้งค่าแพลตฟอร์มการดำเนินการไว้แล้ว ระบบจะเลือกแพลตฟอร์มนั้นก่อนตามที่อธิบายไว้ด้านล่าง
ดังที่ได้กล่าวไว้ในชุดเครื่องมือและการกำหนดค่า
การอ้างอิงจากเป้าหมายไปยังชุดเครื่องมือใช้การกำหนดค่าพิเศษที่
บังคับให้แพลตฟอร์มการดำเนินการเหมือนกันสำหรับทั้ง 2 อย่าง แม้จะชื่อว่า "การเปลี่ยนเครื่องมือ" แต่การดำเนินการนี้ไม่ได้เป็นการเปลี่ยนการกำหนดค่า
แต่เป็นการใช้คลาสย่อยพิเศษของ
ConfiguredTargetKey ที่เรียกว่า
ToolchainDependencyConfiguredTargetKey
นอกเหนือจากข้อมูลอื่นๆ ใน ConfiguredTargetKey แล้ว คลาสย่อยนี้ยังมี
ป้ายกำกับของแพลตฟอร์มการดำเนินการด้วย เมื่อToolchainResolutionFunctionพิจารณาว่าจะใช้แพลตฟอร์มการดำเนินการใด หากแพลตฟอร์มการดำเนินการที่บังคับจาก ToolchainDependencyConfiguredTargetKey ใช้ได้ ระบบจะใช้แพลตฟอร์มดังกล่าวแม้ว่าจะไม่ใช่แพลตฟอร์มที่มีลำดับความสำคัญสูงสุดก็ตาม
หมายเหตุ: หากแพลตฟอร์มการดำเนินการที่บังคับใช้ไม่ถูกต้อง (เนื่องจากไม่มี ชุดเครื่องมือที่ถูกต้อง หรือเนื่องจากข้อจำกัดในการดำเนินการจากกฎหรือเป้าหมาย) ระบบจะใช้แพลตฟอร์มการดำเนินการที่ถูกต้องซึ่งมีลำดับความสำคัญสูงสุดแทน