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.statusis equivalent to re-running
configure
with all the arguments specified
on its previous invocation.