본문 바로가기
REZ/REZ?

Variants

by 르면가게 2024. 12. 24.

Rez Variants 문서 요약

Rez의 Variants는 동일한 패키지의 다양한 변형(variant)을 관리할 수 있도록 도와줍니다. 이는 동일한 소스 코드가 다른 종속성을 필요로 하는 경우에 특히 유용하며, 환경 간 호환성을 유지하면서 하나의 패키지로 다양한 설정을 처리할 수 있습니다.


Variants란?

  • Variants는 동일한 패키지 버전 내에서 서로 다른 종속성을 가진 "다양한 변형"을 정의합니다.
  • 예: Maya 플러그인의 경우, Maya 2016과 2017 버전에 맞게 빌드된 두 가지 변형이 필요할 수 있음.

예시 패키지 정의:

name = "my_maya_plugin"

version = "1.0.0"

requires = ["openexr-2.2"]
variants = [
    ["maya-2016.sp2"],
    ["maya-2017"]
]
  • 각 변형은 requires 필드에 추가적인 종속성을 포함.
  • 환경에서 my_maya_plugin을 사용할 때, Maya 버전에 따라 적절한 변형이 자동 선택됩니다.

디스크 구조

  • 변형된 패키지는 변형 요구사항에 따라 하위 디렉터리에 저장됩니다.
/rez/packages/my_maya_plugin/1.0.0/maya-2016.sp2/
/rez/packages/my_maya_plugin/1.0.0/maya-2017/

Hashed Variants

  • 변형 경로가 너무 길거나 파일 시스템에서 유효하지 않은 문자가 포함될 수 있는 경우, Hashed Variants를 사용.
  • 활성화: hashed_variants = True 설정.
  • 결과 경로는 해시값으로 대체:
  • /rez/packages/my_maya_plugin/1.0.0/83e0c415db1b602f...
  • 단축 링크는 _v 디렉터리에 생성되어 사용이 간편.

플랫폼을 Variants로 정의

  • 플랫폼, 아키텍처, 운영 체제를 변형으로 설정할 수 있음:
  • variants = [ ["platform-linux", "arch-x86_64", "os-Ubuntu-12.04"], ["platform-linux", "arch-x86_64", "os-Ubuntu-16.04"] ]
  • 현재 플랫폼에 따라 적절한 변형이 자동 선택됨.

단일 Variant

  • 미래 확장성: 단일 변형을 설정하면 향후 새 변형 추가 시 패키지 버전을 변경하지 않아도 됨.
  • 경로 명확성: 플랫폼/운영 체제 정보가 패키지 설치 경로에 포함됨.

변형 선택

  • Rez는 요청된 패키지 및 환경에 따라 자동으로 적합한 변형을 선택합니다.
  • 요청된 패키지의 버전 우선순위에 따라 높은 버전이 기본 선택.
  • 변형 내 우선순위:
    1. 요청 목록에 포함된 패키지.
    2. 변형 내에서 먼저 정의된 패키지.

예:

name = "foo"

variants = [
    ["python-2.6", "maya-2017"],
    ["python-2.7", "maya-2016"]
]
  • rez-env foo 실행 시, Python 2.7 변형 선택.
  • rez-env foo maya 실행 시, Maya 2017 변형 선택.

상호 배제되지 않는 Variants

  • 일부 변형은 상호 배제되지 않을 수 있음.
    • 예: 하나의 변형은 Maya, 다른 하나는 Houdini를 지원.
    • Rez는 요청된 패키지와 충돌이 없는 범위 내에서 결정.

주의점:

  • 상호 배제되지 않는 변형에서는 선택 동작이 모호할 수 있음.
  • 예기치 않은 결과를 피하려면 요청된 패키지와 종속성을 명시적으로 지정.

Variants의 이점

  • 효율성: 종속성의 다양한 버전을 지원하기 위해 패키지를 분기(branch)할 필요 없음.
  • 유연성: DCC 소프트웨어(Maya, Nuke 등) 및 공통 라이브러리의 다양한 버전을 하나의 패키지에서 지원.

https://rez.readthedocs.io/en/stable/variants.html

 

'REZ > REZ?' 카테고리의 다른 글

Context  (0) 2024.12.24
Releasing packages  (0) 2024.12.24
Building packages  (0) 2024.12.24
Basic concepts  (1) 2024.12.24
Getting started  (0) 2024.12.24