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?
Fairly easy:
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:
Or to make it conditional on the variable being set:
That should only print the '.' if %buildnumber is set.
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
becomes something like