참고: 이 섹션은 Bazel 개발자를 대상으로 하며 규칙 작성자.
여러 SkyFunction 클래스는 도구 모음 확인 프로세스를 구현합니다.
RegisteredToolchainsFunction
및RegisteredExecutionPlatformsFunction
현재 지원되는 도구 모음 및 실행 플랫폼을 기반으로 구성 및 WORKSPACE 파일에 있습니다.SingleToolchainResolutionFunction
모든 실행 플랫폼의 단일 도구 모음 유형을 확인합니다. 즉, 사용할 수 있는 등록된 도구 모음에 가장 적합한 등록된 도구 모음을 찾는 모든 실행 플랫폼 충족해야 합니다.- 다음을 확인하여 도구 모음과 대상 플랫폼이 호환되는지 확인
target_compatible_with
속성 - 다음과 같이 도구 모음과 실행 플랫폼이 호환되는지 확인
exec_compatible_with
속성을 확인합니다. - 툴체인이 여러 개 남았다면 가장 우선순위가 높은 도구 모음( 첫 번째로 등록된 이메일 주소)이 있습니다.
- 다음을 확인하여 도구 모음과 대상 플랫폼이 호환되는지 확인
ToolchainResolutionFunction
호출 요청된 각 도구 모음 유형에 대한SingleToolchainResolutionFunction
사용할 최적의 실행 플랫폼을 결정합니다- 먼저 유효한 도구 모음을 제공합니다.
- 실행 플랫폼이 여러 개 남아 있는 경우 가장 높은 우선순위를 선택합니다.
1개 (먼저 등록된 이메일 주소)를 선택합니다.
- 실행 플랫폼이 이미 도구 모음에 의해 설정된 경우 아래에 설명된 대로 먼저 선택됩니다.
툴체인 및 구성에서 논의한 것처럼
대상에서 도구 모음으로의 종속 항목은
두 경우 모두 실행 플랫폼이 동일해야 합니다.
'도구 모음 전환'이 포함된 경우 구성으로 구현되지 않습니다.
대신 특수 하위 클래스로
ConfiguredTargetKey
, 호출됨
ToolchainDependencyConfiguredTargetKey
ConfiguredTargetKey
의 다른 데이터 외에도 이 서브클래스는
지정할 수도 있습니다 ToolchainResolutionFunction
조건:
강제 실행 플랫폼인 경우 사용할 실행 플랫폼을 고려합니다.
ToolchainDependencyConfiguredTargetKey
중 하나가 유효한 경우
가장 높은 우선순위가 아닌 경우에 한합니다.
참고: 강제 실행 플랫폼이 유효하지 않다면 (예: 또는 규칙이나 대상의 실행 제약 조건으로 인해) 우선순위가 가장 높은 유효한 실행 플랫폼이 대신 사용됩니다.