Installing Snow

The Snow framework is available in several implementations. Specialized Snow implementations are tailor made for a given Scheme system. The generic Snow implementation works on most Scheme systems but it does not achieve the same level of integration with the host Scheme system. It provides features which are helpful for testing portability of newly written packages and it is useful when a specialized implementation of Snow is not yet available for the host Scheme system.

Specialized Snow implementations

The specialized Snow implementations are maintained elsewhere. Some Scheme systems have builtin support for the Snow framework while others need a separate package to be configured and installed.

Please see the Links for a list of the known specialized Snow framework implementations.

Generic Snow implementation

The generic Snow works on several Scheme systems including Bigloo, Chez, Chicken, Gambit, Gauche, Guile, Kawa, MzScheme, Scheme48, SCM, Scsh, and STklos. Work is underway to support more Scheme systems and to improve the level of integration with the host Scheme system.

Prerequisites

By design, the generic Snow framework is implemented using the Snow framework. It is mainly written in Scheme and has few dependencies on the host Scheme system and host operating system. It does not depend on utility programs of the host operating system during the normal course of operation but the installation script does depend on a few Unix utilities such as sed and make. To install on Windows the Cygwin and MSYS/MinGW systems can be used.

It is assumed that at least one of the supported Scheme systems is installed on the target computer. The installation script will automatically detect the installed Scheme systems and perform a self test to see which ones are compatible with Snow. When there are compatibility problems the script will flag any Scheme system that should be reinstalled with a newer version. The --install-hosts option of the configure script can be used to automatically install supported Scheme systems when needed.

Steps

  1. Download the most recent version of Snow:
  2. Run the configure script followed by "make install". For example:

       % gunzip -c snow-generic-v1_1_2.tgz | tar xf -
       % cd snow-generic/v1.1.2
       % ./configure --site-root=$HOME/.snow-site --install-hosts=yes
       % make install
       % export PATH=$HOME/.snow-site/current/bin:$PATH
       % ./test.scm
       % SNOW_HOST=guile ./test.scm
       % SNOW_HOST=all ./test.scm
    

Options

The configure script accepts these options:

--site-root=dir
use dir as the directory where Snow stores site-wide packages and the Snow executables (snow, snowman, etc)
--user-root=dir
use dir as the subdirectory of $HOME where Snow stores user specific packages and configuration files (including the certificates for signing and verifying packages)
--host=host
use host as the default host Scheme system (host is one of bigloo, chez, chicken, gambit, ...)
--install-hosts=yes-or-no
force the automatic installation of the host Scheme systems supported by the generic Snow that are not currently installed or whose version is too old to support the generic Snow

The defaults are:

site-root = /usr/share/snow
user-root = .snow
host = will be requested interactively
install-hosts = no

The --site-root option is useful to experiment with Snow before performing a site-wide installation (which normally requires root privileges for writing into /usr/share).

The --install-hosts option is useful to test the portability of newly written packages, particularly in conjunction with the SNOW_HOST=all option.

Maintenance

After an initial manual installation of the generic Snow, subsequent runs of the configure script will default the configure options to the initial configure options. New versions can be installed by using the snowman package management program with the command "snowman install snow-generic". When a new version is installed, it is necessary to reinstall all non-core Snow packages because the new version of the generic Snow implementation may use a different filesystem structure for installed packages.