Bootstrap Install (Version 2.4)
Last updated at 8:10 am UTC on 25 February 2003
For a not-so-quick installation follow these steps.
- Starting with your existing Squeak 2.4, make sure that you can build a new virtual machine from sources. Back up your source code and image. Get a copy of Ian's Unix source distribution if you have not already done so. Build a VM and any loadable modules (.so files), and make sure that they work on your system.
- Make sure you can build a VM with an interp.c which you generate from Squeak. First generate a new interp.c from your Squeak image ("Interpreter translate: 'interp.c' doInlining: true"), then copy it into your source tree and repeat step 1 (use the sqcat utility to copy the file if your Squeak did not write the files using Unix line end conventions).
- If step 2 fails to link due to unresolved symbols ioSetDisplayMode and ioHasDisplayDepth, then add dummy functions for them. This is most easily done by concatenating the file fix.c in this directory to the end of your new interp.c, then repeating step 2. This resolves a bug in the Squeak 2.4 release, which was missing code for a couple of new primitives.
- Patch your sqXWindow.c file using the supplied sqXWindow.diff (or simply replace it with the sqXWindow.c in this directory). Rebuild your VM once more to verify that your sqXWindow.c patch works.
- Add a directory in your Squeak source tree in parallel with the other pluggable modules, and call it ./src/UnixOSProcessAccessor (currently you should also have ./src/SoundCodecPrims and ./src/Squeak3D in your source tree). Also make a subdirectory for the new plugin in the directory for your machine architecture
(./i386-linux-2.0.35/UnixOSProcessAccessor on my machine). Edit your ./src/GNUmakefile (the one in your ./src directory, not ./GNUmakefile), and edit line 102 to add UnixOSProcessAccessor to the list of plugins to be built, like this:
PLUGINS:= SoundCodecPrims Squeak3D UnixOSProcessAccessor
- Start Squeak, and file in the change set OSProcess.5July250pm.cs. This will load all the new classes, as well as the changes to the interpreter support files. Save your image.
- Write out a new set of interpreter support files using "InterpreterSupportCode writeSupportFiles". This will generate new
C files and headers with the changes needed to support access to SQFile data structures in the pluggable primitives.
- Write out the C source code for the UnixOSProcessAccessor module using "UnixOSProcessAccessor translate: 'UnixOSProcessAccessor.c' doInlining: true". See the comment in UnixOSProcessAccessor>>moduleName.
- Copy the new files into your Squeak source tree (using the sqcat utility if needed for Unix line end conventions).
- Move the UnixOSProcessAccessor.c source file from ./src/UnixOSProcessAccessor.c into its subdirectory as ./src/UnixOSProcessAccessor/UnixOSProcessAccessor.c. Likewise, move the file ./src/sqGSMCodecPlugin.c to ./src/SoundCodecPrims/sqGSMCodecPlugin.c so that it will be in its correct subdirectory.
- Run "make" to rebuild the VM and all the loadable modules. Move the executable (i386-linux-2.0.35 on my system) to wherever you want the VM to be located.
- Copy the loadable module files (.so), including the new UnixOSProcessAccessor.so loadable module, from the machine architecture directory (./i386-linux-2.0.35 on my machine) to the directory where your Squeak loadable modules live. At this point, you have a working VM with access to the UnixOSProcessAccessor plugin primitives.
- Restart your image. Try the examples in OSProcess class and UnixProcess class.
- Let me know what you think. Suggestions for making this work on other Unix flavors, and (better yet) other operating systems would be most welcome.
Mon Jul 5 17:42:43 EDT 1999 Dave Lewis mailto:email@example.com