Rez中文文档05 Configuring Rez

概述

Rez具有大量可配置的设置。可以在这里找到设置的默认值和每个设置的释义。
最终的设置通过以下方式确定:

  • 首先在Rez安装文件中的rezconfig.py读取设置

  • 如果REZ_CONFIG_FILE环境变量指向另一个文件,则设置被覆盖(变量也可以是一个文件夹路径,从而读取多个配置文件)

  • 如果$HOME/.rezconfig中存在该设置,则进一步覆盖前面的设置

  • 如果存在环境变量REZ_XXX,则该设置再次被覆盖。这里的”XXX”是设置键的大写版本,
    比如image_viewer将会被REZ_IMAGE_VIEWER覆盖。

  • 一种特殊情况,仅在软件包生成或发布期间才生效。在这种情况下,
    如果程序包定义文件包含config部分,则会覆盖之前所有设置。

在一个文件中定义rez设置是常见的选择,然后为所有的用户更改环境变量REZ_CONFIG_FILE以指向这个文件。

Notes:无需在文件中设定所有的设置,只用修改所需的即可,其它没有设置的值则会从默认设置中获取。

合并规则

当存在多个配置源时,这些设置会合并在一起。
(一个配置文件不会替代前一个配置文件,而是通过值覆盖的方式)

遵循下面的规则:

  • 字典会递归合并在一起
  • 非字典会覆盖之前的值

也可以添加基于列表的设置。
比如下面的命令,将会追加到先前配置定义的release_hooks设置值中:
release_hooks = ModifyList(append=["custom_release_notify"])

程序包设置覆盖

程序包本身可以覆盖配置设置,这里用下面示例说明:

1
2
3
# in package.py
with scope("config") as c:
c.release_packages_path = "/svr/packages/internal"

这里的包设置将覆盖默认的发布路径,比如让内部开发的包和外部开发的包发布到不同的位置。

这些配置仅适用于构建和发布程序包的时候。包括:

  • 确定在何处找到软件包的设置,比如 packages_path,local_packages_path,release_packages_path
  • build_system,release_hook和release_vcs插件类型中的设置
  • package_definition_python_path
  • package_filter

支持的字符引用

在所有配置文件中,支持下面的字符:

  • 任何环境变量的引用,格式为${HOME}
  • 系统对象的任何属性,例如{system.platform}

系统对象具有以下属性:

  • platform: 平台(eg “linux”)
  • arch: 架构(eg “x86_64”)
  • os: 操作系统(eg “Ubuntu-12.04”)
  • user: 当前用户的用户名
  • home: 当前用户的主目录
  • fqdn: 完整域名(eg “somescr.somestudio.com”)
  • hostname: 主机名(eg “somesvr”)
  • domain: 域名(eg “somestudio.com”)
  • rez_version: rez的版本(eg “2.0.1”)

延迟加载

可以将配置设置存储在单独的文件中,仅在引用该设置的时候才会加载该设置。

如果有个较大值的设置修改,不想影响污染到主配置文件,这个方法就比较适用。

支持YAML和JSON格式:

1
2
# in rezconfig
default_relocatable_per_package = DelayLoad('/svr/configs/rez_relocs.yaml')

命令行工具

你可以用rez-config命令行工具查看当前配置的设置。

如果不带参数将显示所有设置,带参数的话如下:

1
2
3
4
]$ rez-config packages_path
- /home/sclaus/packages
- /home/sclaus/.rez/packages/int
- /home/sclaus/.rez/packages/ext

下面是如何使用自己的配置文件覆盖设置的一些示例

1
2
3
4
5
]$ echo 'packages_path = ["~/packages", "/packages"]' > myrezconfig.py
]$ export REZ_CONFIG_FILE=${PWD}/myrezconfig.py
]$ rez-config packages_path
- /home/sclaus/packages
- /packages

配置设置

Rez配置参数列表
这里是一个按字母排序的设置列表,在页面的Configuration Settings部分,这里就不翻译了(太长了)。