ANNOUNCE: SCons 0.93 releases User's Guide, adds usability enhancements
knight at baldmt.com
Thu Oct 23 17:05:12 CEST 2003
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.93 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.93 contains the following interface changes:
- Construction variables may now be expanded anywhere within an
argument to a Builder or a construction environment method,
not just in specific places like file prefixes and suffixes.
This may cause variable interpolation if a file name or argument
contained a '$' (dollar sign).
- The long-obsolete GetCommandHandler() and SetCommandHandler()
functions have been removed.
- The ParseConfig() global function has been deprecated in favor
of the new env.ParseConfig() method. The global function will
be removed in some future release.
See the release notes for more information about these changes.
This release adds the following features:
- SCons now supports calling almost all functionality either
through a global function or a construction environment method:
- The following global functions have now had corresponding
construction environment methods added:
Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
BuildDir(), CacheDir(), Clean(), Configure(), Default(),
EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
Exit(), Export(), FindFile(), GetBuildPath(), GetOption(),
Help(), Import(), Literal(), Local(), Platform(), Repository(),
Scanner(), SConscriptChdir(), SConsignFile(), SetOption(),
SourceSignatures(), Split(), TargetSignatures(), Tool(), Value().
- The following construction environment methods have now had
corresponding global functions added:
AlwaysBuild(), Command(), Depends(), Ignore(), Install(),
InstallAs(), Precious(), SideEffect() and SourceCode().
- The following default Builders have now had corresponding global
CFile(), CXXFile(), DVI(), Jar(), Java(), JavaH(), Library(),
M4(), MSVSProject(), Object(), PCH(), PDF(), PostScript(),
Program(), RES(), RMIC(), SharedLibrary(), SharedObject(),
StaticLibrary(), StaticObject(), Tar(), TypeLibrary() and Zip().
- Package management tools on AIX and Solaris are now used to find
where the C and C++ compilers are installed.
- New $CCVERSION and $CXXVERSION variables record the compiler
version for many C and C++ compilers.
- A new $JARCHDIR variable supports changing to a directory using
the jar -C option.
- SCons now detect Java manifest files when using jar, and
specifies them using the jar m flag.
- Directories may now be used as Builder sources, and correctly
trigger a rebuild when any file underneath the directory changes.
- A new SConsignFile() function allows configuration of a single
file to hold all build signatures, instead of a separate
.sconsign file in each directory.
- The CheckHeader(), CheckCHeader(), CheckCXXHeader() and
CheckLibWithHeader() configure checks can now take a list of
header files when more than one #include line is necessary.
- SCons can now decide if a .tex file is TeX or LaTeX, and will
re-run latex or run bibtex as needed.
- Directories can now be the targets, sources or dependencies of the
Depends(), Ignore(), Precious() and SideEffect() methods.
- The env.WhereIs() method can now take explicit "path" and
The following fixes have been added:
- .S, .spp and .SPP assembly-language files are now properly
scanned for C-preprocessor dependencies.
- The scons.py and scons.bat files now also look for the SCons
modules in the site-packages directory as well.
- SCons now properly re-scans dependencies in generated or
installed header files.
- The -Q option now only suppresses the "Reading" and "Building"
progress messages; it was incorrectly suppressing other messages
- The C scanner now finds dependencies when there is no space
between the #include and the opening double quote or angle bracket.
- EnsurePythonVersion() now handles alphanumeric Python version strings.
- The env.Append() method now suppresses null values when appropriate.
- ParseConfig() now appends values properly regardless of the initial
values of $CCFLAGS, $CPPPATH, $LIBPATH and $LIBS.
- If there were any build errors, the final progress message now says
"...terminated because of errors" instead "...done building targets."
- "rm" on Win32 systems is only used if Cygwin Python is being used.
- Qt is now properly detected on the local system in all cases.
- Configure checks now support BooleanType as a legal return value.
- Attempts to call a Configure check from within a Builder function
now generate an error message.
- Builders can now be called when a Configure context is open.
- Trying to use the -j option under Python versions without parallel
build support (threading) now issues a warning and carries on.
Performance has been improved as follows:
- A new thread pool implementation improves parallel build
performance and handling of keyboard interrupts.
The documentation has been improved:
- The first release of the SCons User's Guide is now available multiple
formats. Follow the appropriate link for your desired format from
the SCons documentation page at:
- The lists of global functions and construction environment methods
in the man page have been combined and alphabetized.
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 J.T. Conklin, Charles Crain, Christian Engel, Sergey
Fogel, Ralf W. Grosse-Kunstleve, Stephen Kennedy, John Johnson, Clark
McGrew, Bram Moolenaar, Gary Oberbrunner, Gerard Patel, Marko Rauhamaa,
Anthony Roach and Christoph Wiedemann for their contributions to this
On behalf of the SCons team,
More information about the Python-list