From: stevenknight Date: Sat, 11 Feb 2006 23:41:34 +0000 (+0000) Subject: On Windows, fix the line endings of the files unpacked in the build\{test-local-zip... X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c9a9a375649789a00386e5677525bb54264ec2b1;p=scons.git On Windows, fix the line endings of the files unpacked in the build\{test-local-zip,test-zip} hierarchies; fix command lines in the README file to more accurately reflect exported variables. (Baptiste Lepilleur) Separate the entries in the CHANGES.txt and RELEASE.txt files into the individual changes for the 0.96{1,90,91} releases. git-svn-id: http://scons.tigris.org/svn/scons/trunk@1416 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/README b/README index e178bc29..5a5aeb7a 100644 --- a/README +++ b/README @@ -247,10 +247,16 @@ you can build everything by simply running it: $ scons If you don't have SCons version 0.96 or later already installed on your -system, you can build this version of SCons with itself with a little -more typing: +system, you can build this version of SCons with itself with a little more +typing. On UNIX or Linux (using sh or a derivative like bash or ksh): - $ SCONS_LIB_DIR=`pwd`/src/engine python src/script/scons.py + $ export SCONS_LIB_DIR=`pwd`/src/engine + $ python src/script/scons.py + +On Windows: + + C:\scons\>set SCONS_LIB_DIR=%cd%\src\engine + C:\scons\>python src/script/scons.py Depending on the utilities installed on your system, any or all of the following packages will be built: diff --git a/SConstruct b/SConstruct index 7dfc9354..067e7573 100644 --- a/SConstruct +++ b/SConstruct @@ -214,7 +214,7 @@ try: if os.path.isfile(dest) or os.path.islink(dest): os.unlink(dest) if not os.path.isdir(dest): - open(dest, 'w').write(zf.read(name)) + open(dest, 'wb').write(zf.read(name)) except: if unzip and zip: diff --git a/src/CHANGES.txt b/src/CHANGES.txt index d221061e..754768df 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -12,67 +12,437 @@ RELEASE 0.97 - XXX 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: @@ -81,22 +451,10 @@ RELEASE 0.97 - XXX - 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 @@ -109,25 +467,6 @@ RELEASE 0.97 - XXX 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 @@ -228,210 +567,74 @@ RELEASE 0.97 - XXX $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: @@ -443,29 +646,6 @@ RELEASE 0.97 - XXX - 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 @@ -479,38 +659,6 @@ RELEASE 0.97 - XXX - 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 @@ -518,13 +666,6 @@ RELEASE 0.97 - XXX - 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 @@ -537,20 +678,6 @@ RELEASE 0.97 - XXX 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 @@ -599,41 +726,11 @@ RELEASE 0.97 - XXX - 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 @@ -754,35 +851,6 @@ RELEASE 0.97 - XXX - 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 @@ -792,39 +860,6 @@ RELEASE 0.97 - XXX - 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 @@ -884,7 +919,7 @@ RELEASE 0.97 - XXX -RELEASE 0.96.1 - XXX +RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000 From Craig Bachelor: diff --git a/src/RELEASE.txt b/src/RELEASE.txt index 5f7fa262..aefe6ea6 100644 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -20,43 +20,83 @@ more effectively, please sign up for the scons-users mailing list at: -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 @@ -157,20 +197,6 @@ RELEASE 0.97 - XXX 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 @@ -200,25 +226,61 @@ RELEASE 0.97 - XXX "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 @@ -239,6 +301,12 @@ RELEASE 0.97 - XXX 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 @@ -250,45 +318,6 @@ RELEASE 0.97 - XXX 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: @@ -300,31 +329,6 @@ RELEASE 0.97 - XXX 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 @@ -349,7 +353,7 @@ RELEASE 0.97 - XXX 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