6

I'm building RPMs in a continuous integration environment, and I need to distinguish between successive builds, but obviously the spec file does not get modified on each checkin.

The spec file header contains something like

Version:        1.0beta7
Release:        1.1

I'd like to override it so that the the built RPM will have a qualified appended to the version, e.g.

Version:        1.0.beta7.2913

Assuming that the qualifier is already available, as an environment variable, what's the easiest way of appending a qualified to the version?

1

2 Answers 2

8

Fairly easy:

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

You can run whatever command you want inside %(); just make sure there's no whitespace in the output.

Personally, I think it's a touch cleaner to stick it in a variable at the top:

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

Version: 1.0.beta7.%{buildnumber}

Or to make it conditional on the variable being set:

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

That should only print the '.' if %buildnumber is set.

3
  • This looks exactly what I'm looking for, I'll try it out. Nov 6, 2009 at 16:17
  • Works great, one final question. I want to append the whole '.$ENVVAR' or nothing at all. How can do it so that I don't end up with a version of 1.0.beta7. (note the final dot) when ENVVAR is not set? Nov 6, 2009 at 16:21
  • 1
    Something like %{?buildnumber:.%{buildnumber}}.
    – freiheit
    Nov 6, 2009 at 16:56
2

The problem with this approach is that such specs require an externally-defined parameter (buildnumber)... for example re-building an .src.rpm file will most probably yield a different version number than the one originally used by your CI system.

I think what you really want is embed the source version (e.g., subversion revision number) into the RPM version number. I generate RPM .specs from templates. The template is source-controlled and the build process generates a real spec file from it, so

Version: 1.0.beta7.svn@SVN_REV@ 

becomes something like

Version: 1.0.beta7.svn1234

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .