Table of Contents
1. Generic Information
As SDS currently is not stable, this installation guide will frequently change, and you might run into some problems. Please check the sds-devel archive or post to the sds-devel list if you get problems.
Earlier versions of SDS have compiled and worked on Linux, IRIX, Slowaris and on Windows NT. Currently, to reduce development cost and make it easier for every Unix-system, SDS uses autoconf (configure-script), automake and libtool. The programs you should have available is:
2. Easy Installation
To make an install, the simplest example is:
./configure make make install
Note: Using the --disable-shared configure option is considered safer than the default with shared libraries. On Slowaris, --disable-shared is required for SDS to work.
But you may want to do a ./configure --help to have a look at the options. If you run into problems, it might help to have automake, autoconf, aclocal, libtool, etc. lying around.
Developers who check out things from CVS have a slightly different tree where they need to create the configure-script manually and some other tools before they're able to compile:
autoheader automake -i autoconf ./configure
3.1 C/C++ Frontend
To get useful datafiles you will probably need a front-end. Use the --enable-cplusplus option to enable the build of Open C++ and the C++-frontend. There is still a few problems but it can produce some decent CSF-data for C++ and for C. The C++ code is built by default if configure is able to find a c++-compiler.
3.2 Java Frontend
The Java frontend is enabled with --enable-javapart. Problems with the Java front-end are discussed on the Java front-end status page
4. Installation of Lisp part
As large parts of SDS is written in Common Lisp and not more common languages (pun intended), some information might be useful to get the Lisp-part working.
4.1 Common Lisp systems supported
Currently the CL code in SDS works with CMU Common Lisp, CLISP and Allegro Common Lisp. A recent version also worked well with Lispworks Personal Ed. for Linux.Recommendations: CMUCL Linux x86, CLISP or Vanilla CMUCL:
The Lisp code is mainly developed with CMUCL on Debian Sid. A lot of optimisations may be done for CMUCL still though. The code is also tested with CLISP (get the march 2000 version or newer) on a Solaris and a Linux box somewhat regularly.
For those interested in choosing Lisp-system based on politics; CLISP is Free (GPL) and CMUCL is Free (Publ. Domain). CMUCL and CLISP exist on most Unix-platforms and CLISP also works on several non-Unix-systems. CLISP should be available at the SDS developer ftp-area at ftp://ftp.ii.uib.no/pub/stig/SDS/developer/ while CMUCL requires some more work to install unless you use Debian.Allegro Common Lisp:
The code should also work nicely with ACL and is tested on the prof version of ACL 6. The reduced heap-size on the ACL 6 Trial makes it difficult to recommend ACL for SDS, despite decent performance. If you have bought your version of ACL you might use SDS properly.LispWorks:
When I had the LispWorks 4.1 Beta for Linux (Prof/Enterprise) I tested the SDS code with it. It worked back then. The personal edition has too low heap-limit to be used even for testing now.Poplog:
An attempt has been made to add support for Poplog (v15.53) but it seems to miss functions like ENSURE-DIRECTORY-EXIST and READ-SEQUENCE which are part of Common Lisp. Also found no way to get command-line arguments back when that was needed. For Poplog one should probably make an image instead of relying on the defunct COMPILE-FILEOther systems:
As for using other systems, there are some quirks when porting it to other systems:
4.2 Specifying which image to use
See the entry on LispWorks on how to specify the image to use. If you're like me, you have several images lying around. If the trick on LispWorks fails you might set the environment variable CLISP to the path of your lisp executable. Make sure you have removed any config.cache before you try to run configure again.
4.3 Interpreted or Compiled?
There is a rumour out that Lisp is an interpreted language. That may be true in some cases, but lisp-code is happiest when it is compiled. During 'make' the code will be compiled and a binary for the server will be created. The server will be accessed by clients written in various languages. The start of the server might be noisy, while running the normal programs will look like "normal" programs. For example a normal run of csf2sdoc on ACL looks like:
stig@palomba(0:53)[~/Projects/sds/src/clisp] 725> ./csf2sdoc -h CSF -> SDOC conversion program (UpHillDev version 0.5.12) Options: -h, --help print this help and quit (default) -i, --info print detailed info and quit -m, --mod file use modspec in file -o, --output file write output to file (def: converted.xml) -p, --prefs file use prefs in file (req option) -r, --read file read csf-file (req option) -v, --verbose generate lots of noise -V, --verify verify tree and only convert ok trees Example: csf2sdoc -v -p myprefs.xml -r mytest.csf stig@palomba(0:59)[~/Projects/sds/src/clisp] 726>
It is recommended that one upgrades to the CLISP version released in March 2000, because of some problems with pathnames and defsystem. If this is not possible, you must manually enter the full path as a string in initsystem.lisp in the :source-pathname field.
4.5 LispWorks [outdated]
Not tested as server. The Lisp code used to work with Harlequin's LispWorks 4.1. I tested with their Prof/Enterprise edition for Linux. To get things working decently, you need to make an image with no gui (which you need the Professional/Enterprise version to do). How to make a guiless image is explained in the release notes. When you have a guiless image, e.g "my-lispworks", you need a somewhat long configure-line (add other options as needed), e.g:
./configure --with-included-gettext --with-lispworks=/home/stig/bin/my-lispworks
The speed is approximately the same as CLISP, mostly due to slow loading of the system. As with CLISP, the code has not been tuned for LispWorks but is more to Allegro's taste. One can also load SDS into the GUI environment (also in the free personal edition) and use it there. This is a bit more cumbersome but works.
CMUCL is the favoured platform during development. I use the small core from the Debian sid-archive. CMUCL will take a long time during compile but it is quite fast once compiled.
CMUCL has problems quitting after the server has started, but either using Ctrl-C and then (cl-user::quit) or killing it should do the job. The server has only been tested on x86.
4.7 Lisp server
The Lisp server is quite new and is an attempt to make SDS and the lisp programs faster and more usable for other systems and tools. It is not quite stable yet, but seems to work. There is a convenient script for starting the server called start-sds-server.sh which you can look at for details.
SDS version 0.5.10 (for the Debian box: 0.5.11) has been tested and found working (with noted issues) on the following systems: