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