Installation

Initial installation of a new utility provides the first, lasting impression of how well the software is likely to perform. From the start, SCons has made clean installation a priority.

Version Control

Distributing an application like SCons that depends on a package normally found in a library poses a problem. If the scons script and the SCons Build Engine are installed separately, it could be easy to introduce a version mismatch between the Build Engine installed in /usr/lib/python*/site-packages and the scons script installed in /usr/bin. Such a mismatch could possible mean exceptions that prevent builds, or even worse, silently unreliable builds.

To reduce the possibility of a version mismatch, the scons script looks first for its imported modules in /usr/lib/scons-{version}/, then in /usr/lib/scons/, and then in the normal PYTHONPATH locations, including /usr/lib/python*/site-packages). Searching in a version-specific library directory first makes it convenient to install and use multiple side-by-side versions of SCons, which is sometimes important when verifying that a new version does not introduce any errors into the local build process. Searching next in an SCons-specific library directory makes it convenient for other software to find the SCons Build Engine without having to worry about installing separate copies for multiple versions of Python.

Packages

SCons is currently distributed in the following packages:

Table 1.

scons-version.tar.gz

The traditional .tar.gz file, installable by running setup.py.

scons-version.noarch.rpm

An RPM file for typical installation.

scons-version_all.deb

A Debian package.

scons-version.win32.exe

A Windows installer.

scons-version.src.rpm

A source RPM file.

scons-src-version.tar.gz

A tarball of the SCons source tree, including the full set of regression tests.

Like other software written in Python, SCons benefits greatly from the tremendous effort put into the distutils by Greg Ward and others. These take care of 90% of the work by making it almost trivial to generate the appropriate RPM files, Debian packages, and Windows installer.

Default Builder Objects

As part of the installation process, SCons runs a set of scripts that look for popular compilers and other tools and set up appropriate default Builder objects for the tools found. These Builder objects are then used to initialize the default construction environment values.

Default Scanner Objects

Additionally, SCons comes with a stock set of Scanner objects for the various file types that it supports out of the box. Any unusal Scanner objects required for a specific tool will be detected at installation time and associated with the appropriate Builder object for the tool.