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: 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 &consenv; 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.