From Church Wiki
Jump to: navigation, search


Downloading MIT-Church

If you don't have svn, go and install svn.

Then go to the folder where you want Church to be installed and get the church release from the svn repository (all one line):

svn checkout mit-church

You need a username and password (see MIT-Church alpha test).

Using Ikarus Scheme

Ikarus is a very fast implementation of the Scheme R6RS specification. While you can run MIT-Church from PLT Scheme, Ikarus can be several orders of magnitude faster.

Note The current version of Church requires the latest version of Ikarus scheme (currently version 0.0.4), which can only be retrieved using the version control software (bzr) using the instructions below and NOT by downloading older pre-compiled binary versions on the Ikarus website.

Native Mac OS X

Use MacPorts to install gsl, gmp, libffi

sudo port install gsl 
sudo port install libffi
sudo port install gmp

If port does not work after installing MacPorts, make sure that the paths are set in the right file for your shell. For me this was .bash_profile but MacPorts wrote the paths to .profile.

You need the development version of ikarus. So you first need to install bzr version control to get it. Go to the directory where you want the ikarus source code

sudo port install bzr
bzr checkout --lightweight

Assuming that macports has installed everything in the same standard paths as in my installation you go into the directory that you just downloaded (i.e. and you do:

./configure --enable-libffi CFLAGS='-I/opt/local/include' CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib' 

You want to set the flags CFLAGS and CPPFLAGS the paths that have gmp.h and ffi.h -- if the above doesn't work search for the header files and put in the right paths. (The latest MacPorts libffi package appears to put ffi.h in /opt/local/lib/libffi-3.0.9.) You can include several paths by using quotes and several -I flags. The same for the LDFLAGS where you want to specify the locations for libgmp and libffi. (For some non-standard external packages you may need to explicitly link gsl: change the above to have LDFLAGS='-L/opt/local/lib -lgsl -lgslcblas'.) Now compiling should be easy:

sudo make install

and ikarus should be located in /usr/local/bin/ikarus. Now tell ikarus where to find church by adding to your .profile or .bash_profile or whatever the right file for your shell is:

export IKARUS_LIBRARY_PATH=.:/path/to/mit-church:$IKARUS_LIBRARY_PATH

now go to your mit-church folder and call

ikarus tests/

Ubuntu 8.04.2, Native or Virtualized (from OS X using VMWare)

If you would prefer not to install MacPorts or development tools on your Mac OS X, you can virtualize a Linux installation, e.g., using VMWare's Fusion 2.0.4. Download an ISO disk image of the Ubunto 8.04.2 LTS installation and create a virtual machine (see, e.g., VMWare Tools aren't necessary for the steps below.)

From a fresh installation of Ubuntu, native or virtualized, install the necessary development tools:

sudo apt-get install build-essential autoconf m4 automake perl
sudo apt-get install libgsl0-dev libffi4-dev libgmp3-dev
sudo apt-get install subversion

Download MIT-Church

cd ~
svn checkout mit-church/

Then download Ikarus:

sudo apt-get install bzr
bzr checkout --lightweight

and compile it:

./configure --enable-libffi
sudo make install

You will want to update the library path to point to the church installation in your bash scripts:

echo export IKARUS_LIBRARY_PATH=~/mit-church:$IKARUS_LIBRARY_PATH >> ~/.bashrc

You should then test the install

cd ~/mit-church
ikarus tests/


Fedora uses "yum" as its application manager. You will need to have root access to issue the following commands (possibly by using sudo).

yum install gsl gmp libffi

You may need to install the developer versions too.

yum install gsl-devel gmp-devel libffi-devel

In order to get the latest version of Ikarus you will need to get the Bazaar CVS system.

yum install bzr

In order to download Ikarus, use the standard commands

cd /usr/local
bzr checkout --lightweight
./configure --enable-libffi CFLAGS=-I/usr/lib/libffi-3.0.5/include
make install

Note that the CFLAGS command is pointing to the directory where ffi.h resides. Make sure to set this directory to the appropriate location.

As a user account, you can then access the MIT-Church repository:

svn checkout --username anonymous --password anonymous mit-church

This last command will download MIT-Church and place it in the subdirectory mit-church (this last argument can be changed as necessary). The "trunk" is the latest version of the system.

Finally you will need to set up your library path for Ikarus so that it finds MIT-Church.

echo export IKARUS_LIBRARY_PATH=~/mit-church:$IKARUS_LIBRARY_PATH >> ~/.bashrc

You will need to restart your shell to see the effects of the previous line (or you can issue the export command directly). Finally, you can verify that everything has worked by running:

ikarus mit-church/tests/


Microsoft Windows using Cygwin

These instructions assume you have the following installed from within your Cygwin environment: make, bison, gcc3 . 'libffi' was the only necessary library that could not be successfully installed using Cygwin's package download system. 'libgmp' sometimes causes problems using Cygwin's package install.

0) Using Cygwin setup (view "full" list) install: bzr, gsl, libgmp . (if you have problems with 'libgmp', download the tar from and manually install. Untar it, navigate to the new directory, and, as root:)

make install
make check

Skip this step if you have already installed them.

1) Install 'libffi': download from Untar it, navigate to the new directory:

make install

2) Get the development snapshot of Ikarus:

bzr checkout --lightweight

Untar it, navigate to the new directory, and, as root:

./configure --enable-libffi CFLAGS=-I/path/to/libffi-3.0.8/include    (make the path to 'libffi' absolute)
make install

You may receive error messages regarding "multiple target patterns" when reading some ffi.po file. In this case, you can manually edit the ffi.po file so that it points at your libffi library - mine somehow got pointed elsewhere which caused the errors. And remember, Cygwin imposes a modified file structure, so C:\... may have to be replaced by /cygdrive/c/...

3) Get the church release from the svn repository (all one line):

svn checkout --username anonymous --password anonymous mit-church

NOTE: you must use 'svn' from within cygwin so that the symbolic links are acquired properly. TortoiseSVN is known to fail at properly retrieving them.

4) Point ikarus to mit-church using a global variable:


5) Make sure that it works:

ikarus --r6rs-script tests/

The README contains info about custom Church script paths among other issues!

Using PLT Scheme

MIT Athena (MIT-only)

I added the following lines to my ~/.cshrc.mine file:

add drscheme
add gnusl 
setenv PLTCOLLECTS /afs/

In addition you have to modify mit-church/church/external/ to include /mit/gnusl/lib in the paths that are searched for the gnu scientific libraries:


at the appropriate places.


If your installation of GSL is in a non-standard location, edit "church/external/" to point to your installation.

If you want to run Church from an arbitrary location (i.e. not the base directory), then the path to your church directory must be in the library search path of your scheme implementation. (Church can then find libraries in the include directory.)

Personal tools