หมายเหตุ: ส่วนนี้มีไว้สำหรับนักพัฒนา 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
ใช้ได้ ระบบจะใช้แพลตฟอร์มดังกล่าวแม้ว่าจะไม่ใช่แพลตฟอร์มที่มีลำดับความสำคัญสูงสุดก็ตาม
หมายเหตุ: หากแพลตฟอร์มการดำเนินการที่บังคับใช้ไม่ถูกต้อง (เนื่องจากไม่มี ชุดเครื่องมือที่ถูกต้อง หรือเนื่องจากข้อจำกัดในการดำเนินการจากกฎหรือเป้าหมาย) ระบบจะใช้แพลตฟอร์มการดำเนินการที่ถูกต้องซึ่งมีลำดับความสำคัญสูงสุดแทน