构建附加唯一限定符的 rpm 文件

构建附加唯一限定符的 rpm 文件

我正在持续集成环境中构建 RPM,我需要区分连续的构建,但显然 spec 文件不会在每次签入时被修改。

spec 文件头包含类似

Version:        1.0beta7
Release:        1.1

我想覆盖它,以便构建的 RPM 将有一个限定附加到版本,例如

Version:        1.0.beta7.2913

假设限定符已经可用,作为环境变量,将限定符附加到版本的最简单方法是什么?

答案1

相当简单:

Version: 1.0.beta7.%(echo $ENVVAR)

您可以在 %() 内运行任何您想要的命令;只需确保输出中没有空格。

就我个人而言,我认为将其粘贴在顶部的变量中会更加简洁:

%define buildnumber %(whatever command to get the build number)

Version: 1.0.beta7.%{buildnumber}

或者使其取决于所设置的变量:

Version: 1.0.beta7%{?buildnumber:.%{buildnumber}}

如果设置了 %buildnumber,则仅打印“。”。

答案2

这种方法的问题在于,这种规范需要外部定义的参数(buildnumber)...例如,重新构建 .src.rpm 文件很可能会产生与 CI 系统最初使用的版本号不同的版本号。

我认为您真正想要的是将源版本(例如,Subversion 修订号)嵌入到 RPM 版本号中。我从模板生成 RPM .specs。该模板是源代码控制的,构建过程会从中生成一个真正的 spec 文件,因此

Version: 1.0.beta7.svn@SVN_REV@ 

变成类似

Version: 1.0.beta7.svn1234

相关内容