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 #]

  1. Get a fresh checkout of the Etoile SVN
  2. 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.

  3. Build LLVM
    1. $ ./configure --prefix=/opt/llvm --enable-targets=host-only

      This may produce some errors. I had to install flex, for instance. (#apt-get install flex)

    2. $ make

    Don't do $make install, you don't need it as long as llvm-config is in your path.

  4. 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.

  5. If you haven't done it yet, navigate to the Etoile/Frameworks/EtoileFoundation directory. Compile and install it:

    # make && make install

  6. 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)

  7. Go to the Compiler directory, test it:

    edlc -f test.st

Have fun!

Update: There are two ways this procedure can go wrong:

  1. 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.
  2. 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.)