SCons is a software construction tool (build tool, or make tool) written in Python. It is based on the design which won the Software Carpentry build tool competition in August 2000.
Version 0.12 of SCons has been released and is available for download from the SCons web site:
Or through the download link at the SCons project page at SourceForge:
RPM and Debian packages and a Win32 installer are all available, in addition to the traditional .tar.gz and .zip files.
WHAT'S NEW IN THIS RELEASE?
IMPORTANT: Release 0.12 contains the following interface changes: - SCons now changes to the directory in which an SConscript file resides while reading that SConscript file.
See the release notes for more information about this change.
This release adds the following features: - Support has been added for fetching source files from the SCCS, RCS, CVS, Perforce and BitKeeper source code management systems. - A separate src_dir argument to SConscript() allows explicit specification of where source files can be found. - Current Builder-based command generators can be replaced by more flexible generators based on callable construction variables. - The Install() and InstallAs() builders now copy files. This behavior is now configurable via the INSTALL construction variable. - SCons now issues a warning if you try to use the reserved variable names TARGET, TARGETS, SOURCE or SOURCES. - Builders for Tar and Zip files have been added. - SCons now supports an explicit Exit() function for terminating early. - The masm tool now supports SharedObject() builds.
This release removes the following deprecated features: - Builder objects no longer support a "name" argument. - The Environment.Update() method has been removed.
The following fixes have been added: - The string value of a File or Dir node now rturns a path relative to the calling SConscript file's directory, not the top-level directory. - Commands that expand the third or later argument from $TARGET, $TARGETS, $SOURCE or $SOURCES now calculate signatures properly. - Exceptions thrown by Scanners are no longer silently eaten. - A built file may no longer be pushed to a CacheDir() with a signature of None. - Built files are no longer copied to a CacheDir() if they're already there. - Files copied to a CacheDir() are now written to a temporary file and renamed, to avoid corrupt partial copies. - The -U option with no Default() targets no longer throws an exception. - The -u option, when used from a source directory with no local targets, will now build corresponding targets in any associated BuildDir()s. - The WhereIs() function now returns normalized path names. - An Aliased source that doesn't exist no longer generates an incorrect dependency-cycle error.
Performance has been improved as follows: - The internal to_String() function has been sped up.
The documentation has been improved: - Clearer explanation has been added of how to export variables to a subsidiary SConscript file. - Bugs in various Tool examples have been fixed. - The man page now correctly describes that the -f option doesn't change to the directory in which the SConstruct file lives.
Distinctive features of SCons include:
- a global view of all dependencies; no multiple passes to get everything built properly - configuration files are Python scripts, allowing the full use of a real scripting language to solve difficult build problems - a modular architecture allows the SCons Build Engine to be embedded in other Python software - the ability to scan files for implicit dependencies (#include files); - improved parallel build (-j) support that provides consistent build speedup regardless of source tree layout - use of MD5 signatures to decide if a file has really changed; no need to "touch" files to fool make that something is up-to-date - easily extensible through user-defined Builder and Scanner objects - build actions can be Python code, as well as external commands
An scons-users mailing list is available for those interested in getting started using SCons. You can subscribe at:
Alternatively, we invite you to subscribe to the low-volume scons-announce mailing list to receive notification when new versions of SCons become available:
Special thanks to Charles Crain, Lachlan O'Dea, Jeff Petkau and Anthony Roach for their contributions to this release.
On behalf of the SCons team,