From Anonymous:
- - Fix Java parsing to avoid erroneously identifying a new array
- of class instances as an anonymous inner class.
+ - Fix the intelc.py Tool module to not throw an exception if the
+ only installed version is something other than ia32.
+
+ - Set $CCVERSION when using gcc.
+
+ From Matthias:
+
+ - Support generating project and solution files for Microsoft
+ Visual Studio version 8.
+
+ - Support generating more than one project file for a Microsoft
+ Visual Studio solution file.
+
+ From Erling Andersen:
+
+ - Fix interpretation of Node.FS objects wrapped in Proxy instances,
+ allowing expansion of things like ${File(TARGET)} in command lines.
+
+ From Stanislav Baranov:
+
+ - Add a separate MSVSSolution() Builder, with support for the
+ following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
+ $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
+ $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
+
+ From Ralph W. Grosse-Kunstleve and Patrick Mezard:
+
+ - Remove unneceesary (and incorrect) SCons.Util strings on some function
+ calls in SCons.Util.
+
+ From Bob Halley:
+
+ - Fix C/C++ compiler selection on AIX to not always use the external $CC
+ environment variable.
+
+ From August Hörandl:
+
+ - Add a scanner for \include and \import files, with support for
+ searching a directory list in $TEXINPUTS (imported from the external
+ environment).
+
+ - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
+ $MAKEINDEXFLAGS for generating indices from .idx files.
+
+ From Steven Knight:
+
+ - Check for whether files exist on disk by listing the directory
+ contents, not calling os.path.exists() file by file. This is
+ somewhat more efficient in general, and may be significantly
+ more efficient on Windows.
+
+ - Minor speedups in the internal is_Dict(), is_List() and is_String()
+ functions.
+
+ - Fix a signature refactoring bug that caused Qt header files to
+ get re-generated every time.
+
+ - Don't fail when writing signatures if the .sconsign.dblite file is
+ owned by a different user (e.g. root) from a previous run.
+
+ - When deleting variables from stacked OverrideEnvironments, don't
+ throw a KeyError if we were able to delte the variable from any
+ Environment in the stack.
+
+ - Get rid of the last indentation tabs in the SCons source files and
+ add -tt to the Python invocations in the packaging build and the
+ tests so they don't creep back in.
+
+ - In Visual Studio project files, put quotes around the -C directory
+ so everything works even if the path has spaces in it.
+
+ - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
+ when building object files on Windows. Have the the ifort Tool
+ modify the default command lines appropriately.
+
+ - Document the --debug=explain option in the man page. (How did we
+ miss this?)
+
+ - Add a $LATEXRETRIES variable to allow configuration of the number of
+ times LaTex can be re-called to try to resolve undefined references.
+
+ - Change the order of the arguments to Configure.Checklib() to match
+ the documentation.
+
+ - Handle signature calculation properly when the Python function used
+ for a FunctionAction is an object method.
+
+ - On Windows, assume that absolute path names without a drive letter
+ refer to the drive on which the SConstruct file lives.
+
+ - Add /usr/ccs/bin to the end of the the default external execution
+ PATH on Solaris.
+
+ - Add $PKGCHK and $PKGINFO variables for use on Solaris when searching
+ for the SunPRO C++ compiler. Make the default value for $PKGCHK
+ be /usr/sbin/pgkchk (since /usr/sbin isn't usually on the external
+ execution $PATH).
+
+ - Fix a man page example of overriding variables when calling
+ SharedLibrary() to also set the $LIBSUFFIXES variable.
+
+ - Add a --taskmastertrace=FILE option to give some insight on how
+ the taskmaster decides what Node to build next.
+
+ - Changed the names of the old $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
+ $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX construction variables to
+ new $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSDLLPREFIX and
+ $WINDOWSIMPLIBPREFIX construction variables. The old names are now
+ deprecated, but preserved for backwards compatibility.
+
+ From Chen Lee:
+
+ - Add x64 support for Microsoft Visual Studio 8.
+
+ From Christian Maaser:
+
+ - Add support for Visual Studio Express Editions.
+
+ - Add support for Visual Studio 8 *.manifest files, includng
+ new $WINDOWS_INSERT_MANIFEST, $WINDOWSPROGMANIFESTSUFFIX,
+ $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX,
+ $WINDOWSSHLIBMANIFESTPREFIX and $WINDOWSSHLIBMANIFESTSUFFIX
+ construction variables.
+
+ From Sanjoy Mahajan:
+
+ - Correct TeX-related command lines to just $SOURCE, not $SOURCES
+
+ From Patrick Mezard:
+
+ - Execute build commands for a command-line target if any of the
+ files built along with the target is out of date or non-existent,
+ not just if the command-line target itself is out of date.
+
+ - Fix the -n option when used with -c to print all of the targets
+ that will be removed for a multi-target Builder call.
+
+ - If there's no file in the source directory, make sure there isn't
+ one in the build directory, too, to avoid dangling files left
+ over from previous runs when a source file is removed.
+
+ - Allow AppendUnique() and PrependUnique() to append strings (and
+ other atomic objects) to lists.
+
+ From Joel B. Mohler:
+
+ - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
+ from both TeX and LaTeX files uses the same logic to call $BIBTEX
+ when it's necessary, to call $MAKEINDEX when it's necessary, and to
+ call $TEX or $LATEX multiple times to handle undefined references.
+
+ - Add an emitter to the various TeX builders so that the generated
+ .aux and .log files also get deleted by the -c option.
+
+ From Leanid Nazdrynau:
+
+ - Fix the Qt UIC scanner to work with generated .ui files (by using
+ the FindFile() function instead of checking by-hand for the file).
+
+ From Jan Nieuwenhuizen:
+
+ - Fix a problem with interpreting quoted argument lists on command lines.
+
+ From Greg Noel:
+
+ - Add /sw/bin to the default execution PATH on Mac OS X.
+
+ From Kian Win Ong:
+
+ - When building a .jar file and there is a $JARCHDIR, put the -C
+ in front of each .class file on the command line.
+
+ - Recognize the Java 1.5 enum keyword.
+
+ From Asfand Yar Qazi:
+
+ - Add /opt/bin to the default execution PATH on all POSIX platforms
+ (between /usr/local/bin and /bin).
+
+ From Jon Rafkind:
+
+ - Fix the use of Configure() contexts from nested subsidiary
+ SConscript files.
+
+ From Christoph Schulz:
+
+ - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
+ the directory and logs for configuration tests.
+
+ - Add support for a $INSTALLSTR variable.
+
+ - Add support for $RANLIBCOM and $RANLIBCOMSTR variables (which fixes
+ a bug when setting $ARCOMSTR).
+
+ From Amir Szekely:
+
+ - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
+
+ From Dobes Vandermeer:
+
+ - Add support for SCC and other settings in Microsoft Visual
+ Studio project and solution files: $MSVS_PROJECT_BASE_PATH,
+ $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
+ $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
+
+ - Add support for using a $SCONS_HOME variable (imported from the
+ external environment, or settable internally) to put a shortened
+ SCons execution line in the Visual Studio project file.
+
+
+
+
+RELEASE 0.96.91 - Thu, 08 Sep 2005 07:18:23 -0400
+
+ NOTE: This was a pre-release of 0.97 for testing purposes.
+
+ From Chad Austin:
+
+ - Have the environment store the toolpath and re-use it to find Tools
+ modules during later Copy() or Tool() calls (unless overridden).
+
+ - Normalize the directory path names in SConsignFile() database
+ files so the same signature file can interoperate on Windows and
+ non-Windows systems.
+
+ - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
+
+ - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
+
+ From Stanislav Baranov:
+
+ - Make it possible to support with custom Alias (sub-)classes.
+
+ - Allow Builders to take empty source lists when called.
+
+ - Allow access to both TARGET and SOURCE in $*PATH expansions.
+
+ - Allow SConscript files to modify BUILD_TARGETS.
+
+ From Timothee Besset:
+
+ - Add support for Objective C/C++ .m and .mm file suffixes (for
+ Mac OS X).
+
+ From Charles Crain
+
+ - Fix the PharLap linkloc.py module to use target+source arguments
+ when calling env.subst().
+
+ From Bjorn Eriksson:
+
+ - Fix an incorrect Command() keyword argument in the man page.
+
+ - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
+ to pass a long-command-line-execution tempfile to a command.
+
+ From Steven Knight:
+
+ - Enhanced the SCons setup.py script to install man pages on
+ UNIX/Linux systems.
+
+ - Add support for an Options.FormatOptionHelpText() method that can
+ be overridden to customize the format of Options help text.
+
+ - Add a global name for the Entry class (which had already been
+ documented).
+
+ - Fix re-scanning of generated source files for implicit dependencies
+ when the -j option is used.
+
+ - Fix a dependency problem that caused $LIBS scans to not be added
+ to all of the targets in a multiple-target builder call, which
+ could cause out-of-order builds when the -j option is used.
+
+ - Store the paths of source files and dependencies in the .sconsign*
+ file(s) relative to the target's directory, not relative to the
+ top-level SConstruct directory. This starts to make it possible to
+ subdivide the dependency tree arbitrarily by putting an SConstruct
+ file in every directory and using content signatures.
+
+ - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
+ that accomodate parser generators that write header files to a
+ different suffix than the hard-coded .hpp when the -d option is used.
+
+ - The default behavior is now to store signature information in a
+ single .sconsign.dblite file in the top-level SConstruct directory.
+ The old behavior of a separate .sconsign file in each directory can
+ be specified by calling SConsignFile(None).
+
+ - Remove line number byte codes within the signature calculation
+ of Python function actions, so that changing the location of an
+ otherwise unmodified Python function doesn't cause rebuilds.
+
+ - Fix AddPreAction() and AddPostAction() when an action has more than
+ one target file: attach the actions to the Executor, not the Node.
+
+ - Allow the source directory of a BuildDir / build_dir to be outside
+ of the top-level SConstruct directory tree.
+
+ - Add a --debug=nomemoizer option that disables the Memoizer for clearer
+ looks at the counts and profiles of the underlying function calls,
+ not the Memoizer wrappers.
+
+ - Print various --debug= stats even if we exit early (e.g. using -h).
+
+ - Really only use the cached content signature value if the file
+ is older than --max-drift, not just if --max-drift is set.
+
+ - Remove support for conversion from old (pre 0.96) .sconsign formats.
+
+ - Add support for a --diskcheck option to enable or disable various
+ on-disk checks: that File and Dir nodes match on-disk entries;
+ whether an RCS file exists for a missing source file; whether an
+ SCCS file exists for a missing source file.
+
+ - Add a --raw argument to the sconsign script, so it can print a
+ raw representation of each entry's NodeInfo dictionary.
+
+ - Add the 'f90' and 'f95' tools to the list of Fortran compilers
+ searched for by default.
+
+ - Add the +Z option by default when compiling shared objects on
+ HP-UX.
+
+ From Chen Lee:
+
+ - Handle Visual Studio project and solution files in Unicode.
+
+ From Sanjoy Mahajan:
+
+ - Fix a bad use of Copy() in an example in the man page, and a
+ bad regular expression example in the man page and User's Guide.
+
+ From Shannon Mann:
+
+ - Have the Visual Studio project file(s) echo "Starting SCons" before
+ executing SCons, mainly to work around a quote-stripping bug in
+ (some versions of?) the Windows cmd command executor.
+
+ From Georg Mischler:
+
+ - Remove the space after the -o option when invoking the Borland
+ BCC compiler; some versions apparently require that the file name
+ argument be concatenated with the option.
+
+ From Leanid Nazdrynau:
+
+ - Fix the Java parser's handling of backslashes in strings.
+
+ From Greg Noel:
+
+ - Add construction variables to support frameworks on Mac OS X:
+ $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
+
+ - Re-order link lines so the -o option always comes right after the
+ command name.
+
+ From Gary Oberbrunner:
+
+ - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
+
+ - Document the new $FRAMEWORK* variables for Mac OS X.
+
+ From Karol Pietrzak:
+
+ - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
+
+ - Add a description of env.subst() to the man page.
- - Fix a typo in the man page description of PathIsDirCreate.
+ From Chris Prince:
- - Fix the intelc.py Tool module to not throw an exception if the
- only installed version is something other than ia32.
+ - Look in the right directory, not always the local directory, for a
+ same-named file or directory conflict on disk.
- - Set $CCVERSION when using gcc.
+ - On Windows, preserve the external environment's %SYSTEMDRIVE%
+ variable, too.
- From Matthias:
+ From Craig Scott:
- - Support generating project and solution files for Microsoft
- Visual Studio version 8.
+ - Have the Fortran module emitter look for Fortan modules to be created
+ relative to $FORTRANMODDIR, not the top-level directory.
- - Support generating more than one project file for a Microsoft
- Visual Studio solution file.
+ - When saving Options to a file, run default values through the
+ converter before comparing them with the set values. This correctly
+ suppresses Boolean Option values from getting written to the saved
+ file when they're one of the many synonyms for a default True or
+ False value.
- From Erling Andersen:
+ - Fix the Fortran Scanner's ability to handle a module being used
+ in the same file in which it is defined.
- - Fix interpretation of Node.FS objects wrapped in Proxy instances,
- allowing expansion of things like ${File(TARGET)} in command lines.
+ From Steve-o:
- From Chad Austin:
+ - Add the -KPIC option by default when compiling shared objects on
+ Solaris.
- - Allow Help() to be called multiple times, appending to the help
- text each call.
+ - Change the default suffix for Solaris objects to .o, to conform to
+ Sun WorkShop's expectations. Change the profix to so_ so they can
+ still be differentiated from static objects in the same directory.
- - Allow Tools found on a toolpath to import Python modules from
- their local directory.
+ From Amir Szekely:
- - Have the environment store the toolpath and re-use it to find Tools
- modules during later Copy() or Tool() calls (unless overridden).
+ - When calling the resource compiler on MinGW, add --include-dir and
+ the source directory so it finds the source file.
- - Normalize the directory path names in SConsignFile() database
- files so the same signature file can interoperate on Windows and
- non-Windows systems.
+ - Update EnsureSConsVersion() to support revision numbers.
- - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
+ From Greg Ward:
- - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
+ - Fix a misplaced line in the man page.
- From Stanislav Baranov:
- - Make it possible to support with custom Alias (sub-)classes.
- - Allow Builders to take empty source lists when called.
+RELEASE 0.96.90 - Tue, 15 Feb 2005 21:21:12 +0000
- - Allow access to both TARGET and SOURCE in $*PATH expansions.
+ NOTE: This was a pre-release of 0.97 for testing purposes.
- - Allow SConscript files to modify BUILD_TARGETS.
+ From Anonymous:
- - Add a separate MSVSSolution() Builder, with support for the
- following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
- $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
- $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
+ - Fix Java parsing to avoid erroneously identifying a new array
+ of class instances as an anonymous inner class.
- From Timothee Besset:
+ - Fix a typo in the man page description of PathIsDirCreate.
- - Add support for Objective C/C++ .m and .mm file suffixes (for
- Mac OS X).
+ From Chad Austin:
+
+ - Allow Help() to be called multiple times, appending to the help
+ text each call.
+
+ - Allow Tools found on a toolpath to import Python modules from
+ their local directory.
From Steve Christensen:
- Add a set of canned PathOption validators: PathExists (the default),
PathIsFile, PathIsDir and PathIsDirCreate.
- Charles Crain
-
- - Fix the PharLap linkloc.py module to use target+source arguments
- when calling env.subst().
-
From Matthew Doar:
- Add support for .lex and .yacc file suffixes for Lex and Yacc files.
- From Bjorn Eriksson:
-
- - Fix an incorrect Command() keyword argument in the man page.
-
- - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
- to pass a long-command-line-execution tempfile to a command.
-
From Eric Frias:
- Huge performance improvement: wrap the tuples representing an
check for the build engine in the parent directory of the Python
library directory (/usr/lib64 instead of /usr/lib).
- From Ralph W. Grosse-Kunstleve and Patrick Mezard:
-
- - Remove unneceesary (and incorrect) SCons.Util strings on some function
- calls in SCons.Util.
-
- From Bob Halley:
-
- - Fix C/C++ compiler selection on AIX to not always use the external $CC
- environment variable.
-
- From August Hörandl:
-
- - Add a scanner for \include and \import files, with support for
- searching a directory list in $TEXINPUTS (imported from the external
- environment).
-
- - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
- $MAKEINDEXFLAGS for generating indices from .idx files.
-
From Stephen Kennedy:
- Speed up writing the .sconsign file at the end of a run by only
$QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
$SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
$SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
- $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
-
- - Add an optional "map" keyword argument to ListOption() that takes a
- dictionary to map user-specified values to legal values from the list
- (like EnumOption() already doee).
-
- - Add specific exceptions to try:-except: blocks without any listed,
- so that they won't catch and mask keyboard interrupts.
-
- - Make --debug={tree,dtree,stree} print something even when there's
- a build failure.
-
- - Fix how Scanners sort the found dependencies so that it doesn't
- matter whether the dependency file is in a Repository or not.
- This may cause recompilations upon upgrade to this version.
-
- - Make AlwaysBuild() work with Alias and Python value Nodes (making
- it much simpler to support aliases like "clean" that just invoke
- an arbitrary action).
-
- - Have env.ParseConfig() use AppendUnique() by default to suppress
- duplicate entries from multiple calls. Add a "unique" keyword
- argument to allow the old behavior to be specified.
-
- - Allow the library modules imported by an SConscript file to get at
- all of the normally-available global functions and variables by saying
- "from SCons.Script import *".
-
- - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
-
- - Allow more than one --debug= option to be set at a time.
-
- - Change --debug=count to report object counts before and after
- reading SConscript files and before and after building targets.
-
- - Change --debug=memory output to line up the numbers and to better
- match (more or less) the headers on the --debug=count columns.
-
- - Speed things up when there are lists of targets and/or sources by
- getting rid of some N^2 walks of the lists involved.
-
- - Cache evaluation of LazyActions so we don't create a new object
- for each invocation.
-
- - When scanning, don't create Nodes for include files that don't
- actually exist on disk.
-
- - Make supported global variables CScanner, DScanner, ProgramScanner and
- SourceFileScanner. Make SourceFileScanner.add_scanner() a supported
- part of the public interface. Keep the old SCons.Defaults.*Scan names
- around for a while longer since some people were already using them.
-
- - By default, don't scan directories for on-disk files. Add a
- DirScanner global scanner that can be used in Builders or Command()
- calls that want source directory trees scanned for on-disk changes.
- Have the Tar() and Zip() Builders use the new DirScanner to preserve
- the behavior of rebuilding a .tar or .zip file if any file or
- directory under a source tree changes. Add Command() support for
- a source_scanner keyword argument to Command() that can be set to
- DirScanner to get this behavior.
-
- - Documentation changes: Explain that $CXXFLAGS contains $CCFLAGS
- by default. Fix a bad target_factory example in the man page.
- Add appendices to the User's Guide to cover the available Tools,
- Builders and construction variables. Comment out the build of
- the old Python 10 paper, which doesn't build on all systems and
- is old enough at this point that it probably isn't worth the
- effort to make it do so.
-
- - Enhanced the SCons setup.py script to install man pages on
- UNIX/Linux systems.
-
- - Add support for an Options.FormatOptionHelpText() method that can
- be overridden to customize the format of Options help text.
-
- - Add a global name for the Entry class (which had already been
- documented).
-
- - Fix re-scanning of generated source files for implicit dependencies
- when the -j option is used.
-
- - Fix a dependency problem that caused $LIBS scans to not be added
- to all of the targets in a multiple-target builder call, which
- could cause out-of-order builds when the -j option is used.
-
- - Store the paths of source files and dependencies in the .sconsign*
- file(s) relative to the target's directory, not relative to the
- top-level SConstruct directory. This starts to make it possible to
- subdivide the dependency tree arbitrarily by putting an SConstruct
- file in every directory and using content signatures.
-
- - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
- that accomodate parser generators that write header files to a
- different suffix than the hard-coded .hpp when the -d option is used.
-
- - The default behavior is now to store signature information in a
- single .sconsign.dblite file in the top-level SConstruct directory.
- The old behavior of a separate .sconsign file in each directory can
- be specified by calling SConsignFile(None).
-
- - Remove line number byte codes within the signature calculation
- of Python function actions, so that changing the location of an
- otherwise unmodified Python function doesn't cause rebuilds.
-
- - Fix AddPreAction() and AddPostAction() when an action has more than
- one target file: attach the actions to the Executor, not the Node.
-
- - Allow the source directory of a BuildDir / build_dir to be outside
- of the top-level SConstruct directory tree.
-
- - Add a --debug=nomemoizer option that disables the Memoizer for clearer
- looks at the counts and profiles of the underlying function calls,
- not the Memoizer wrappers.
-
- - Print various --debug= stats even if we exit early (e.g. using -h).
-
- - Really only use the cached content signature value if the file
- is older than --max-drift, not just if --max-drift is set.
-
- - Remove support for conversion from old (pre 0.96) .sconsign formats.
-
- - Add support for a --diskcheck option to enable or disable various
- on-disk checks: that File and Dir nodes match on-disk entries;
- whether an RCS file exists for a missing source file; whether an
- SCCS file exists for a missing source file.
-
- - Add a --raw argument to the sconsign script, so it can print a
- raw representation of each entry's NodeInfo dictionary.
-
- - Add the 'f90' and 'f95' tools to the list of Fortran compilers
- searched for by default.
-
- - Add the +Z option by default when compiling shared objects on
- HP-UX.
-
- - Check for whether files exist on disk by listing the directory
- contents, not calling os.path.exists() file by file. This is
- somewhat more efficient in general, and may be significantly
- more efficient on Windows.
-
- - Minor speedups in the internal is_Dict(), is_List() and is_String()
- functions.
-
- - Fix a signature refactoring bug that caused Qt header files to
- get re-generated every time.
-
- - Don't fail when writing signatures if the .sconsign.dblite file is
- owned by a different user (e.g. root) from a previous run.
-
- - When deleting variables from stacked OverrideEnvironments, don't
- throw a KeyError if we were able to delte the variable from any
- Environment in the stack.
+ $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
- - Get rid of the last indentation tabs in the SCons source files and
- add -tt to the Python invocations in the packaging build and the
- tests so they don't creep back in.
+ - Add an optional "map" keyword argument to ListOption() that takes a
+ dictionary to map user-specified values to legal values from the list
+ (like EnumOption() already doee).
- - In Visual Studio project files, put quotes around the -C directory
- so everything works even if the path has spaces in it.
+ - Add specific exceptions to try:-except: blocks without any listed,
+ so that they won't catch and mask keyboard interrupts.
- - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
- when building object files on Windows. Have the the ifort Tool
- modify the default command lines appropriately.
+ - Make --debug={tree,dtree,stree} print something even when there's
+ a build failure.
- - Document the --debug=explain option in the man page. (How did we
- miss this?)
+ - Fix how Scanners sort the found dependencies so that it doesn't
+ matter whether the dependency file is in a Repository or not.
+ This may cause recompilations upon upgrade to this version.
- - Add a $LATEXRETRIES variable to allow configuration of the number of
- times LaTex can be re-called to try to resolve undefined references.
+ - Make AlwaysBuild() work with Alias and Python value Nodes (making
+ it much simpler to support aliases like "clean" that just invoke
+ an arbitrary action).
- - Change the order of the arguments to Configure.Checklib() to match
- the documentation.
+ - Have env.ParseConfig() use AppendUnique() by default to suppress
+ duplicate entries from multiple calls. Add a "unique" keyword
+ argument to allow the old behavior to be specified.
- - Handle signature calculation properly when the Python function used
- for a FunctionAction is an object method.
+ - Allow the library modules imported by an SConscript file to get at
+ all of the normally-available global functions and variables by saying
+ "from SCons.Script import *".
- - On Windows, assume that absolute path names without a drive letter
- refer to the drive on which the SConstruct file lives.
+ - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
- - Add /usr/ccs/bin to the end of the the default external execution
- PATH on Solaris.
+ - Allow more than one --debug= option to be set at a time.
- - Add $PKGCHK and $PKGINFO variables for use on Solaris when searching
- for the SunPRO C++ compiler. Make the default value for $PKGCHK
- be /usr/sbin/pgkchk (since /usr/sbin isn't usually on the external
- execution $PATH).
+ - Change --debug=count to report object counts before and after
+ reading SConscript files and before and after building targets.
- - Fix a man page example of overriding variables when calling
- SharedLibrary() to also set the $LIBSUFFIXES variable.
+ - Change --debug=memory output to line up the numbers and to better
+ match (more or less) the headers on the --debug=count columns.
- - Add a --taskmastertrace=FILE option to give some insight on how
- the taskmaster decides what Node to build next.
+ - Speed things up when there are lists of targets and/or sources by
+ getting rid of some N^2 walks of the lists involved.
- - Changed the names of the old $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
- $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX construction variables to
- new $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSDLLPREFIX and
- $WINDOWSIMPLIBPREFIX construction variables. The old names are now
- deprecated, but preserved for backwards compatibility.
+ - Cache evaluation of LazyActions so we don't create a new object
+ for each invocation.
- From Chen Lee:
+ - When scanning, don't create Nodes for include files that don't
+ actually exist on disk.
- - Handle Visual Studio project and solution files in Unicode.
+ - Make supported global variables CScanner, DScanner, ProgramScanner and
+ SourceFileScanner. Make SourceFileScanner.add_scanner() a supported
+ part of the public interface. Keep the old SCons.Defaults.*Scan names
+ around for a while longer since some people were already using them.
- - Add x64 support for Microsoft Visual Studio 8.
+ - By default, don't scan directories for on-disk files. Add a
+ DirScanner global scanner that can be used in Builders or Command()
+ calls that want source directory trees scanned for on-disk changes.
+ Have the Tar() and Zip() Builders use the new DirScanner to preserve
+ the behavior of rebuilding a .tar or .zip file if any file or
+ directory under a source tree changes. Add Command() support for
+ a source_scanner keyword argument to Command() that can be set to
+ DirScanner to get this behavior.
+
+ - Documentation changes: Explain that $CXXFLAGS contains $CCFLAGS
+ by default. Fix a bad target_factory example in the man page.
+ Add appendices to the User's Guide to cover the available Tools,
+ Builders and construction variables. Comment out the build of
+ the old Python 10 paper, which doesn't build on all systems and
+ is old enough at this point that it probably isn't worth the
+ effort to make it do so.
From Wayne Lee:
- Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and
$CCFLAGS, and -mwindows to $LINKFLAGS.
- From Christian Maaser:
-
- - Add support for Visual Studio Express Editions.
-
- - Add support for Visual Studio 8 *.manifest files, includng
- new $WINDOWS_INSERT_MANIFEST, $WINDOWSPROGMANIFESTSUFFIX,
- $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX,
- $WINDOWSSHLIBMANIFESTPREFIX and $WINDOWSSHLIBMANIFESTSUFFIX
- construction variables.
-
- From Sanjoy Mahajan:
-
- - Correct TeX-related command lines to just $SOURCE, not $SOURCES
-
- - Fix a bad use of Copy() in an example in the man page, and a
- bad regular expression example in the man page and User's Guide.
-
- From Shannon Mann:
-
- - Have the Visual Studio project file(s) echo "Starting SCons" before
- executing SCons, mainly to work around a quote-stripping bug in
- (some versions of?) the Windows cmd command executor.
-
From Michael McCracken:
- Add a new "applelink" tool to handle the things like Frameworks and
- Improve SWIG tests for use on Mac OS X (Darwin).
- From Patrick Mezard:
-
- - Execute build commands for a command-line target if any of the
- files built along with the target is out of date or non-existent,
- not just if the command-line target itself is out of date.
-
- - Fix the -n option when used with -c to print all of the targets
- that will be removed for a multi-target Builder call.
-
- - If there's no file in the source directory, make sure there isn't
- one in the build directory, too, to avoid dangling files left
- over from previous runs when a source file is removed.
-
- - Allow AppendUnique() and PrependUnique() to append strings (and
- other atomic objects) to lists.
-
- From Georg Mischler:
-
- - Remove the space after the -o option when invoking the Borland
- BCC compiler; some versions apparently require that the file name
- argument be concatenated with the option.
-
- From Joel B. Mohler:
-
- - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
- from both TeX and LaTeX files uses the same logic to call $BIBTEX
- when it's necessary, to call $MAKEINDEX when it's necessary, and to
- call $TEX or $LATEX multiple times to handle undefined references.
-
- - Add an emitter to the various TeX builders so that the generated
- .aux and .log files also get deleted by the -c option.
-
From Elliot Murphy:
- Enhance the tests to guarantee persistence of ListOption
- Supply the help text when -h is used with the -u, -U or -D options.
- From Leanid Nazdrynau:
-
- - Fix the Java parser's handling of backslashes in strings.
-
- - Fix the Qt UIC scanner to work with generated .ui files (by using
- the FindFile() function instead of checking by-hand for the file).
-
From Christian Neeb:
- Fix the Java parser's handling of string definitions to avoid ignoring
value directory; avoiding slowing substitution logic when there's no
'$' in the string.
- From Jan Nieuwenhuizen:
-
- - Fix a problem with interpreting quoted argument lists on command lines.
-
- From Greg Noel:
-
- - Add construction variables to support frameworks on Mac OS X:
- $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
-
- - Re-order link lines so the -o option always comes right after the
- command name.
-
- - Add /sw/bin to the default execution PATH on Mac OS X.
-
From Gary Oberbrunner:
- Add an Environment.Dump() method to print the contents of a
- Documentation changes: Update the man page to describe use of
filenames or Nodes in $LIBS.
- - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
-
- - Document the new $FRAMEWORK* variables for Mac OS X.
-
- From Kian Win Ong:
-
- - When building a .jar file and there is a $JARCHDIR, put the -C
- in front of each .class file on the command line.
-
- - Recognize the Java 1.5 enum keyword.
-
From Chris Pawling:
- Have the linkloc tool use $MSVS_VERSION to select the Microsoft
Visual Studio version to use.
- From Karol Pietrzak:
-
- - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
-
- - Add a description of env.subst() to the man page.
-
- From Chris Prince:
-
- - Look in the right directory, not always the local directory, for a
- same-named file or directory conflict on disk.
-
- - On Windows, preserve the external environment's %SYSTEMDRIVE%
- variable, too.
-
- From Asfand Yar Qazi:
-
- - Add /opt/bin to the default execution PATH on all POSIX platforms
- (between /usr/local/bin and /bin).
-
From Kevin Quick:
- Fix the Builder name returned from ListBuilders and other instances
- Add a PathAccept validator to the list of new canned PathOption
validators.
- From Jon Rafkind:
-
- - Fix the use of Configure() contexts from nested subsidiary
- SConscript files.
-
- From Christoph Schulz:
-
- - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
- the directory and logs for configuration tests.
-
- - Add support for a $INSTALLSTR variable.
-
- - Add support for $RANLIBCOM and $RANLIBCOMSTR variables (which fixes
- a bug when setting $ARCOMSTR).
-
- From Craig Scott:
-
- - Have the Fortran module emitter look for Fortan modules to be created
- relative to $FORTRANMODDIR, not the top-level directory.
-
- - When saving Options to a file, run default values through the
- converter before comparing them with the set values. This correctly
- suppresses Boolean Option values from getting written to the saved
- file when they're one of the many synonyms for a default True or
- False value.
-
- - Fix the Fortran Scanner's ability to handle a module being used
- in the same file in which it is defined.
-
From Jeff Squyres:
- Documentation changes: Use $CPPDEFINES instead of $CCFLAGS in man
- Allow $JARCHDIR to be expanded to other construction variables.
- From Steve-o:
-
- - Add the -KPIC option by default when compiling shared objects on
- Solaris.
-
- - Change the default suffix for Solaris objects to .o, to conform to
- Sun WorkShop's expectations. Change the profix to so_ so they can
- still be differentiated from static objects in the same directory.
-
- From Amir Szekely:
-
- - When calling the resource compiler on MinGW, add --include-dir and
- the source directory so it finds the source file.
-
- - Update EnsureSConsVersion() to support revision numbers.
-
- - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
-
- From Dobes Vandermeer:
-
- - Add support for SCC and other settings in Microsoft Visual
- Studio project and solution files: $MSVS_PROJECT_BASE_PATH,
- $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
- $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
-
- - Add support for using a $SCONS_HOME variable (imported from the
- external environment, or settable internally) to put a shortened
- SCons execution line in the Visual Studio project file.
-
- From Greg Ward:
-
- - Fix a misplaced line in the man page.
-
From Christoph Wiedemann:
- Add an Environment.SetDefault() method that only sets values if
-RELEASE 0.96.1 - XXX
+RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000
From Craig Bachelor:
-RELEASE 0.97 - XXX
+RELEASE 0.96.92 - XXX
This is a pre-release for testing the eighth beta release of SCons.
Please consult the CHANGES.txt file for a list of specific changes
since last release.
- Please note the following important changes since release 0.96:
+ Please note the following important changes since release 0.96.91:
- -- DIRECTORY TREES ARE NO LONGER AUTOMATICALLY SCANNED FOR CHANGES
+ -- /opt/bin AND /sw/bin ADDED TO DEFAULT EXECUTION PATH VARIABLES
- Custom builders and Command() calls that accept directories as
- source arguments no longer scan entire on-disk directory trees by
- default. This means that their targets will not be automatically
- rebuilt if a file changes on disk *unless* SCons already knows
- about the file from a specific Builder or File() call. Note that
- the targets will still be rebuilt correctly if a file changes
- that SCons already knows about due to a Builder or other call.
+ On all POSIX systems, the default execution PATH variable has had
+ the /opt/bin directory added after the /usr/local/bin directory
+ and before /bin and /usr/bin directories. This may cause SCons
+ to find and/or different compilers, linkers, etc. if you have
+ any same-named utilities installed in /opt/bin that it previously
+ found in /bin or /usr/bin.
- The existing behavior of scanning on-disk directory trees for
- any changed file can be maintained by passing the new DirScanner
- global directory scanner as the source_scanner keyword argument
- to the Builder call:
+ On Mac OS X (Darwin) systems, the /sw/bin directory has been added
+ to the end of the default execution PATH. This may cause SCons
+ to find compilers, linkers and other utilities it previously did
+ not, although it should not otherwise change existing behavior.
- bld = Builder("build < $SOURCE > $TARGET",
- source_scanner = DirScanner)
+ -- Configure.Checklib() ARGUMENTS HAVE CHANGED TO MATCH DOCUMENTATION
- The same keyword argument can also be supplied to any Command()
- calls that need to scan directory trees on-disk for changed files:
+ The order of the arguments to the Configure.CheckLib() function
+ has changed to put the "autoadd" keyword argument last, matching
+ the documentation in the man page. This could cause problems
+ for any calls to Configure.Checklib() that were relying on the
+ order of the arguments. Specifying all arguments as keyword
+ arguments will work on both older and newer versions of SCons.
- env.Command("archive.out", "directory",
- "archiver -o $TARGET $SOURCE",
- source_scanner = DirScanner)
+ -- env.subst() NO LONGER EXPANDS $TARGET, $SOURCES, etc. BY DEFAULT
- This change was made because scanning directories by default
- could cause huge slowdowns if a configurable directory like /usr
- or /usr/local was passed as the source to a Builder or Command()
- call, in which case SCons would scan the entire directory tree.
+ Calls to the env.subst() method to interpolate construction
+ variables in strings no longer automatically expand the special
+ variables $TARGET, $TARGETS, $SOURCE and $SOURCES. The keyword
+ variables "target" and "source" must now be set to the lists
+ of target and source files to be used in expansion of those
+ variables, when desired.
+
+ This is most likely necessary for any env.subst() calls within
+ a Python function being used as an SCons action for a Builder:
+
+ def build_it(env, target, source):
+ env.subst('$STRING', target=targets, source=sources)
+ MyBuilder = Builder(action=build_it)
+
+ The "target" and "source" keyword arguments are backwards
+ compatible and can be added to SConscript files without breaking
+ builds on systems using older SCons releases.
+
+ -- INTERNAL FUNCTIONS AND CLASSES HAVE MOVED FROM SCons.Util
+
+ All internal functions and classes related to string substitution
+ have been moved out of the SCons.Util module into their own
+ SCons.Subst module. The following classes have been moved:
+
+ Literal
+ SpecialAttrWrapper
+ NLWrapper
+ Targets_or_Sources
+ Target_or_Source
+
+ And the following functions have moved:
+
+ quote_spaces()
+ escape_list()
+ subst_dict()
+ scons_subst()
+ scons_subst_list()
+ scons_subst_once()
+
+ If your SConscript files have been using any of these function
+ directly from the SCons.Util module (which they ultimately should
+ not be!), you will need to modify them.
+
+ Please note the following important changes since release 0.96.90:
-- SIGNATURES ARE NOW STORED IN AN SConsignFile() BY DEFAULT,
CAUSING LIKELY REBUILDS; SPECIAL NOTE CONCERNING INTERACTION
env = Environment(tools = ['default', 'f77'])
- -- /opt/bin AND /sw/bin ADDED TO DEFAULT EXECUTION PATH VARIABLES
-
- On all POSIX systems, the default execution PATH variable has had
- the /opt/bin directory added after the /usr/local/bin directory
- and before /bin and /usr/bin directories. This may cause SCons
- to find and/or different compilers, linkers, etc. if you have
- any same-named utilities installed in /opt/bin that it previously
- found in /bin or /usr/bin.
-
- On Mac OS X (Darwin) systems, the /sw/bin directory has been added
- to the end of the default execution PATH. This may cause SCons
- to find compilers, linkers and other utilities it previously did
- not, although it should not otherwise change existing behavior.
-
-- SOLARIS DEFAULT SHARED OBJECT PREFIXES AND SUFFIXES HAVE CHANGED
On Solaris, SCons now builds shared objects from C and C++ source
"sconsign.1" man pages on UNIX and Linux systems. A
new --no-install-man
- -- env.subst() NO LONGER EXPANDS $TARGET, $SOURCES, etc. BY DEFAULT
+ -- BUILDERS RETURN A LIST-LIKE OBJECT, NOT A REGULAR LIST
- Calls to the env.subst() method to interpolate construction
- variables in strings no longer automatically expand the special
- variables $TARGET, $TARGETS, $SOURCE and $SOURCES. The keyword
- variables "target" and "source" must now be set to the lists
- of target and source files to be used in expansion of those
- variables, when desired.
+ Builder calls now return an object that behaves like a list
+ (and which provides some other functionality), not an underlying
+ Python list. In general, this should not cause any problems,
+ although it introduces a subtle change in the following behavior:
- This is most likely necessary for any env.subst() calls within
- a Python function being used as an SCons action for a Builder:
+ obj += env.Object('foo.c')
- def build_it(env, target, source):
- env.subst('$STRING', target=targets, source=sources)
- MyBuilder = Builder(action=build_it)
+ If "obj" is a regular Python list, Python will no longer update
+ the "obj" in place, because the return value from env.Object()
+ is no longer the same type. Python will instead allocate a
+ new object and assign the local variable "obj" to it. If "obj"
+ is defined in an SConscript file that calls another SConscript
+ file containing the above code, "obj" in the first SConscript
+ file will not contain the object file nodes created by the
+ env.Object() call.
- The "target" and "source" keyword arguments are backwards
- compatible and can be added to SConscript files without breaking
- builds on systems using older SCons releases.
+ You can guarantee that a list will be updated in place regardless
+ of which SConscript file defines it and which adds to it by
+ using the list append() method as follows:
+
+ obj.append(env.Object('foo.c'))
+
+ Please note the following important changes since release 0.96.1:
+
+ -- DIRECTORY TREES ARE NO LONGER AUTOMATICALLY SCANNED FOR CHANGES
+
+ Custom builders and Command() calls that accept directories as
+ source arguments no longer scan entire on-disk directory trees by
+ default. This means that their targets will not be automatically
+ rebuilt if a file changes on disk *unless* SCons already knows
+ about the file from a specific Builder or File() call. Note that
+ the targets will still be rebuilt correctly if a file changes
+ that SCons already knows about due to a Builder or other call.
+
+ The existing behavior of scanning on-disk directory trees for
+ any changed file can be maintained by passing the new DirScanner
+ global directory scanner as the source_scanner keyword argument
+ to the Builder call:
+
+ bld = Builder("build < $SOURCE > $TARGET",
+ source_scanner = DirScanner)
+
+ The same keyword argument can also be supplied to any Command()
+ calls that need to scan directory trees on-disk for changed files:
+
+ env.Command("archive.out", "directory",
+ "archiver -o $TARGET $SOURCE",
+ source_scanner = DirScanner)
+
+ This change was made because scanning directories by default
+ could cause huge slowdowns if a configurable directory like /usr
+ or /usr/local was passed as the source to a Builder or Command()
+ call, in which case SCons would scan the entire directory tree.
-- ParseConfig() METHOD ADDS LIBRARY FILE NAMES TO THE $LIBS VARIABLE
propagated automatically to the command execution environment on
Windows systems.
+ -- OUTPUT OF Configure() SUBSYSTEM CHANGED SLIGHTLY
+
+ The Configure() subsystem now reports tests results as "yes" and
+ "no" instead of "ok" and "failed." This might interfere with any
+ scripts that automatically parse the Configure() output from SCons.
+
-- VISUAL STUDIO ATL AND MFC DIRECTORIES NOT ADDED BY DEFAULT
When compiling with Microsoft Visual Studio, SCons no longer
env = Environment(MSVS_USE_MFC_DIRS = 1)
- -- BUILDERS RETURN A LIST-LIKE OBJECT, NOT A REGULAR LIST
-
- Builder calls now return an object that behaves like a list
- (and which provides some other functionality), not an underlying
- Python list. In general, this should not cause any problems,
- although it introduces a subtle change in the following behavior:
-
- obj += env.Object('foo.c')
-
- If "obj" is a regular Python list, Python will no longer update
- the "obj" in place, because the return value from env.Object()
- is no longer the same type. Python will instead allocate a
- new object and assign the local variable "obj" to it. If "obj"
- is defined in an SConscript file that calls another SConscript
- file containing the above code, "obj" in the first SConscript
- file will not contain the object file nodes created by the
- env.Object() call.
-
- You can guarantee that a list will be updated in place regardless
- of which SConscript file defines it and which adds to it by
- using the list append() method as follows:
-
- obj.append(env.Object('foo.c'))
-
- -- OUTPUT OF Configure() SUBSYSTEM CHANGED SLIGHTLY
-
- The Configure() subsystem now reports tests results as "yes" and
- "no" instead of "ok" and "failed." This might interfere with any
- scripts that automatically parse the Configure() output from SCons.
-
- -- Configure.Checklib() ARGUMENTS HAVE CHANGED TO MATCH DOCUMENTATION
-
- The order of the arguments to the Configure.CheckLib() function
- has changed to put the "autoadd" keyword argument last, matching
- the documentation in the man page. This could cause problems
- for any calls to Configure.Checklib() that were relying on the
- order of the arguments. Specifying all arguments as keyword
- arguments will work on both older and newer versions of SCons.
-
-- DEPRECATED GLOBAL FUNCTIONS HAVE BEEN REMOVED
The following deprecated global functions have been removed:
The deprecated "validater" keyword to the Options.Add() method
has been removed.
- -- INTERNAL FUNCTIONS AND CLASSES HAVE MOVED FROM SCons.Util
-
- All internal functions and classes related to string substitution
- have been moved out of the SCons.Util module into their own
- SCons.Subst module. The following classes have been moved:
-
- Literal
- SpecialAttrWrapper
- NLWrapper
- Targets_or_Sources
- Target_or_Source
-
- And the following functions have moved:
-
- quote_spaces()
- escape_list()
- subst_dict()
- scons_subst()
- scons_subst_list()
- scons_subst_once()
-
- If your SConscript files have been using any of these function
- directly from the SCons.Util module (which they ultimately should
- not be!), you will need to modify them.
-
Please note the following important changes since release 0.95:
-- BUILDERS NOW ALWAYS RETURN A LIST OF TARGETS
the Object() call:
target = Object('foo.c')
- # NEW AY
+ # NEW WAY
print target[0]
This change was introduced to make the data type returned by Builder