我正在持续集成环境中构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