A new SCons checkpoint release, 0.97.0d20070918, is now available at
the SCons download page:
http://www.scons.org/download.php
A SCons "checkpoint release" is intended to provide early access to new
features so they can be tested in the field before being released for
adoption by other software distributions.
Note that a checkpoint release is developed using the same test-driven
development methdology as all SCons releases. Existing SCons
functionality should all work as it does in previous releases (except for
any changes identified in the release notes) and early adopters should be
able to use a checkpoint release safely for production work with existing
SConscript files. If not, it represents not only a bug in SCons but
also a hole in the regression test suite, and we want to hear about it.
New features may be more lightly tested than in past releases, especially
as concerns their interaction with all of the other functionality
in SCons. We are especially interested in hearing bug reports about
new functionality.
We do not recommend that downstream distributions (Debian, Fedora,
etc.) package a checkpoint release, mainly to avoid confusing the "public"
release numbering with the long checkpoint release names.
SPECIAL NOTE: This release contains a significant internal refactoring
of how SCons stores information for deciding if a file is up-to-date.
This change will cause rebuilds when run in a tree built by an earlier
version of SCons, but should otherwise handle the upgrade gracefully.
Please see the Release Notes for details. We are very interested in
reports of any problems that seem due to this change.
Here is a summary of the changes since 0.97.0d20070809:
NEW FUNCTIONALITY
- New env.Decider() and Node.Decider() methods allow more
straightforward configuration of up-to-date decision-making, includng
use of arbitrary functions to decide if a given dependency has changed
since the last time a target was built.
- Each target now has an implicit dependency on the external command(s)
used to build it, as found by searching env['ENV']['PATH'] for the
first argument on each executed command line.
- A new $IMPLICIT_COMMAND_DEPENDENCIES construction variable can
disable the new automatic implicit dependency on executed commands.
- A new Progress() function supports the ability to display progress
while building targets.
- A new $JAVABOOTCLASSPATH variable specifies directories to be passed
to the javac -bootclasspath option.
- The Intel C compiler is now supported on Windows64.
CHANGED/ENHANCED EXISTING FUNCTIONALITY
- env.CacheDir() can now be set per construction environment.
- The CacheDir() function now sets an overridable global default.
- The Return() function now stops processing the SConscript file and
returns immediately. A new "stop=" keyword argument can be set to
False to preserve the old behavior.
- Configure actions (while reading SConscript files) are no longer
executed when cleaning (-c) or getting help (-h or -H).
- When Cloning a construction environment, any configured variables
are set before applying tools.
- A new "ensure_suffix" keyword to Builder() definitions ensures the
configured suffix will be added to targets even if the target already
has a different suffix.
- On SGI IRIX, $SHCXX now uses $CXX by default (like other tools).
FIXES
- The wix Tool module no longer dies when faced with null entries in
the external $PATH variable.
- Use of exitstatfunc on an Action has been fixed..
- SCons now avoids race conditions with same-named files and directory
creation when pushing copies of files to CacheDir().
- SCons now recognizes $ as a valid character in Java class names.
- Auxiliary files generated by some LaTeX packages that do not end in
".aux" now also get deleted by scons -c.
- ParseConfig(), MergeFlags() and ParseFlags() now handle output
from a *config command with quoted path names that contain spaces,
when using Python 2.3 or later.
- When a file gets added to a directory, the directory now gets
re-scanned for the new implicit dependency.
- A file that's specified multiple times in a target list so no longer
causes some dependency Nodes to "disappear" during the dependency
graph walk when the -j option is used.
DOCUMENTATION
- Install() and InstallAs() have been moved from the list of functions
to the list of Builders.
- All man page function examples now begin with "Example:" or "Examples:".
Thanks to Carsten Koch, Tzvetan Mikov, Gary Oberbrunner, Sohail
Somani, Matthias Troffaes, Greg Ward and Christoph Wiedemann for their
contributions to this release.