SCons release 0.91, the second SCons beta release, is now available for download. SCons is a software construction tool (build tool, or substitute for Make) implemented in Python, based on the winning design in the Software Carpentry build tool competition (in turn based on the Cons build tool). This release most notably adds support for building from Qt source (.ui) files and SWIG (.i) files.
IMPORTANT: Release 0.91 contains the following interface changes:
- The spelling of the "validater" Builder option has been corrected to "validator". The old spelling still works, but generates a warning.
- The SConscript() function no longer automatically splits its argument on white space into a list of SConscript file names. You must now explicitly enclose the argument in the Split() function (or do something similar) if you want that behavior.
See the release notes for more information about these changes.
This release adds the following features:
- SWIG support has been added.
- Qt support for processing .ui files into .c files has been added.
- You may now specify a list of tools when calling Environment.Copy().
- A new "sconsign" script can be used to dump the contents of .sconsign files.
- A new $MAXLINELENGTH construction variables allows control of when a temporary file is used for long link lines on Win32.
- A Builder emitter can now be a dictionary that maps different source file types (suffixes) to separate emitter functions.
- Builder "prefix" and "suffix" arguments can now be callables that return generated strings, or dictionaries that map different source file types (suffixes) to separate prefix or suffix values.
- When executing a Win32 long link line in a temporary file, SCons now also prints the long line being executed through the file.
- A new $CPPDEFINES variables supports defining platform-independent C preprocessor command-line arguments.
- SCons now uses the C++ compiler only if there are any object files from C++ sources being linked, and otherwise invokes the C compiler.
The following fixes have been added:
- Python Value Nodes now work when using timestamps for signatures.
- SCons now creates a .hpp file when the yacc file ends in .yy and the -d YACC flag is used.
- SCons now correctly deduces target prefixes from source files in subdirectories in all tested cases.
- When CVS checkout errors occur, SCons no longer creates zero-length files by mistake.
- All Actions now print correctly when using the --cache-show option.
- The Command() Builder can now take a directory as a source.
- SConscript file or path names with white space now work.
- The Microsoft Visual C++ /TP argument has been added to the default $CXXFLAGS value, so it can compile all the different C++ suffixes.
- A problem with checking whether certain Node types are up-to-date has been fixed.
- The LIB construction variable is now initialized for the Intel compiler (icl).
- The g++ and gcc Tool specifications now actually use g++ and gcc in preference to c++ and cc.
- SCons configuration tests no longer hang if a piped command generates more output than can be read in single buffer.
Error handling has been improved as follows:
- Handling Python errors in SConscript files is now more informative.
- SCons now reports the target being built in various error conditions that prevent the build Action from being executed.
- Incorrect arguments to the Install() function generates a better error message.
- A stack trace is now generated if the internal task controller catches an exception.
Performance has been improved as follows:
- A default environment is created when needed, not every invocation.
- Internal maintenance of various lists of dependencies has been sped up by using a dictionary to search for duplication.
- The list of dependent children is now calculated once and cached.
- The -debug=pdb option now invokes the Python debugger directly, not by recursively invoking Python+SCons.
The following changes have been made to the SCons packaging:
- An incorrect distutils warning message when using --prefix= option has been removed.
- Building the SCons .rpm package should no longer depend on the installation location of the local distutils.
The documentation has been improved:
- The help output generated by "scons -H" has been tightened.
- An explanation about SCons not propagating the external environment has been added to the introduction.
- The AlwaysBuild() function is now better explained.
- The SConscript function's "dirs" and "name" keywords are now documented.
- Typos have been fixed.