Scheme 48 development

This page is a very rudimentary description on how to get the current sources for Scheme 48 from the revision-control repository and building the system from scratch.

Currently, these instructions are for Unix, only.

Getting Mercurial

The Mercurial home page is here.

A pretty good book on Mercurial is here.

From here on, we assume you have an hg executable in your path. Make sure your .hgrc file contains a proper user name.

Checking out the code

The repositories for the development and the stable code are separate. Both are reachable via http (browsable in a regular browser, but read-only).

Stable/release repository:
http://www.s48.org/cgi-bin/hgwebdir.cgi/s48-stable
Development:
http://www.s48.org/cgi-bin/hgwebdir.cgi/s48

To check out one of these, do:

     hg clone <url> <dir>

This will place a clone of the repository in <dir>.

Keeping your source code up to date

Go to your clone of the repository. Say

     hg pull -u

Note that the -u means that Mercurial will first pull the changes from the upstream repository to your repository, and then update your working copy. If you leave out the -u, only the repository will be updated, and you may need to do hg update to update your working copy.

Building from scratch

Make sure you have a current version of autoconf as well as a reasonably recent version of Scheme 48 installed in your path.

Do this:

     ./autogen.sh

Note that running autogen.sh or make image can take a long time when regenerating the various Unicode tables.

After autogen.sh ran successfully, you can run ./configure and make to build Scheme 48.

When you do all this for the very first time, you might get a warning that filenames.make is missing. This is a generated file that gets included by the makefile, and thus an unavoidable circular dependency. You can generally ignore the warning, but should make sure it has been generated by the end of the build.

What to rerun when making changes to files that are used in autogen.sh

As a rule of thumb, you need to rerun autoconf (or autoreconf - look in autogen.sh for the correct command) when configure.in was changed; rerun ./config.status when Makefile.in has changed; rerun make c/scheme48.h when c/scheme48.h.in has changed; rerun make i-know-what-i-am-doing when anything in scheme/vm has changed. Always rerun make image. When in doubt, rerun it all.

When making changes to configure.in,

     ./config.status --recheck && ./config.status
is equivalent to re-running configure with all the arguments specified on its previous invocation.