[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
|