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는 요청된 패키지 및 환경에 따라 자동으로 적합한 변형을 선택합니다.
- 요청된 패키지의 버전 우선순위에 따라 높은 버전이 기본 선택.
- 변형 내 우선순위:
- 요청 목록에 포함된 패키지.
- 변형 내에서 먼저 정의된 패키지.
예:
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 |