SourceForge Squeak/Unix Release (obsolete)
Last updated at 6:20 am UTC on 25 January 2006
This page is now mostly obsolete
Since the 3.2 release all the VMMaker tools are in the image and all the platforms code is available on Sourceforge - see Getting source using the SubVersion repository
Ian Piumarta has done fantastic work porting the Squeak VM to Unix. However, he is a very busy person, and seems to have little time for maintaining it. Thus, the version of Squeak on SourceForge has become something of a fork. It usually includes several bug fixes that have not yet been added to Ian's VM.
Getting and Compiling it
If you use Debian, then you can get use the following lines in /etc/apt/sources.list:
deb http://www.linex.org/sources/linex/debian/ woody linex
Then you can use Squeak as with any other packages. You can even try the pre-built binary packages.
These links work since July-2003, you can install the packages named squeak-image and squeak-plugin, both has as a dependence the package squeak-vm . At http://swiki.agro.uba.ar/small_land/58 you can find more detailed instructions of how to use it (only in spanish)
Non-Debian folks might still want to grab the source tarball from within:ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.2gamma/unix/debian/. The file will be named with .orig.tar.gz.
- This link seems to be dead... –
Otherwise, here's the hard way to get the sources. The benefit is that you have the newest version.
- Download VMMaker, and load it into an image you will use to translate SLANG code into C.
- Get the VMMaker SqueakMap;
- Get the SVN directory tree from: http://squeakvm.org/svn/squeak/trunk/platforms - see Getting source using the SubVersion repository
- Run VMMaker and generate source code including the plugins you want. Be sure to generate sources so that "src" and "platforms" are sibling directories.
Once you've got the source code, do the following:
- Make a "build" directory, to build in (almost any name and location is fine, though "build" as a sibling to "src" and "platforms" will be assumed in this discussion)
- Change to the build directory, and execute the configure script in the platforms/unix/config directory. E.g., type "../platforms/unix/config/configure". This is a standard autoconf configure script, and you can run it with –help to see some options that you have.
- Type "make", and then as root, "make install".
(after January 2002, changes aren't listed here – they are logged automatically at SourceForge.)
- added include flags that OSProcess needs
- Joern Eyrich's joystick support on Linux added
- mkMake has been updated to allow packages to have custom build rules in the new layout.
- Mpeg3Plugin and JPEGReaderWriter2Plugin compile now
- Sumit Khanna has contributed spec files for RedHat!
- Joern Eyrich's tweaked vmPath a little more
- Added Eyrich's patches to the memory prototypes, to avoid some compiler warnings. (Or was that yesterday? Ah, whatever.)
January 3, 2001
- changed to compile from the copies location, due to popular demand
- tweaked the FileCopy primitive slightly
January 1, 2001
- Added Joern Eyrich's patch for vmPath
- Updated mkfrags and renamed it mkMake; if files intplugins and extplugins are supplied, then they will be used to decide which plugins are to be compiled internally, and which are to be compiled externally
- All source code is used in its original location; no copying is necessary (though it doesn't hurt anything).
December 31, 2001
- Lots of things are moved to the configure script, including sound and mmap-based memory
- The OSS sound driver no longer hangs on open if the device is in use (duh – just use O_NONBLOCK)
- The default memory is moved to 50M instead of 20M. On Unix, this usually won't consume any real memory, so it is safe to have a fairly high value. Also, Squeak easily blows 20M nowadays if you really start playing with it.
These changes happened back when I was keeping this release patchable from Ian's release.
- Keep directory listings from stopping early if an asynchronous timer signal arrives. The specific case I see this a lot is with NFS accesses on Solaris. The more general problem is that all Unix system calls need to be restarted if they return EINTR.... but it's a pain!
- Generalize Ian Piumarta's aio routines for use across the entire VM
- The test in sqXWindow.c for the presence of XSHM was un-reversed.
- If you change the keymapping with xmodmap, Squeak will notice. This is particularly useful if you use Dvorak but switch your machine to QWERTY when people drop by. :) Even for others, it's the Right Thing for an X11 program to do.
- There is some important-looking code to create a new colormap for the squeak X window in certain cases. That code wasn't being applied to the stParent window, and this causes Squeak to fail to start on Sun Ultra 10's and probably other machines as well. The fix is simply to rearrange the existing code so that the colormap handling applies to stParent as well as to the main Squeak window.
- Cut and paste refuses requests for things with types other than XA_STRING. Fixed by Ned Konz (firstname.lastname@example.org).
- The -memory flag with no argument no longer segfaults. Fixed by Ned Konz.
- Detect connection failures in Unix, instead of making the system wait until the first read or write. Fixed by Patrik Nordebo (email@example.com>)
- If accept() returns an error, typically because the client closed the connection extremely quickly, make sure aioHandle() gets called so that Squeak stays responsive to the socket. Fixed by John Kozak firstname.lastname@example.org
- socketValid() checks whether the sockets unit has been initialized or not; before, it would return true too often.
- A complete overall of sqUnixSound.c, with many improvements
- The mkfrags script is improved to allow plugins to have custom make rules incorporated directly into the top-level make file (See Recursive Make Considered Harmful)
- The gnuify script is made portable to all awk's, and is updated to tolerate non-inlined interp.c files.
- The heap is allowed to resize, through a complex hack based on mmap-ing /dev/zero
- Saved images are executable on the system they were saved on, by using the Unix #! hack