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

문제 신고 소스 보기 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

참고: 이 섹션은 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의 강제 실행 플랫폼이 유효하면 우선순위가 가장 높지 않더라도 사용됩니다.

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