참고: 이 섹션은 Bazel 개발자를 대상으로 하며 규칙 작성자는 필요하지 않습니다.
여러 SkyFunction 클래스는 도구 모음 확인 프로세스를 구현합니다.
RegisteredToolchainsFunction
및RegisteredExecutionPlatformsFunction
은 현재 구성과 WORKSPACE 파일에 따라 사용 가능한 도구 모음 및 실행 플랫폼을 찾습니다.SingleToolchainResolutionFunction
는 모든 실행 플랫폼의 단일 도구 모음 유형을 확인합니다. 즉, 모든 실행 플랫폼에서 다음 기준에 따라 사용할 수 있는 최적의 등록된 도구 모음을 찾습니다.target_compatible_with
속성을 확인하여 도구 모음과 대상 플랫폼이 호환되는지 확인합니다.exec_compatible_with
속성을 확인하여 도구 모음과 실행 플랫폼이 호환되는지 확인합니다.- 여러 도구 모음이 남아 있다면 우선순위가 가장 높은 도구 모음 (먼저 등록된 도구 모음)을 선택합니다.
ToolchainResolutionFunction
는 요청된 각 도구 모음 유형에SingleToolchainResolutionFunction
를 호출한 후 사용하기에 가장 적합한 실행 플랫폼을 결정합니다.- 먼저 요청된 각 도구 모음 유형에 유효한 도구 모음이 없는 실행 플랫폼을 삭제합니다.
- 여러 실행 플랫폼이 남아 있는 경우 가장 높은 우선순위 플랫폼 (먼저 등록된 플랫폼)을 선택합니다.
- 실행 도구 모음이 도구 모음 전환에 의해 이미 설정된 경우 아래에 설명된 대로 먼저 선택됩니다.
도구 모음 및 구성에서 설명한 대로 도구 모음에서 대상까지의 종속 항목은 실행 플랫폼을 둘 다에 동일하게 강제하는 특수 구성을 사용합니다. '도구 모음 전환'이라는 이름에도 불구하고 이 도구는 구성 전환으로 구현되지 않으며 대신 {ConfiguredTargetKey
의 특별 서브클래스인 ToolchainDependencyConfiguredTargetKey
에 저장됩니다.
ConfiguredTargetKey
의 다른 데이터 외에도 이 서브클래스에는 실행 플랫폼의 라벨도 있습니다. ToolchainResolutionFunction
는 사용할 실행 플랫폼을 고려할 때 ToolchainDependencyConfiguredTargetKey
의 강제 실행 플랫폼이 유효하면 우선순위가 가장 높은 경우에도 사용됩니다.
참고: 강제 실행 플랫폼이 유효하지 않거나 (유효한 도구 모음이 없거나 규칙 또는 대상의 실행 제약으로 인해) 우선순위가 가장 높은 유효한 실행입니다. 플랫폼이 대신 사용됩니다.