The Inofficial Pragmatic Smalltalk Build Guide
Warning: This is a technical article again. And it's about GNUstep things!
Pragmatic Smalltalk ist a fairly new Smalltalk dialect by David Chisnall, which belongs to the Etoile desktop environment. It aims to integrate nicely with Etoile and GNUstep and to be an alternative to Objective-C.
I was still having a bit of a trouble installing the language, so I'll share my build instructions with you.
We'll assume you already installed GNUstep and the basic Etoile frameworks. We'll also assume a basic understanding of the GNUstep build process.
[Commands to be executed as user start with $, commands to be executed as root start with #]
- Get a fresh checkout of the Etoile SVN
- Get a copy of the LLVM development version
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk
Update: When you're using the Etoile 0.4 stable version, it's probably better to use LLVM 2.4 instead.
- Build LLVM
$ ./configure --prefix=/opt/llvm --enable-targets=host-only
This may produce some errors. I had to install flex, for instance. (
#apt-get install flex
)$ make
Don't do
$make install
, you don't need it as long as llvm-config is in your path. - Add the directory
/path/to/llvm/Debug/bin
to your path, e.g.$ export PATH="/home/guenther/llvm/trunk/Debug/bin:$PATH"
You can also add it to your .bashrc if you intend to follow Pragmatic Smalltalk development.
- If you haven't done it yet, navigate to the
Etoile/Frameworks/EtoileFoundation
directory. Compile and install it:# make && make install
- In the Etoile checkout, go to
Etoile/Languages/
and into the directories LanguageKit, SmalltalkKit, Compiler. Compile and install them in order using$ make
and# make install
.Update: Actually, directory names have changed a bit recently. However, this is easy to figure out once LLVM is installed. :)
For SmalltalkKit, you will need the lemon parser generator. (
#apt-get install lemon
) - Go to the
Compiler
directory, test it:edlc -f test.st
Have fun!
Update: There are two ways this procedure can go wrong:
- Building fails: Check if something fundamental changed in the way this is built. It's usually announced on the Etoile news blog. If it's a deeper issue (a bug?), you may want to get a Silc client and ask in the chatroom.
- Running particular programs with edlc fails: Check where the
problems are by running the test suite in Smalltalk/Tests
(
sh runall.sh
). If these tests work, but your example doesn't, you can help greatly by filing a bug report with a test. (It's easy. A test is a directory starting with 'Test', containing a Smalltalk program test.st and its expected output in expected.txt.)