도구 모음 해결 방법 구현 세부정보

참고: 이 섹션은 Bazel 개발자를 대상으로 하며 규칙 작성자는 필요하지 않습니다.

여러 SkyFunction 클래스는 도구 모음 확인 프로세스를 구현합니다.

  1. RegisteredToolchainsFunctionRegisteredExecutionPlatformsFunction은 현재 구성과 WORKSPACE 파일에 따라 사용 가능한 도구 모음 및 실행 플랫폼을 찾습니다.

  2. SingleToolchainResolutionFunction는 모든 실행 플랫폼의 단일 도구 모음 유형을 확인합니다. 즉, 모든 실행 플랫폼에서 다음 기준에 따라 사용할 수 있는 최적의 등록된 도구 모음을 찾습니다.

    1. target_compatible_with 속성을 확인하여 도구 모음과 대상 플랫폼이 호환되는지 확인합니다.
    2. exec_compatible_with 속성을 확인하여 도구 모음과 실행 플랫폼이 호환되는지 확인합니다.
    3. 여러 도구 모음이 남아 있다면 우선순위가 가장 높은 도구 모음 (먼저 등록된 도구 모음)을 선택합니다.
  3. ToolchainResolutionFunction는 요청된 각 도구 모음 유형에 SingleToolchainResolutionFunction를 호출한 후 사용하기에 가장 적합한 실행 플랫폼을 결정합니다.

    1. 먼저 요청된 각 도구 모음 유형에 유효한 도구 모음이 없는 실행 플랫폼을 삭제합니다.
    2. 여러 실행 플랫폼이 남아 있는 경우 가장 높은 우선순위 플랫폼 (먼저 등록된 플랫폼)을 선택합니다.
      1. 실행 도구 모음이 도구 모음 전환에 의해 이미 설정된 경우 아래에 설명된 대로 먼저 선택됩니다.

도구 모음 및 구성에서 설명한 대로 도구 모음에서 대상까지의 종속 항목은 실행 플랫폼을 둘 다에 동일하게 강제하는 특수 구성을 사용합니다. '도구 모음 전환'이라는 이름에도 불구하고 이 도구는 구성 전환으로 구현되지 않으며 대신 {ConfiguredTargetKey의 특별 서브클래스인 ToolchainDependencyConfiguredTargetKey에 저장됩니다. ConfiguredTargetKey의 다른 데이터 외에도 이 서브클래스에는 실행 플랫폼의 라벨도 있습니다. ToolchainResolutionFunction는 사용할 실행 플랫폼을 고려할 때 ToolchainDependencyConfiguredTargetKey의 강제 실행 플랫폼이 유효하면 우선순위가 가장 높은 경우에도 사용됩니다.

참고: 강제 실행 플랫폼이 유효하지 않거나 (유효한 도구 모음이 없거나 규칙 또는 대상의 실행 제약으로 인해) 우선순위가 가장 높은 유효한 실행입니다. 플랫폼이 대신 사용됩니다.