[LinuxBIOS] [PATCH] superiotool: Make --version actually work correctly

Ulf Jordan jordan at chalmers.se
Sat Oct 6 20:09:34 CEST 2007


On Sat, 6 Oct 2007, Stefan Reinauer wrote:

> * Robinson Tryon <bishop.robinson at gmail.com> [071006 17:42]:
>> What about pulling the version directly out of SVN at build time?  Like this:
>>
>> svn info | sed -n 's/.*Revision: \([0-9]*\)/\1/ p'
>>
>> As long as the Makefile lives at the top level of the project, this
>> value should always reflect the latest commit in the current checkout.
>
> unless you svn up certain subdirectories..

Also svn:externals gives problems, even "svn info -R" wont go down into 
them.

There are also a few other problems:

svn info is internationalized, so for sed to work reliably LANG=C is 
needed.

.*Revision: will read out the revision from the latest svn up.

Last Changed Rev: will read out the latest comitted change, which is more 
what we desire.

svnversion -c might be better, but it doesn't recurse, and has an 
interesting output format in the general case (but sed will fix it!)


To summarize some pros & cons:

1. $Rev$-based in files (at run time or build time):

+ granular control of which files' revisions are considered

+ clearly calculates version number only from desired files

+ does not depend on svn during build

- more complex, need to remember which files to tag with $Rev$-based code


2. svn build time based

+ easy to code both in source and makefiles

- need to be careful about which svn revision numbers are actually used to 
determine the "global" version number (latest svn up or comitted)

- recursion down into subdirectories and svn:externals needs to be 
carefully considered

- makes the build environment dependent on svn and svn meta data, which 
may cause concern in external automated build environments (like OS 
distributors)


/ulf




More information about the coreboot mailing list