[Vm-beginners] VM Version
Gabriel Hernán Barbuto
gbarbuto at gmail.com
Wed Dec 8 08:12:30 UTC 2010
Hi
I've asked John how do I know from the VM version string of the Mac VM
which VMMaker version and platform sources version was used to build
the VM. Below is his response.
Cheers
Gabriel
In the 90's and early part of 2000 all the source code to build the macintosh VM
and to run VMMaker actually was in the image. So when you asked for
the vmVersion
the string you got back "Squeak4.1 of 17 April 2010 [latest update:
#9957]" which told you
every you needed to know since the image was tied to the vm development.
When I made adjustments to the VM that was actually pushed to the
update stream for
inclusion in everyone's image.
This changed when we decoupled VMMaker from the image, but unfortunately we
did not consider how that affected the vmVersion string since as you see it
actually does not say which version of VMMaker was used.
Now the Squeak VM 4.2.5b1 comes from the bundle information string found in
info.plist, but anyone can change that.
The other vm version info is via 1006,1007,1008 where for 1006
we return a unique string that the vm builder has to update.
This was Andreas idea to have something that could identify the VM
version so an image could decide if it was
certified to run on a particular VM..
I decided to return the fact it was a macintosh VM, which platform
type which would be Carbon or Cocoa now, the
version number, the date it was created and the UUID of the machine it
was built on.
if (id == 1006) {
return "Mac Carbon 4.2.5b1 15-Jun-10
>85D9C693-2A2A-4C33-B05C-C20B2A63B166<";
or in the 5.x series
case 1006: {/* vm build string also info.plist */
#if (SQ_VI_BYTES_PER_WORD == 4)
#if STACKVM
return "Mac Cocoa Cog 5.8b12 21-Sep-10
>1B0534FA-246C-47C5-AB29-7A76C81CCDCB<";
case 1007: { /* vm build string also info.plist */
#if STACKVM
extern char *__interpBuildInfo;
return __interpBuildInfo;
#endif
break;
}
case 1008: { /* vm build string also info.plist */
# if COGVM
extern char *__cogitBuildInfo;
return __cogitBuildInfo;
#endif
break;
}
I note that Eliot did resolve the issue by returning 1007, 1008 that
shows the vmmaker build info for his COG fork.
Now in order to decide what VMMaker source to use. I'm afraid you have
to look at the SVN data,
In general my process was to update the image used for VMMaker to the
current VMMaker on the date of the
build, then after it was shown to be a viable VM, I would check in all
my changes.
See for example
#2213 "Mac Carbon VM 4.2.5b1 Update FFI plugin to latest code base.
Bring other code base up to VMMaker-jcg.182"
or #2158 "64bit work merging from V5 Macintosh Cocoa Squeak VM
microsecond & utc clock updates Mac Carbon 4.2.4b1"
or #2156 "Mac Carbon 4.2.3b1U VMMaker 160. MicroSecond clock, compiler
warning fixes"
Sometimes I would include the version info for the vmmaker used.
For earlier builds sometimes I would keep a copy of the source code
and vmmaker output as an archived file.
Those files are part of various GB of folders that I sent Esteban.
More information about the VM-beginners
mailing list