[Bug] [VM] [Linux] VMMaker experience

Nevin Pratt nevin at smalltalkpro.com
Sat May 4 06:11:32 UTC 2002


I'm playing around with VM building on Linux now, but I've run into 
multiple errors.  I've got a RedHat 7.1 system that I long ago upgraded 
the compiler to gcc 3.0.3.  The standard RedHat 7.1 compiler is broken 
and wouldn't run Ingres for a contract I had awhile back, but the 3.0.3 
version ran all the Ingres stuff for that contract just fine.  So, I 
think my compiler's OK.

But anyway, here's what I did:

1. I googled "Squeak VMMaker".  It gave me Lex's page: 
"http://minnow.cc.gatech.edu/squeak/2173 "

2. Following the instructions on Lex's page, I downloaded and installed 
VMMaker into my existing Linux image (a 3.2g-4843 image).  I get the 
VMMaker filein by clicking the VMMaker link in Lex's page, and then on 
the next page scrolling to the bottom and clicking on the link that says 
"The changesets are at: ...".  Immediately below this changesets link, 
it suggests also using a "ClassBuilderFix.cs" filein, which I try and it 
crashes the image complaining about a serious meta inconsistency, so I 
redo everything again without using ClassBuilderFix.cs this time.  I 
move on without the ClassBuilderFix.cs.

           PROBLEM #1: THE "ClassBulderFix.cs" FILEIN CRASHES MY IMAGE

3. Back on Lex's page, I click on "Getting source using the CVS 
repository".  I create a 'src' directory within the directory I am 
currently running squeak in, and then follow the cvs login instructions 
in Lex's page.

4. The cvs instructions say to either 'co squeak', or to 'co unix'. 
 Since I am only interested in unix, I issue the cvs instructions to 'co 
unix'.  It creates and populates a 'src/platforms' directory, and within 
the 'platforms' directory, I have 'CVS', 'Cross', and 'unix' directories.

5.  I issue the cvs 'co CVSROOT' command, per Lex's instructions, from 
the same directory I did the 'co unix' in (within the 'src' directory). 
 Now, within the 'src' directory, I have both a 'CVSROOT' directory, and 
a 'platforms' directory.  And, of course, my 'src' directory is inside 
of my current working directory that I launched Squeak from.

6. I go back to Lex's page.  He says to "Run VMMaker and generate source 
code including the plugins you want".  So, in my existing Squeak image, 
I do 'VMMakerTool openInWorld'.  In that UI, I click "Find Path", and it 
finds my platforms directory OK.  I then click on "Find platform", and 
it shows me the choices "CVS" and "unix".  I select "unix".

7. What is this "Path to generated sources" thing on the VMMaker UI?  It 
has defaulted to the 'src' directory, which is the parent directory to 
the 'platforms' directory.  I leave it with this default.

          PROBLEM #2: THE "Path to generated sources" STUFF IS NOT CLEAR.

8. In the "Plugins not built" pane, I right mouse click and select "Make 
all internal".  Then I click the "Generate All" button and wait for a 
little while.

9.  I go back to Lex's web page to see what to do next.  He says to 
"Make a 'build' directory", but he doesn't say where.  However, he next 
says to 'cd build', and then '../platforms/unix/misc/configure'.  Aha, 
this reveals where the 'build' directory should be-- it should be on the 
same directory level as the 'platforms' directory (i.e., inside of the 
'src' directory).  Otherwise you couldn't do a 
'../platforms/unix/misc/configure' command.

Hmm, the configure generated an error.  It says:

   find: ../platforms/unix/misc/../../../src/vm: No such file or directory

If you follow all of those '..' paths, you will see that it is looking 
for a 'src' directory at the same level as the 'platforms' and 'build' 
directories are at.  That's not the level that the 'src' directory is 
at.  It is instead one directory higher.

So, within my 'src' directory, I issue the following:

   ln -s . src

This gives me a soft link 'src' which just links back to the same 
directory, within which the 'vm' directory can now be found.  This makes 
it so that the 'find' path shown in the configure error should now work.

10. I rerun '../platforms/unix/misc/configure', and this time it seems 
to work.

         PROBLEM #3: WHERE SHOULD YOU PUT THE 'build' DIRECTORY?  WHY 
DID I NEED TO CREATE THIS 'src' LINK?  ARE THESE TWO ISSUES RELATED?

11. I type 'make', and cross my fingers (on my Linux 7.1 box, 'gmake' is 
a link to 'make', which is the standard make on the box).  It builds me 
a 'squeak' VM.

12. I quit my existing Squeak image, and replace the old 'squeak' VM 
with the new one, and try to restart my image.  I get a walkback.  The 
relevant part of the stack walkback is the following:

    Error: Cannot truncate this number
    (... a few other stack frames, then...)
   Float(Object)>>error:
   Float>>truncated
   Float>>rounded
   Color>>setRed:green:blue:
   Color class>>r:g:b:
   Color class>>r:g:b:alpha:
   Color>>alphaMixed:with:
   Color>>veryMuchLighter
   PreDebugWindow(SystemWindow)>>paneColor:
   PreDebugWindow(SystemWindow)>>paneColor
   PreDebugWindow(SystemWindow)>>paneColorToUse
   PreDebugWindow(SystemWindow)>>extent:
   PreDebugWindow>>extent:
   PreDebugWindow(SystemWindow)>>initialize
   PreDebugWindow>>initialize

I switched back to the old VM and launched the image.  I poked a little 
at the code shown in the walkback, and on a hunch turned off the 
alternativeWindowLook (which should stop the Color>>veryMuchLighter call 
from happening).  Then I saved the image and switched back to the new 
VM.  I got the same kind of error, but from the ScrollBar>>thumbColor, 
then some more ScrollBar methods, then Color methods, then the Float 
rounded thing, then Float truncated, then bam, "Cannot truncate this 
number" error.

           PROBLEM #4: THE NEW VM DOESN'T WORK, AND I DON'T KNOW WHY






More information about the Squeak-dev mailing list