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