build立一个附加了唯一限定符的rpm文件

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

spec文件头包含类似的东西

Version: 1.0beta7 Release: 1.1 

我想重写它,以便构build的RPM将有一个限定的版本,例如

 Version: 1.0.beta7.2913 

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

相当简单:

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

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

就我个人而言,我认为这是一个触摸清洁器,把它放在顶端的variables中:

 %define buildnumber %(whatever command to get the build number) Version: 1.0.beta7.%{buildnumber} 

或者使其被设置的variables条件化:

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

那应该只打印'。' 如果%buildnumber被设置。

这种方法的问题是,这样的规格需要一个外部定义的参数(buildnumber)…例如重新生成一个.src.rpm文件最有可能产生一个不同于你的CI系统原来使用的版本号。

我认为你真正想要的是将源版本(例如,Subversion版本号)embedded到RPM版本号中。 我从模板生成RPM .specs。 模板是源代码控制的,构build过程从中产生一个真正的spec文件

 Version: 1.0.beta7.svn@SVN_REV@ 

变得像

 Version: 1.0.beta7.svn1234