<br><br><div class="gmail_quote">On Tue, Apr 12, 2011 at 2:20 PM, Igor Stasenko <span dir="ltr">&lt;<a href="mailto:siguctua@gmail.com">siguctua@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Thanks for information, David.<br>
<br>
Indeed, the version numbers like &#39;x.y.z&#39; are mainly for users,<br>
but not for developers.<br>
As a developer, you may want to uniquely identify the exact build<br>
environment, including<br>
platform sources, vmmaker (and dependencies) and configuration used to build it.<br>
<br>
What are primitives in VM , which could give a wide information about<br>
what VM is used.<br>
<br>
The problem here is that i could build different flavors of VM , based<br>
on configuration used<br>
<br>
for instance here, what i put into CMakeLists.txt file header:<br>
<br>
# This is automatically generated file using CogMacOSConfig on 12<br>
April 2011 1:30:26 pm<br>
<br>
So, for instance, if i build debug version of VM, how we can reflect<br>
that somewhere,<br>
so people could see what VM is running.<br>
<br>
This thing gets complicated.<br>
<br>
Git are not using numeric revision numbers , since it makes no sense<br>
in distributed development model.<br>
Git using hashes to identify commits.<br>
<br>
So, i wonder what would be good approach to organize this mess.<br>
What i thinking that might be, we should have two (or maybe 3)<br>
different version infos in VM.<br>
<br>
The most short one is &#39;versionString&#39; , which are just x.y.z version<br>
number and VM name (and maybe build date).<br>
<br>
Another is &#39;versionInfo&#39; which could contain a more detailed<br>
information about VM, like MC package versions etc etc.<br>
<br></blockquote><div><br>Yes, this make sense for me. I would put:  MetacelloConfiguration version + git commit hash + the CMake Configuation class name used. Example:<br><br>CMakeVMMaker class: MTCocoaIOSCogJitDebugConfig.<br>
ConfigurationOfCog version: &#39;1.6&#39;.<br>Gitorious CogVM blessed commit hash:  f3fe94c828f66cd0e7c37cfa3434e384ff65915e<br>Image where sources where generated: PharoCore.xxx<br><br>And I think that&#39;s is even more than what you need :)<br>
<br>Cheers<br><br>Mariano<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I am not sure about it, that&#39;s why i asking.<br>
<div><div></div><div class="h5"><br>
<br>
On 12 April 2011 13:34, David T. Lewis &lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Tue, Apr 12, 2011 at 12:53:20PM +0200, Igor Stasenko wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello,<br>
&gt;&gt;<br>
&gt;&gt; i&#39;d like to know what we can do to clean up the mess with Cog VM<br>
&gt;&gt; versioning, so people could identify it more easily.<br>
&gt;&gt;<br>
&gt;&gt; Currently , what<br>
&gt;&gt;<br>
&gt;&gt; Smalltalk vmVersion shows is:<br>
&gt;&gt;<br>
&gt;&gt; Smalltalk vmVersion<br>
&gt;&gt;<br>
&gt;&gt;  &#39;Croquet Closure Stack VM [StackInterpreter<br>
&gt;&gt; VMMaker-oscog-IgorStasenko.Stasenko.49] StackVM VM 4.0.0&#39;<br>
&gt;&gt;<br>
&gt;&gt; but it doesn&#39;t says anything about which version of platform sources<br>
&gt;&gt; are used to build it.<br>
&gt;&gt; Also, a version number VM 4.0.0 makes no sense..<br>
&gt;&gt;<br>
&gt;&gt; I&#39;d really like to see what we can do to improve it.<br>
&gt;<br>
&gt; VMMaker class&gt;&gt;versionString is an ad-hoc identifier that I (and<br>
&gt; hopefully others) update whenever making a functional update to<br>
&gt; the VMMaker package. It is intended for two purposes:<br>
&gt;<br>
&gt; 1) Provide an approximate identification of the Smalltalk sources<br>
&gt; (VMMaker plus plugins) used to create a VM.<br>
&gt;<br>
&gt; 2) Supply an identifier that becomes part of the VM name. On a<br>
&gt; unix installation, this forms part of the name of the subdirectory<br>
&gt; in which the VM in installed.<br>
&gt;<br>
&gt; My recommendation:<br>
&gt;<br>
&gt; In the oscog branch now, and ultimately in the merged code base<br>
&gt; whenever we get there, adopt a similar #versionString convention<br>
&gt; and get in the habit of updating it somewhat regularly. In the<br>
&gt; near term, the names should not conflict with those used for the<br>
&gt; VMMaker trunk (to avoid confusion especially in the installation<br>
&gt; directory targets).<br>
&gt;<br>
&gt; It may be helpful for clarity to add a one-character suffix to the<br>
&gt; version string to identify a cog interpreter. Thus if the version<br>
&gt; string for a standard interpreter is &#39;1.2.3&#39; then a cog VM could<br>
&gt; identify itself as &#39;1.2.3c&#39; for example. Note that this is also<br>
&gt; important for 64 bit versus 32 bit interpreter VMs (i.e. interpreter<br>
&gt; for 64 bit object memory), so IMO it is a good thing to waste<br>
&gt; some disk space on installation directories such that different<br>
&gt; flavors of VM can clearly live in their own subdirectories.<br>
&gt;<br>
&gt; The other half of the equation is the version number for the<br>
&gt; platform sources. For the standard unix build, Ian has incorporated<br>
&gt; the current Subversion number (derived at compile time) with<br>
&gt; the VMMaker version string (generated at slang generation time)<br>
&gt; into a version identifier for the VM, which in turn is used<br>
&gt; to create the subdirectory name for the installation. Hopefully<br>
&gt; there is some similar mechanism that could be done for the<br>
&gt; git mirror and CMMakeVMMaker builds (although I do not know<br>
&gt; enough to suggest how to do it).<br>
&gt;<br>
&gt; The mechanism I am describing here is not very sophisticated,<br>
&gt; but it&#39;s simple and has worked well in practice, so if there<br>
&gt; is a way to do something similar with oscog VMMaker and the<br>
&gt; git/CMake builds, I think that would be quite helpful.<br>
&gt;<br>
&gt; Dave<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div><div><div></div><div class="h5">--<br>
Best regards,<br>
Igor Stasenko AKA sig.<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br><br>