In trying to generate sources from VMMaker per the instructions at http://code.google.com/p/squeakvm-tablet/wiki/CogNotes, I ran into a couple of issues. The first one was a syntax error when loading CMakeVMMaker-golubovsky.136.mcz in StackEvtUnixConfig>>platformSources "answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c, sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"
^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') ifTrue: 'sqUnixEvtMain.c' ifFalse: [(file = 'sqUnixHeartbeat.c') ifTrue: 'sqUnixEvtBeat.c' ifFalse: file] ].
this was easy enough to fix (I had the same issue with version 141):
platformSources "answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c, sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"
^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') ifTrue: ['sqUnixEvtMain.c'] ifFalse: [(file = 'sqUnixHeartbeat.c') ifTrue: ['sqUnixEvtBeat.c'] ifFalse: file] ].
After everything was loaded without errors, I ran:
StackEvtAndroidConfig new generateSources; generate.
with CMakeVMMaker-golubovsky.136.mcz/VMMaker-oscog-golubovsky.111.mcz I get:
'MessageNotUnderstood: CMakeAndroidPluginGenerator>>append:with:'
so I tried the latest CMakeVMMaker-golubovsky.141.mcz/VMMaker-oscog-golubovsky.130.mcz I get:
'Error: Sets cannot meaningfully contain nil' in CCodeGeneratorGlobalStructure(CCodeGenerator)>>emitCConstantsOn: in the literalsDo: block which appears to be due to literal8 being set to nil->VMClass class.
Any suggestions on how to proceed? (i.e. which version of the packages should I be trying to get working based on the versions of Pharo/VMMaker specified in Mariano's post?)
Thanks, Phil
On 15 May 2012 00:51, Phil (list) pbpublist@gmail.com wrote:
In trying to generate sources from VMMaker per the instructions at http://code.google.com/p/squeakvm-tablet/wiki/CogNotes, I ran into a couple of issues. The first one was a syntax error when loading CMakeVMMaker-golubovsky.136.mcz in StackEvtUnixConfig>>platformSources "answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c, sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"
^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') ifTrue: 'sqUnixEvtMain.c' ifFalse: [(file = 'sqUnixHeartbeat.c') ifTrue: 'sqUnixEvtBeat.c' ifFalse: file] ].
this code smells a bit. Dmirty, can you please change it to use exact list of files, like that it will be much easier for readers to comprehend and maintain, for example:
platformSources ^ #( 'aio.c' 'debug.c' 'osExports.c' 'sqUnixCharConv.c' 'sqUnixExternalPrims.c' 'sqUnixHeartbeat.c' 'sqUnixMain.c' 'sqUnixMemory.c' 'sqUnixThreads.c' 'sqUnixVMProfile.c' )
this was easy enough to fix (I had the same issue with version 141):
platformSources "answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c, sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"
^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') ifTrue: ['sqUnixEvtMain.c'] ifFalse: [(file = 'sqUnixHeartbeat.c') ifTrue: ['sqUnixEvtBeat.c'] ifFalse: file] ].
After everything was loaded without errors, I ran:
StackEvtAndroidConfig new generateSources; generate.
with CMakeVMMaker-golubovsky.136.mcz/VMMaker-oscog-golubovsky.111.mcz I get:
'MessageNotUnderstood: CMakeAndroidPluginGenerator>>append:with:'
so I tried the latest CMakeVMMaker-golubovsky.141.mcz/VMMaker-oscog-golubovsky.130.mcz I get:
'Error: Sets cannot meaningfully contain nil' in CCodeGeneratorGlobalStructure(CCodeGenerator)>>emitCConstantsOn: in the literalsDo: block which appears to be due to literal8 being set to nil->VMClass class.
Any suggestions on how to proceed? (i.e. which version of the packages should I be trying to get working based on the versions of Pharo/VMMaker specified in Mariano's post?)
I see that if you take latest version of CMakeVMMaker, you will find all changes made by Dmirty. But i'm not sure about VMMaker.
As for how to proceed: just download an image from jenkins server. This is most painless and time saving way. https://ci.lille.inria.fr/pharo/view/Cog/job/Cog%20Git%20Tracker/ see vmmaker-image.zip
if you use those images, at least you will know that its working. it may not contain the latest versions of packages, because it using metacello configs. And we produce new metacello configs after changes accumulated, or if there is a critical bug.. but not for every new package commit.
Thanks, Phil
On May 14, 2012, at 10:35 PM, Igor Stasenko wrote:
Any suggestions on how to proceed? (i.e. which version of the packages should I be trying to get working based on the versions of Pharo/VMMaker specified in Mariano's post?)
I see that if you take latest version of CMakeVMMaker, you will find all changes made by Dmirty. But i'm not sure about VMMaker.
As for how to proceed: just download an image from jenkins server. This is most painless and time saving way. https://ci.lille.inria.fr/pharo/view/Cog/job/Cog%20Git%20Tracker/ see vmmaker-image.zip
if you use those images, at least you will know that its working. it may not contain the latest versions of packages, because it using metacello configs. And we produce new metacello configs after changes accumulated, or if there is a critical bug.. but not for every new package commit.
Igor,
Thanks very much for the tip, that is much simpler way to go!
Dimitry,
Doing as Igor suggested resulted in another easy to correct issue: MNU from StackEvtAndroidConfig>>prepareForGeneration for CrLfFileStream defaultToLF which I changed to MultiByteFileStream defaultToLF.
Now let's see what VMMaker spit out...
Thanks, Phil
vm-dev@lists.squeakfoundation.org