rapids_cpm_generate_pinned_versions
新增于 v24.04.00 版本。
生成一个包含所有固定版本值的依赖项的 json 文件
rapids_cpm_generate_pinned_versions( OUTPUT <json_verions_output_path> )
生成一个包含所有带有固定版本值的 CPM 依赖项的 json 文件。这允许后续使用完全相同的状态进行可重现的构建。
rapids-cmake 默认的 versions.json 对依赖项使用分支名称或 git 标签名称。这样做是为了让项目可以“活在”依赖项的最新状态。通过使用 rapids_cpm_package_override()
,项目可以指定一个自定义的 versions.json 来指定确切的 git SHA,从而实现可重现的构建。
rapids_cpm_generate_pinned_versions()
可用于将一组 rapids-cmake 依赖项从分支名称转换为固定值。这可用于后续的构建,例如:
让 CI 使用 versions.json 运行,该文件按分支名称跟踪依赖项
存储 CI 构建生成的固定 versions.json
如果构建良好,创建发布分支并提交生成的固定 versions.json,以确保该版本构建的可重现性
OUTPUT
指定将写入固定版本信息的文件路径。可以多次调用,每个唯一的路径都会写入。
生成的 json 文件将包含每个包的以下条目:
{
"version": "<CPM_PACKAGE_<package_name>_VERSION>",
"git_url": "<deduced>",
"git_tag": "<deduced>",
"git_shallow": false,
"always_download": true
}
如果原始包(或覆盖)也有任何 patches 或 proprietary_binary 字段,这些字段将被传播到生成的条目中。
注意
计算每个包的 git SHA1 是通过查找可以从 url 克隆的最新提交来获得的。
这意味着为了实现适当的可重现构建,所有补丁必须封装在输入 json 文件中,或作为 CPM PATCH_COMMAND。