From Benoit Belley:
- Fix the --keep-going flag so it builds all possible targets even when
a later top-level target depends on a child that failed its build.
- Fix being able to use $PDB and $WINDWOWS_INSERT_MANIFEST together.
- Don't crash if un-installing the Intel C compiler leaves left-over,
dangling entries in the Windows registry.
- Improve support for non-standard library prefixes and suffixes by
stripping all prefixes/suffixes from file name string as appropriate.
- Reduce the default stack size for -j worker threads to 256 Kbytes.
Provide user control over this value by adding --stack-size and
--warn=stack-size options, and a SetOption('stack_size') function.
- Fix a crash on Linux systems when trying to use the Intel C compiler
and no /opt/intel_cc_* directories are found.
- Improve using Python functions as actions by incorporating into
a FunctionAction's signature:
- literal values referenced by the byte code.
- values of default arguments
- code of nested functions
- values of variables captured by closures
- names of referenced global variables and functions
- Fix the closing message when --clean and --keep-going are both
used and no errors occur.
- Add support for the Intel C compiler on Mac OS X.
- Speed up reading SConscript files by about 20% (for some
configurations) by: 1) optimizing the SCons.Util.is_*() and
SCons.Util.flatten() functions; 2) avoiding unnecessary os.stat()
calls by using a File's .suffix attribute directly instead of
stringifying it.
From Jérôme Berger:
- Have the D language scanner search for .di files as well as .d files.
- Add a find_include_names() method to the Scanner.Classic class to
abstract out how included names can be generated by subclasses.
- Allow the D language scanner to detect multiple modules imported by
a single statement.
From Konstantin Bozhikov:
- Support expansion of construction variables that contain or refer
to lists of other variables or Nodes within expansions like $CPPPATH.
- Change variable substitution (the env.subst() method) so that an
input sequence (list or tuple) is preserved as a list in the output.
From David Cournapeau:
- Add a CheckDeclaration() call to configure contexts.
- Improve the CheckTypeSize() code.
- Add a Define() call to configure contexts, to add arbitrary define
lines to a generated configure header file.
- Add a "gfortran" Tool module for the GNU F95/F2003 compiler.
- Avoid use of -rpath with the Mac OS X linker.
- Add comment lines to the generated config.h file to describe what
the various define/undef lines are doing.
From Steven Knight:
- Support the ability to subclass the new-style "str" class as input
to Builders.
- Improve the performance of our type-checking by using isinstance()
with new-style classes.
- Fix include (and other $*PATH variables searches) of files with
absolute path names. Don't die if they don't exist (due to being
ifdef'ed out or the like).
- Fix --interactive mode when Default(None) is used.
- Fix --debug=memoizer to work around a bug in base Python 2.2 metaclass
initialization (by just not allowing Memoization in Python versions
that have the bug).
- Have the "scons-time time" subcommand handle empty log files, and
log files that contain no results specified by the --which option.
- Fix the max Y of vertical bars drawn by "scons-time --fmt=gnuplot".
- On Mac OS X, account for the fact that the header file generated
from a C++ file will be named (e.g.) file.cpp.h, not file.hpp.
- Fix floating-point numbers confusing the Java parser about
generated .class file names in some configurations.
- Document (nearly) all the values you can now fetch with GetOption().
- Fix use of file names containing strings of multiple spaces when
using ActionFactory instances like the Copy() or Move() function.
- Fix a 0.97 regression when using a variable expansion (like
$OBJSUFFIX) in a source file name to a builder with attached source
builders that match suffix (like Program()+Object()).
- Have the Java parser recognize generics (surrounded by angle brackets)
so they don't interfere with identifying anonymous inner classes.
- Avoid an infinite loop when trying to use saved copies of the
env.Install() or env.InstallAs() after replacing the method
attributes.
- Improve the performance of setting construction variables.
- When cloning a construction environment, avoid over-writing an
attribute for an added method if the user explicitly replaced it.
- Add a warning about deprecated support for Python 1.5, 2.0 and 2.1.
- Fix being able to SetOption('warn', ...) in SConscript files.
- Add a warning about env.Copy() being deprecated.
- Add warnings about the --debug={dtree,stree,tree} options
being deprecated.
- Add VariantDir() as the first step towards deprecating BuildDir().
Add the keyword argument "variant_dir" as the replacement for
"build_dir".
- Add warnings about the {Target,Source}Signatures() methods and
functions being deprecated.
From Rob Managan:
- Enhance TeX and LaTeX support to work with BuildDir(duplicate=0).
- Re-run LaTeX when it issues a package warning that it must be re-run.
From Leanid Nazdrynau:
- Have the Copy() action factory preserve file modes and times
when copying individual files.
From Jan Nijtmans:
- If $JARCHDIR isn't set explicitly, use the .java_classdir attribute
that was set when the Java() Builder built the .class files.
From Greg Noel:
- Document the Dir(), File() and Entry() methods of Dir and File Nodes.
- Add the parse_flags option when creating Environments
From Gary Oberbrunner:
- Make File(), Dir() and Entry() return a list of Nodes when passed
a list of names, instead of trying to make a string from the name
list and making a Node from that string.
- Fix the ability to build an Alias in --interactive mode.
- Fix the ability to hash the contents of actions for nested Python
functions on Python versions where the inability to pickle them
returns a TypeError (instead of the documented PicklingError).
From Jonas Olsson:
- Fix use of the Intel C compiler when the top compiler directory,
but not the compiler version, is specified.
- Handle Intel C compiler network license files (portsystem).
From Jim Randall:
- Fix how Python Value Nodes are printed in --debug=explain output.
From Adam Simpkins:
- Add a --interactive option that starts a session for building (or
cleaning) targets without re-reading the SConscript files every time.
- Fix use of readline command-line editing in --interactive mode.
- Have the --interactive mode "build" command with no arguments
build the specified Default() targets.
- Fix the Chmod(), Delete(), Mkdir() and Touch() Action factories to
take a list (of Nodes or strings) as arguments.
From Vaclav Smilauer:
- Fix saving and restoring an Options value of 'all' on Python
versions where all() is a builtin function.
From Daniel Svensson:
- Code correction in SCons.Util.is_List().
From Ben Webb:
- Support the SWIG %module statement with following modifiers in
parenthese (e.g., '%module(directors="1")').
RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600
From Benoit Belley:
- Fix occasional spurious rebuilds and inefficiency when using
--implicit-cache and Builders that produce multiple targets.
- Allow SCons to not have to know about the builders of generated
files when BuildDir(duplicate=0) is used, potentially allowing some
SConscript files to be ignored for smaller builds.
From David Cournapeau:
- Add a CheckTypeSize() call to configure contexts.
From Ken Deeter:
- Make the "contents" of Alias Nodes a concatenation of the children's
content signatures (MD5 checksums), not a concatenation of the
children's contents, to avoid using large amounts of memory during
signature calculation.
From Malte Helmert:
- Fix a lot of typos in the man page and User's Guide.
From Geoffrey Irving:
- Speed up conversion of paths in .sconsign files to File or Dir Nodes.
From Steven Knight:
- Add an Options.UnknownOptions() method that returns any settings
(from the command line, or whatever dictionary was passed in)
that aren't known to the Options object.
- Add a Glob() function.
- When removing targets with the -c option, use the absolute path (to
avoid problems interpreting BuildDir() when the top-level directory
is the source directory).
- Fix problems with Install() and InstallAs() when called through a
clone (of a clone, ...) of a cloned construction environment.
- When executing a file containing Options() settings, add the file's
directory to sys.path (so modules can be imported from there) and
explicity set __name__ to the name of the file so the statement's
in the file can deduce the location if they need to.
- Fix an O(n^2) performance problem when adding sources to a target
through calls to a multi Builder (including Aliases).
- Redefine the $WINDOWSPROGMANIFESTSUFFIX and
$WINDOWSSHLIBMANIFESTSUFFIX variables so they pick up changes to
the underlying $SHLIBSUFFIX and $PROGSUFFIX variables.
- Add a GetBuildFailures() function that can be called from functions
registered with the Python atexit module to print summary information
about any failures encountered while building.
- Return a NodeList object, not a Python list, when a single_source
Builder like Object() is called with more than one file.
- When searching for implicit dependency files in the directories
in a $*PATH list, don't create Dir Nodes for directories that
don't actually exist on-disk.
- Add a Requires() function to allow the specification of order-only
prerequisites, which will be updated before specified "downstream"
targets but which don't actually cause the target to be rebuilt.
- Restore the FS.{Dir,File,Entry}.rel_path() method.
- Make the default behavior of {Source,Target}Signatures('timestamp')
be equivalent to 'timestamp-match', not 'timestamp-newer'.
- Fix use of CacheDir with Decider('timestamp-newer') by updating
the modification time when copying files from the cache.
- Fix random issues with parallel (-j) builds on Windows when Python
holds open file handles (especially for SCons temporary files,
or targets built by Python function actions) across process creation.
From Maxim Kartashev:
- Fix test scripts when run on Solaris.
From Gary Oberbrunner:
- Fix Glob() when a pattern is in an explicitly-named subdirectory.
From Philipp Scholl:
- Fix setting up targets if multiple Package builders are specified
at once.
RELEASE 0.97.0d20070918 - Tue, 18 Sep 2007 10:51:27 -0500
From Steven Knight:
- Fix the wix Tool module to handle null entries in $PATH variables.
- Move the documentation of Install() and InstallAs() from the list
of functions to the list of Builders (now that they're implemented
as such).
- Allow env.CacheDir() to be set per construction environment. The
global CacheDir() function now sets an overridable global default.
- Add an env.Decider() method and a Node.Decider() method that allow
flexible specification of an arbitrary function to decide if a given
dependency has changed since the last time a target was built.
- Don't execute Configure actions (while reading SConscript files)
when cleaning (-c) or getting help (-h or -H).
- Add to each target an implicit dependency on the external command(s)
used to build the target, as found by searching env['ENV']['PATH']
for the first argument on each executed command line.
- Add support for a $IMPLICIT_COMMAND_DEPENDENCIES construction
variabe that can be used to disable the automatic implicit
dependency on executed commands.
- Add an "ensure_suffix" keyword to Builder() definitions that, when
true, will add the configured suffix to the targets even if it looks
like they already have a different suffix.
- Add a Progress() function that allows for calling a function or string
(or list of strings) to display progress while walking the DAG.
- Allow ParseConfig(), MergeFlags() and ParseFlags() to handle output
from a *config command with quoted path names that contain spaces.
- Make the Return() function stop processing the SConscript file and
return immediately. Add a "stop=" keyword argument that can be set
to False to preserve the old behavior.
- Fix use of exitstatfunc on an Action.
- Introduce all man page function examples with "Example:" or "Examples:".
- When a file gets added to a directory, make sure the directory gets
re-scanned for the new implicit dependency.
- Fix handling a file that's specified multiple times in a target
list so that it doesn't cause dependent Nodes to "disappear" from
the dependency graph walk.
From Carsten Koch:
- Avoid race conditions with same-named files and directory creation
when pushing copies of files to CacheDir().
From Tzvetan Mikov:
- Handle $ in Java class names.
From Gary Oberbrunner:
- Add support for the Intel C compiler on Windows64.
- On SGI IRIX, have $SHCXX use $CXX by default (like other platforms).
From Sohail Somani:
- When Cloning a construction environment, set any variables before
applying tools (so the tool module can access the configured settings)
and re-set them after (so they end up matching what the user set).
From Matthias Troffaes:
- Make sure extra auxiliary files generated by some LaTeX packages
and not ending in .aux also get deleted by scons -c.
From Greg Ward:
- Add a $JAVABOOTCLASSPATH variable for directories to be passed to the
javac -bootclasspath option.
From Christoph Wiedemann:
- Add implicit dependencies on the commands used to build a target.
RELEASE 0.97.0d20070809 - Fri, 10 Aug 2007 10:51:27 -0500
From Lars Albertsson:
- Don't error if a include line happens to match a directory
somewhere on a path (like $CPPPATH, $FORTRANPATH, etc.).
From Mark Bertoglio:
- Fix listing multiple projects in Visual Studio 7.[01] solution files,
including generating individual project GUIDs instead of re-using
the solution GUID.
From Jean Brouwers:
- Add /opt/SUNWspro/bin to the default execution PATH on Solaris.
From Allan Erskine:
- Only expect the Microsoft IDL compiler to emit *_p.c and *_data.c
files if the /proxy and /dlldata switches are used (respectively).
From Steven Knight:
- Have --debug=explain report if a target is being rebuilt because
AlwaysBuild() is specified (instead of "unknown reasons").
- Support {Get,Set}Option('help') to make it easier for SConscript
files to tell if a help option (-h, --help, etc.) has been specified.
- Support {Get,Set}Option('random') so random-dependency interaction
with CacheDir() is controllable from SConscript files.
- Add a new AddOption() function to support user-defined command-
line flags (like --prefix=, --force, etc.).
- Replace modified Optik version with new optparse compatibility module
for command line processing in Scripts/SConsOptions.py
- Push and retrieve built symlinks to/from a CacheDir() as actual
symlinks, not by copying the file contents.
- Fix how the Action module handles stringifying the shared library
generator in the Tool/mingw.py module.
- When generating a config.h file, print "define HAVE_{FEATURE} 1"
instad of just "define HAVE_{FEATURE}", for more compatibility
with Autoconf-style projects.
- Fix expansion of $TARGET, $TARGETS, $SOURCE and $SOURCES keywords in
Visual C/C++ PDB file names.
- Fix locating Visual C/C++ PDB files in build directories.
- Support an env.AddMethod() method and an AddMethod() global function
for adding a new method, respectively, to a construction environment
or an arbitrary object (such as a class).
- Fix the --debug=time option when the -j option is specified and all
files are up to date.
- Add a $SWIGOUTDIR variable to allow setting the swig -outdir option,
and use it to identify files created by the swig -java option.
- Add a $SWIGPATH variable that specifies the path to be searched
for included SWIG files, Also add related $SWIGINCPREFIX and
$SWIGINCSUFFIX variables that specify the prefix and suffix to
be be added to each $SWIGPATH directory when expanded on the SWIG
command line.
- More efficient copying of construction environments (mostly borrowed
from copy.deepcopy() in the standard Python library).
- When printing --tree=prune output, don't print [brackets] around
source files, only do so for built targets with children.
- Fix interpretation of Builder source arguments when the Builder has
a src_suffix *and* a source_builder and the argument has no suffix.
- Fix use of expansions like ${TARGET.dir} or ${SOURCE.dir} in the
following construction variables: $FORTRANMODDIR, $JARCHDIR,
$JARFLAGS, $LEXFLAGS, $SWIGFLAGS, $SWIGOUTDIR and $YACCFLAGS.
- Fix dependencies on Java files generated by SWIG so they can be
detected and built in one pass.
- Fix SWIG when used with a BuildDir().
From Leanid Nazdrynau:
- When applying Tool modules after a construction environment has
already been created, don't overwrite existing $CFILESUFFIX and
$CXXFILESUFFIX value.
- Support passing the Java() builder a list of explicit .java files
(not only a list of directories to be scanned for .java files).
- Support passing .java files to the Jar() and JavaH() builders, which
then use the builder underlying the Java() builder to turn them into
.class files. (That is, the Jar()-Java() chain of builders become
multi-step, like the Program()-Object()-CFile() builders.)
- Support passing SWIG .i files to the Java builders (Java(),
Jar(), JavaH()), to cause intermediate .java files to be created
automatically.
- Add $JAVACLASSPATH and $JAVASOURCEPATH variables, that get added to
the javac "-classpath" and "-sourcepath" options. (Note that SCons
does *not* currently search these paths for implicit dependencies.)
- Commonize initialization of Java-related builders.
From Jan Nijtmans:
- Find Java anonymous classes when the next token after the name is
an open parenthesis.
From Gary Oberbrunner:
- Fix a code example in the man page.
From Tilo Prutz:
- Add support for the file names that Java 1.5 (and 1.6) generates for
nested anonymous inner classes, which are different from Java 1.4.
From Adam Simpkins:
- Allow worker threads to terminate gracefully when all jobs are
finished.
From Sohail Somani:
- Add LaTeX scanner support for finding dependencies specified with
the \usepackage{} directive.