General Links
SDS Homepage
 
General Documentation
Main index
Copyright notices
What is SDS
Installing SDS
SDS HowTo
Using SDS
Language frontends
FAQ
Plans/further releases
 
Developer Documentation
Architecture description
Developer How-To
XML-system for classes
CSF Specification
CSF DTD Documentation
SDOC Info
Develop code in Lisp
 
Email page maintainer
stig@ii.uib.no
 
Hosted at

SF project page

  

Installation

Table of Contents

  1. Generic information
  2. Easy Installation
  3. Frontends/tools
  4. Installation of Lisp part

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:

  • a c compiler, gcc 2.7.2 or later, like gcc to compile expat which is used for xml-parsing.
  • a lisp-system, either CMUCL, CLISP or ACL. (see below for more complete information)
  • python 1.5.x to run some client-programs (including the one which connects to the lisp-server)
  • if you want to use SDS for c++ code you should get a c++ compiler, gcc 2.7.2 or later, like gcc
  • if you want to use SDS for java code you should get a java compiler and runtime environment, like Jikes and IBM's JDK (Linux)

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
    
Hints
  • On IRIX and Slowaris, 'automake -i' seemed to work better than plain automake.
  • Use --disable-shared to reduce compile-time for c++ code
  • If you get problems with macros, run: aclocal
  • A word of warning

    The source code is about two tiny megabytes, but when compiled in all its glory with debugging-info, it takes at least 25-30 Megabytes on Linux and Slowaris and around 15 on IRIX.

    3. Frontends/Tools

    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-FILE

    Other systems:

    As for using other systems, there are some quirks when porting it to other systems:

    • Need to have socket-support for the server
    • Must be able to use mk:defsystem
    • Need to be able to run shell-programs (xml2esis,xml2sexp)

    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>
        

    4.4 CLISP

    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.

    4.6 CMUCL

    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.

    5.0 Tested

    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:
    Operating EnvironmentCompilersNotes
    SGI IRIX 6.3 on SGI O2MIPSpro Compilers: Version 7.20
    java version "3.1.1 (Sun 1.1.6)"
    Missing python, so no SDS documentation generation.
    Must use --disable-shared
    Had to manually chmod +x install-ht
    Considerable problems getting lisp running. Have to fix scripts.
    Linux 2.2.14pre9 #1 SMP i686, RedHaT 6.0egcs-2.91.66
    Jikes 1.10 (3 Nov 99)
    Python 1.5.1
    IBM JDK 1.1.8
    Compiled dynamically
    Linux 2.2.14 #1 i686, Debian 2.2gcc-2.95.2
    Jikes 1.10 (3 Nov 99)
    Python 1.5.2
    IBM JDK 1.1.8
    ACL 5.01
    CLISP 07-22
    CMUCL 2.4.8
    Shared Linking
    Linux 2.0.36 #1 i686, RedHaT 5.2egcs-2.90.29
    javac
    Python 1.5.2
    Blackdown JDK 1.1.7
    ACL 5.01
    CLISP 07-22
    Shared linking
    SunOS 5.6 Generic_105181-16 sun4u sparc SUNW,Ultra-2gcc 2.95.2
    java version "1.1.6"
    Python 1.5.2
    CLISP 07-22
    Compiled statically