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