[Openmcl-devel] Docs 2.2 and 2.5 draft

Hamilton Link hamlink at cs.unm.edu
Sun Aug 29 20:42:39 PDT 2004

Well it took me a while to get to it since I proposed it be done, but...

Here's some updated documentation. I think possibly this section 2.2.  
should be 2.1, and "obtaining etc. from cvs" should be 2.2 instead. I  
just tested all of this, except for going through the firewall (which  
works, I just am not set up for it at home).


2.2.  What you need, and where to get it.

In general, tracking the latest sources of openmcl is the right thing  
to do if you are using some of the more experimental features, such as  
the budding IDE or the ObjC bridge, or are doing "fringe" lisp  
development where you might find and need up-to-date fixes for bugs. It  
should be relatively easy to do if you have some familiarity with CVS  
and are comfortable working at a unix command prompt.

When building openmcl from scratch, several subcomponents must  
initially be separately downloaded and unpacked. Once this is done,  
keeping openmcl up to date requires ensuring that these same components  
are kept up to date. The minimum set of components is:

  - The latest source code
  - An openmcl "lisp image"
  - The FFI "interface database"

The running examples in this section assume installation in  
/Applications/openmcl/ccl under Mac OS X. I use Safari, and my  
downloads directory is ~/temp.

To build the stable 0.14 version, read sections 2.2.1.--2.2.3.
For the bleeding-edge 0.14-dev version, see section 2.2.4. as well.
If you have to go through a firewall, see section 2.2.5. as well.

If you are impatient and have everything, read 2.2.6. (instead of  
sections 2.3--2.5)

2.2.1.  Source code

Given CVS access, the latest source code may be checked out from one of  
the repositories (see Section 2.1). A reasonably current version can  
also be unpacked from a source archive downloaded via Section 4. of the  
index.html>distributions</a> page. Both of these paths should result in  
a ccl directory being created (I personally keep this directory within  
/Applications/openmcl under Mac OS X).

My preferred path is to download a source archive. This has CVS working  
copy information in it and can be brought up to date with the CVS  
repository by running 'cvs update':

  - Using Safari, I go to the openmcl website, to the Distributions  
page, to the most recent Release, and download the source archive using  
  - In a terminal,
    cd /Applications/openmcl
    tar xvzf ~/temp/openmcl-darwinppc-bin-0.14.2-p1.tar.gz
    cd ccl
    cvs up

2.2.2.  A lisp image

The lisp kernel can be built from scratch with nothing but the openmcl  
sources. However, building a lisp image (by compiling lisp code)  
requires a lisp image. The most commonly used source of a lisp image  
will be the binary distribution of lisp:

  - Using Safari, I go to the openmcl website, to the Distributions  
page, to the most recent Release, and download the binary archive for  
Mac OS X using http.
  - In a terminal,
    cd /Applications/openmcl
    tar xvzf ~/temp/openmcl-src-0.14.2-p1.tar.gz

This has the happy side effect of installing some documentation (this  
is not currently the same as the web site documentation).

2.2.3.  The interface database.

After unpacking a binary distribution and the sources, it is possible  
to run openmcl, BUT you may get mysterious errors if the binary  
distribution does not contain the latest interface database (remember  
that the binary distribution does not represent the latest sources, it  
is only obtained to facilitate building the latest sources!).

When building openmcl from scratch, it is recommended that you ensure  
you have the latest interface databases.

  - Using Safari, I go to the openmcl website, to the Distributions  
page, to the most recent Release, and download the interface database  
(in section 2. of that page, "Interface database issues") for Mac OS X  
using http.
  - In a terminal,
    cd /Applications/openmcl
    tar xvzf ~/temp/openmcl-darwin-interfaces-040505.tar.gz

2.2.4.  Living on the edge.

The bleeding edge of development is usually reasonably stable and  
usually just as easy to bootstrap. It is where several useful bits of  
functionality live that are relatively new, such as the ObjC bridge and  
the IDE (see section 2.5).

The same three pieces are needed for the bleeding edge as for the  
stable version, obtaining the first two of those pieces (sources and  
images) can require a little more attention.  Bleeding-edge sources.

The way to get the bleeding-edge sources is via CVS (the 0.14 source  
distributions are archives of the stable branch).

  - In the termainal,
    cd /Applications/openmcl
    cvs -d :pserver:cvs at clozure.com:/usr/local/tmpcvs/ccl-0.14-dev co ccl  Bleeding-edge images.

Normally, the binary distribution image can be used to bootstrap the  
bleeding edge sources. When certain modifications to lisp are made, in  
particular when changes are made that are both deep enough within lisp  
to make bootstrapping difficult, and and experimental enough to be  
inappropriate for a published release, an image is distributed in  

Such images are made available at ftp://clozure.com/pub/testing/, have  
been named dppccl-image-yymmdd.tar.gz, and contain a ccl directory with  
a single dppccl.image file in them (so they may be unpacked in  
/Applications/openmcl as are the other distributions.

2.2.5.  Punching through a firewall (CVS access via ssh).

(I'm not entirely sure this is 100% correct, I'll try to double-check  
it against my configuration when I'm on a machine configured thusly and  
email a new 2.2.5 at some point -- until then, caveat emptor and RTFM  
when setting up your own system)

If you're like many of us, you work behind a firewall that does not  
allow traffic through on very many ports. You can try to get the  
firewall changed, but it's probably easier if you just get ssh access.

< GB, where do people go to get sshcvs at clozure.com and config files for  
their .ssh directory? >

In your ~/.tcshrc file (for example -- if you use a different shell  
then you know enough to translate this), add

Then connect to the repository and check out the sources (note the  
example is to obtain the stable version of 0.14).
  - In the terminal,
    cd /Applications/openmcl
    cvs -d :ext:sshcvs at clozure.com:/usr/local/tmpcvs/ccl-0.14 co ccl

2.2.6.  Building everything, for the impatient.

Given that you now have everything you need, do the following steps to  
bring your lisp system completely up to date.
  - In a terminal,
    cd /Applications/openmcl/ccl/lisp-kernel/darwin
    make clean ; make
    cd /Applications/openmcl/ccl
  - In openmcl,
  - In the terminal,
    cd /Applications/openmcl/ccl
    ./dppccl ppc-boot.image
  - In the bootstrapping version of openmcl,
    (save-application "dppccl.image")
You should now have updated everything, and can run openmcl as you were  
before, using the new kernel and image.

To also build the IDE,
  - In a terminal,
  - In openmcl,
    (require "COMPILE-HEMLOCK")
When you restart lisp you will be able to (require "COCOA") to load the  

2.5.  Building the IDE

Thanks to the ObjC bridge that makes it relatively easy to invoke and  
specialize Cocoa functionality from lisp, openmcl has a budding  
integrated development environment. It is very experimental and not  
entirely stable, and you need to track the 0.14-dev CVS tree if you  
plan to build and use it (see Section 2.2.5.).

After ensuring that you are running the latest bleeding-edge openmcl  
sources, what remains is to build the IDE is to compile Hemlock, the  
common-lisp cousin of emacs.
  - In a terminal,
  - In openmcl,
    (require "COMPILE-HEMLOCK")
When you restart lisp you will be able to (require "COCOA") to load the  

Yes, it's pretty simple. I expect that this section may evolve to  
include links to actually using the IDE and Hemlock (such as the two  
known Hemlock docs, the user's guide and the command implementer's  
guide), special instructions for getting additional bits from other  
people (such as the hyperspec for local use, and configuring hemlock to  
use a local copy of the openmcl web docs and hyperspec), that sort of  

More information about the Openmcl-devel mailing list