[Vm-dev] Keeping things in sync...
Eliot Miranda
eliot.miranda at gmail.com
Mon Dec 2 23:03:15 UTC 2013
Hi All,
I would like to be able to converge the various VMs more, these are
- the Squeak Interpreter VM, using VMMaker (e.g. VMMaker-dtl.330 on
source.squeak.org),
http://squeakvm.org/svn/squeak/trunk/platforms
http://squeakvm.org/svn/squeak/trunk/src
- the Pharo VM, using VMMaker-oscog (e.g. VMMaker-oscog-LucFabresse.306) on
github,
git://gitorious.org/cogvm/blessed.git
- the Cog branch, using VMMaker.oscog (e.g. VMMaker.oscog-eem.528)
http://www.squeakvm.org/svn/squeak/branches/Cog
http://squeakvm.org/svn/squeak/trunk/platforms/iOS
http://squeakvm.org/svn/squeak/trunk/platforms/win32/plugins
http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
Things are a little tricky. I don't have write permission to trunk (please
can I have this?). There is some divergence in the platform files.
In particular I wanted to upgrade Cog to have the directory entry
extensions in the Pharo VM that add the posix permission and the isSymlink
flags to a directory entry. This is problematic for various reasons:
1. AFAIA there is no #define to mark this change in
plugins/Cross/plugins/FilePlugin/FilePlugin.h. If there was some define,
e.g. DirEntryV2, then the platform files could be changed to define either
API and still compile, e.g.:
/* directories */
sqInt dir_Create(char *pathString, sqInt pathStringLength);
sqInt dir_Delete(char *pathString, sqInt pathStringLength);
sqInt dir_Delimitor(void);
#if DirEntryV2
sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,
/* outputs: */
char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
sqInt *isDirectory, squeakFileOffsetType *sizeIfFile,
sqInt *posixPermissions, sqInt *isSymlink);
sqInt dir_EntryLookup(char *pathString, sqInt pathStringLength, char*
nameString, sqInt nameStringLength,
/* outputs: */
char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
sqInt *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt
*posixPermissions, sqInt *isSymlink);
#else /* DirEntryV2 */
sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,
/* outputs: */
char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
sqInt *isDirectory, squeakFileOffsetType *sizeIfFile);
#endif /* DirEntryV2 */
sqInt dir_PathToWorkingDir(char *pathName, sqInt pathNameMax);
...
2. the only way I can see to get my hands on the
Monticello VMMaker-oscog package for the Pharo fork is to pull from git://
gitorious.org/cogvm/blessed.git, run image/newImage.sh, start-up the
downloaded image and save the Monticello package from there-in (and this
doesn't get me what I want, it gets me a renamed copy of the Monticello
VMMaker-oscog package).
So...
I wonder can we a) start using defines like the above DirEntryV2 so we have
a chance at harmonising the various VMs? I added COGVM and STACKVM to the
branch of trunk I use for platforms, which at least shows what the changes
are and insulates the trunk Interpreter from these. Unless we take this
approach I don't see how we can avoid costly merging instead of sharing.
WOuld it be possible for the Pharo VM guys to occasionally push their
VMMaker-oscog to source.squeak.org? If this could be automated so much the
better?
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20131202/96fe080d/attachment.htm
More information about the Vm-dev
mailing list