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.
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
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:
To check out one of these, do:
hg clone <url> <dir>
This will place a clone of the repository in
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.
Note that running
make image can take
a long time when regenerating the various Unicode tables.
autogen.sh ran successfully, you can run
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
As a rule of thumb, you need to rerun
autoreconf - look in
autogen.sh for the correct
configure.in was changed; rerun
Makefile.in has changed; rerun
make c/scheme48.h when
c/scheme48.h.in has changed;
make i-know-what-i-am-doing when anything in
scheme/vm has changed. Always rerun
image. When in doubt, rerun it all.
When making changes to
./config.status --recheck && ./config.statusis equivalent to re-running
configurewith all the arguments specified on its previous invocation.