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