[armedbear-devel] Start up message suggestion

Mark Evenson evenson at panix.com
Sun Jan 30 17:24:31 UTC 2011

On 1/26/11 11:58 PM, Blake McBride wrote:
> Greetings,
> I've got a suggestion regarding the startup message on development
> versions of abcl.  Rather that just saying "-dev" why don't we say "-dev
> (XXX)"  where XXX is the subversion revision number?  This would make it
> much more clear about what you are running, and I'm pretty sure
> subversion can automatically provide and update this (I am doing it
> elsewhere).

We kicked this around once running into the following problems:

The version of SVN source is not readable from the filesystem (i.e. via 
a grep), but needs the SVN libraries to access it.  The executable 
'svnversion' that does this is not always available (is it available 
under TotoiseSVN or not?  I forget what the answer to this turned out to 

The second reason is that we need to keep the Lisp-based build in 
somewhat of a parity here, since we're talking about modifying the value 
of LISP-IMPLEMENTATION-VERSION.  Not impossible, but extra work than 
just hacking 'build.xml'.

The third reason is a non-reason:  one of the developers (me), actually 
manages the ABCL source via Mercurial-to-svn bridge, so since the 
information wouldn't be that useful to me, I wasn't really motivated to 
provide such a functionality.  Since I am the developer who usually ends 
up hacking the Ant build system, this feature never got addressed.

But given the number of people who track trunk, and that Alan had leaned 
on us heavily before for this functionality I acknowledge we should 
probably implement something along these lines.  We certainly have a 
vested interest in more accurate and easy bug reports that this would 

A quick description of the outstanding questions for an implementation:

0.  Since there is no SVN tag expansion (like $Revision$) that would 
output the current SVN version, we have to move the canonical value 
outside of org.armedbear.Version to a separate file.  Version.java will 
then only contain the base value "x.y.z" (i.e. "0.24.0") for the branch.

1.  The file 'org/armedbear/lisp/version' will be created during the 
build process (it currently is) with the base value appended with the 
string "-<OUTPUT of svnversion>" or "-unknown" if 'svnversion' couldn't 
be invoked.  Examples would be "0.24.0-exported" "0.24.0-12344" 

2.  Production versions will be built without this version file.

3.  The current use of "version.src" in 'abcl.properties' (which places 
the Implementation-Source value in the jar manifest) will be replaced 
with this mechanism.

4.  The code in Version.java will look for the 'version' file on the 
default classloader.  If it exists, it will remember and use this value 
for future invocations.  If it doesn't exist, it will output its base value.

Some problems

1.  We would then lose the clear distinction that "0.25.0-dev" conveys 
(i.e. that this isn't a production version).  Should we have a string 
like "0.25.0-dev-12344"?

2.  I'm assuming that branched releases should not include the SVN 
version, but not exactly sure how to detect that.  Maybe place the base 
value in a top-level file that gets manually changed when we branch?

3.  'exported' is the value that 'svnversion' gives when it can't 
determine the SVN revision associated with the source.  Maybe we should 
changed this to 'unknown' or something a little more informative?  Maybe 

4.  I'd like to indicate to the user that the output of 'svnversion' 
indicates the SVN version, but "0.24.0-dev-svn-13111:13112M" seems kind 
of long, but maybe it makes sense (if we follow my solution to problem #1).

Comments, ideas, directions, please.

"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."

More information about the armedbear-devel mailing list