diff --git a/Changelogs/Changes-0.01.txt b/Changelogs/Changes-0.01.txt new file mode 100644 index 0000000000..0cb7f17a7a --- /dev/null +++ b/Changelogs/Changes-0.01.txt @@ -0,0 +1,26 @@ +RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001 + +A brief overview of important functionality available in release 0.01: + + - C and C++ compilation on POSIX and Windows NT. + + - Automatic scanning of C/C++ source files for #include dependencies. + + - Support for building libraries; setting construction variables + allows creation of shared libraries. + + - Library and C preprocessor search paths. + + - File changes detected using MD5 signatures. + + - User-definable Builder objects for building files. + + - User-definable Scanner objects for scanning for dependencies. + + - Parallel build (-j) support. + + - Dependency cycles detected. + + - Linux packages available in RPM and Debian format. + + - Windows installer available. diff --git a/Changelogs/Changes-0.02.txt b/Changelogs/Changes-0.02.txt new file mode 100644 index 0000000000..9eed3fa234 --- /dev/null +++ b/Changelogs/Changes-0.02.txt @@ -0,0 +1,42 @@ +RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600 + + From Charles Crain: + + - Added the Install(), BuildDir(), and Export() methods. + + - Fix the -C option by delaying setting the top of the FS tree. + + - Avoid putting the directory path on the libraries in the LIBS + construction variable. + + - Added a GetBuildPath() method to return the full path to the + Node for a specified string. + + - Fixed variable substitution in CPPPATH and LIBPATH. + + From Steven Knight: + + - Fixed the version comment in the scons.bat (the UNIX geek used + # instead of @rem). + + - Fix to setup.py so it doesn't require a sys.argv[1] argument. + + - Provide make-like warning message for "command not found" and + similar errors. + + - Added an EXAMPLES section to the man page. + + - Make Default() targets properly relative to their SConscript + file's subdirectory. + + From Anthony Roach: + + - Documented CXXFLAGS, CXXCOM, and CPPPATH. + + - Fixed SCONS_LIB_DIR to work as documented. + + - Made Default() accept Nodes as arguments. + + - Changed Export() to make it easier to use. + + - Added the Import() and Return() methods. diff --git a/Changelogs/Changes-0.03.txt b/Changelogs/Changes-0.03.txt new file mode 100644 index 0000000000..988d405782 --- /dev/null +++ b/Changelogs/Changes-0.03.txt @@ -0,0 +1,71 @@ +RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600 + + From Charles Crain: + + - Performance improvements in the Node.FS and Sig.Calculator classes. + + - Add the InstallAs() method. + + - Execute commands through an external interpreter (sh, cmd.exe, or + command.com) to handle redirection metacharacters. + + - Allow the user to supply a command handler. + + From Steven Knight: + + - Search both /usr/lib and /usr/local/lib for scons directories by + adding them both to sys.path, with whichever is in sys.prefix first. + + - Fix interpreting strings of multiple white-space separated file names + as separate file names, allowing prefixes and suffixes to be appended + to each individually. + + - Refactor to move CompositeBuilder initialization logic from the + factory wrapper to the __init__() method, and allow a Builder to + have both an action and a src_builder (or array of them). + + - Refactor BuilderBase.__call__() to separate Node creation/lookup + from initialization of the Node's builder information. + + - Add a CFile Builder object that supports turning lex (.l) and + yacc (.y) files into .c files. + + - Document: variable interpretation attributes; how to propogate + the user's environment variables to executed commands; how to + build variants in multiple BuildDirs. + + - Collect String, Dict, and List type-checking in common utility + routines so we can accept User{String,Dict,List}s all over. + + - Put the Action factory and classes into their own module. + + - Use one CPlusPlusAction in the Object Builder's action dictionary, + instead of letting it create multiple identical instances. + + - Document the Install() and InstallAs() methods. + + From Steve Leblanc: + + - Require that a Builder be given a name argument, supplying a + useful error message when it isn't. + + From Anthony Roach: + + - Add a "duplicate" keyword argument to BuildDir() that can be set + to prevent linking/copying source files into build directories. + + - Add a "--debug=tree" option to print an ASCII dependency tree. + + - Fetch the location of the Microsoft Visual C++ compiler(s) from + the Registry, instead of hard-coding the location. + + - Made Scanner objects take Nodes, not path names. + + - Have the C Scanner cache the #include file names instead of + (re-)scanning the file each time it's called. + + - Created a separate class for parent "nodes" of file system roots, + eliminating the need for separate is-parent-null checks everywhere. + + - Removed defined __hash__() and __cmp() methods from FS.Entry, in + favor of Python's more efficient built-in identity comparisons. diff --git a/Changelogs/Changes-0.04.txt b/Changelogs/Changes-0.04.txt new file mode 100644 index 0000000000..ce43977526 --- /dev/null +++ b/Changelogs/Changes-0.04.txt @@ -0,0 +1,65 @@ +RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600 + + From Charles Crain: + + - Significant performance improvements in the Node.FS and + Scanner subsystems. + + - Fix signatures of binary files on Win32 systems. + + - Allow LIBS and LIBPATH to be strings, not just arrays. + + - Print a traceback if a Python-function builder throws an exception. + + From Steven Knight: + + - Fix using a directory as a Default(), and allow Default() to + support white space in file names for strings in arrays. + + - Man page updates: corrected some mistakes, documented various + missing Environment methods, alphabetized the construction + variables and other functions, defined begin and end macros for + the example sections, regularized white space separation, fixed + the use of Export() in the Multiple Variants example. + + - Function action fixes: None is now a successful return value. + Exceptions are now reported. Document function actions. + + - Add 'Action' and 'Scanner' to the global keywords so SConscript + files can use them too. + + - Removed the Wrapper class between Nodes and Walkers. + + - Add examples using Library, LIBS, and LIBPATH. + + - The C Scanner now always returns a sorted list of dependencies + so order changes don't cause unnecessary rebuilds. + + - Strip $(-$) bracketed text from command lines. Use this to + surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response + to changes to -I or -L options. + + - Add the Ignore() method to ignore dependencies. + + - Provide an error message when a nonexistent target is specified + on the command line. + + - Remove targets before building them, and add an Environment + Precious() method to override that. + + - Eliminate redundant calls to the same builder when the target is a + list of targets: Add a ListBuilder class that wraps Builders to + handle lists atomically. Extend the Task class to support building + and updating multiple targets in a single Task. Simplify the + interface between Task and Taskmaster. + + - Add a --debug=pdb option to re-run SCons under the Python debugger. + + - Only compute a build signature once for each node. + + - Changes to our sys.path[] manipulation to support installation into + an arbitrary --prefix value. + + From Steve Leblanc: + + - Add var=value command-line arguments. diff --git a/Changelogs/Changes-0.05.txt b/Changelogs/Changes-0.05.txt new file mode 100644 index 0000000000..af78747923 --- /dev/null +++ b/Changelogs/Changes-0.05.txt @@ -0,0 +1,80 @@ +RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600 + + From Chad Austin: + + - Set PROGSUFFIX to .exe under Cygwin. + + From Charles Crain: + + - Allow a library to specified as a command-line source file, not just + in the LIBS construction variable. + + - Compensate for a bug in os.path.normpath() that returns '' for './' + on WIN32. + + - More performance optimizations: cache #include lines from files, + eliminate unnecessary calls. + + - If a prefix or suffix contains white space, treat the resulting + concatenation as separate arguments. + + - Fix irregularities in the way we fetch DevStudio information from + the Windows registry, and in our registry error handling. + + From Steven Knight: + + - Flush stdout after print so it intermixes correctly with stderr + when redirected. + + - Allow Scanners to return a list of strings, and document how to + write your own Scanners. + + - Look up implicit (scanned) dependencies relative to the directory + of file being scanned. + + - Make writing .sconsign files more robust by first trying to write + to a temp file that gets renamed. + + - Create all of the directories for a list of targets before trying + to build any of the targets. + + - WIN32 portability fixes in tests. + + - Allow the list of variables exported to an SConscript file to be + a UserList, too. + + - Document the overlooked LIBPATH construction variable. + (Bug reported by Eicke Godehardt.) + + - Fix so that Ignore() ignores indirect, implicit dependencies + (included files), not just direct dependencies. + + - Put the man page in the Debian distribution. + + - Run HTML docs through tidy to clean up the HTML (for Konqueror). + + - Add preliminary support for Unicode strings. + + - Efficiency: don't scan dependencies more than once during the + walk of a tree. + + - Fix the -c option so it doesn't stop removing targets if one doesn't + already exist. + (Bug reported by Paul Connell.) + + - Fix the --debug=pdb option when run on Windows NT. + (Bug reported by Paul Connell.) + + - Add support for the -q option. + + From Steve Leblanc: + + - Add support for the -u option. + + - Add .cc and .hh file suffixes to the C Scanner. + + From Anthony Roach: + + - Make the scons script return an error code on failures. + + - Add support for using code to generate a command to build a target. diff --git a/Changelogs/Changes-0.06.txt b/Changelogs/Changes-0.06.txt new file mode 100644 index 0000000000..d0c7b95c3d --- /dev/null +++ b/Changelogs/Changes-0.06.txt @@ -0,0 +1,67 @@ +RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600 + + From Charles Crain: + + - Fix command generators to expand construction variables. + + - Make FunctionAction arguments be Nodes, not strings. + + From Stephen Kennedy: + + - Performance: Use a dictionary, not a list, for a Node's parents. + + From Steven Knight: + + - Add .zip files to the packages we build. + + - Man page: document LIBS, fix a typo, document ARGUMENTS. + + - Added RANLIB and RANLIBFLAGS construction variables. Only use them + in ARCOM if there's a "ranlib" program on the system. + + - Add a configurable CFILESUFFIX for the Builder of .l and .y files + into C files. + + - Add a CXXFile Builder that turns .ll and .yy files into .cc files + (configurable via a CXXFILESUFFIX construction variable). + + - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag. + (Bug reported by Russell Christensen.) + + - Fixed an exception when CPPPATH or LIBPATH is a null string. + (Bug reported by Richard Kiss.) + + - Add a --profile=FILE option to make profiling SCons easier. + + - Modify the new DVI builder to create .dvi files from LaTeX (.ltx + and .latex) files. + + - Add support for Aliases (phony targets). + + - Add a WhereIs() method for searching for path names to executables. + + - Add PDF and PostScript document builders. + + - Add support for compiling Fortran programs from a variety of + suffixes (a la GNU Make): .f, .F, .for, .FOR, .fpp and .FPP + + - Support a CPPFLAGS variable on all default commands that use the + C preprocessor. + + From Steve Leblanc: + + - Add support for the -U option. + + - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space + separated strings. + + - Add a document builder to create .dvi files from TeX (.tex) files. + + From Anthony Roach: + + - Fix: Construction variables with values of 0 were incorrectly + interpolated as ''. + + - Support env['VAR'] to fetch construction variable values. + + - Man page: document Precious(). diff --git a/Changelogs/Changes-0.07.txt b/Changelogs/Changes-0.07.txt new file mode 100644 index 0000000000..c75f089923 --- /dev/null +++ b/Changelogs/Changes-0.07.txt @@ -0,0 +1,147 @@ +RELEASE 0.07 - Thu, 2 May 2002 13:37:16 -0500 + + From Chad Austin: + + - Changes to build SCons packages on IRIX (and other *NIces). + + - Don't create a directory Node when a file already exists there, + and vice versa. + + - Add 'dirs' and 'names' keyword arguments to SConscript for + easier specification of subsidiary SConscript files. + + From Charles Crain: + + - Internal cleanup of environment passing to function Actions. + + - Builders can now take arbitrary keyword arguments to create + attributes to be passed to: command generator functions, + FunctionAction functions, Builder emitter functions (below), + and prefix/suffix generator functions (below). + + - Command generator functions can now return ANYTHING that can be + converted into an Action (a function, a string, a CommandGenerator + instance, even an ActionBase instance). + + - Actions now call get_contents() with the actual target and source + nodes used for the build. + + - A new DictCmdGenerator class replaces CompositeBuilder to support + more flexible Builder behavior internally. + + - Builders can now take an emitter= keyword argument. An emitter + is a function that takes target, source, and env argument, then + return a 2-tuple of (new sources, new targets). The emitter is + called when the Builder is __call__'ed, allowing a user to modify + source and target lists. + + - The prefix, suffix and src_suffix Builder arguments now take a + callable as well a string. The callable is passed the Environment + and any extra Builder keyword arguments and is expected to return + the appropriate prefix or suffix. + + - CommandActions can now be a string, a list of command + argument + strings, or a list of commands (strings or lists). + + - Added shared library support. The Object and Library Builders now + take a "shared=1" keyword argument to specify that a shared object + or shared library should be built. It is an error to try to build + static objects into a shared library or vice versa. + + - Win32 support for .def files has been added. Added the Win32-specific + construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX, + $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX. When building a .dll, + the new construction variable $WIN32_INSERT_DEF, controls whether + the appropriately-named .def file is inserted into the target + list (if not already present). A .lib file is always added to + a Library build if not present in the list of targets. + + - ListBuilder now passes all targets to the action, not just the first. + + - Fix so that -c now deletes generated yacc .h files. + + - Builder actions and emitter functions can now be initialized, through + construction variables, to things other than strings. + + - Make top-relative '#/dir' lookups work like '#dir'. + + - Fix for relative CPPPATH directories in subsidiary SConscript files + (broken in 0.06). + + - Add a for_signature argument to command generators, so that + generators that need to can return distinct values for the + command signature and for executing the command. + + From Alex Jacques: + + - Create a better scons.bat file from a py2bat.py script on the Python + mailing list two years ago (modeled after pl2bat.pl). + + From Steven Knight: + + - Fix so that -c -n does *not* remove the targets! + + - Man page: Add a hierarchical libraries + Program example. + + - Support long MSVC linker command lines through a builder action + that writes to a temporary file and uses the magic MSVC "link @file" + argument syntax if the line is longer than 2K characters. + + - Fix F77 command-line options on Win32 (use /Fo instead of -o). + + - Use the same action to build from .c (lower case) and .C (upper + case) files on case-insensitive systems like Win32. + + - Support building a PDF file directly from a TeX or LaTeX file + using pdftex or pdflatex. + + - Add a -x option to runtest.py to specify the script being tested. + A -X option indicates it's an executable, not a script to feed + to the Python interpreter. + + - Add a Split() function (identical to SCons.Util.argmunge()) for use + in the next release, when Builders will no longer automatically split + strings on white space. + + From Steve Leblanc: + + - Add the SConscriptChdir() method. + + From Anthony Roach: + + - Fix --debug=tree when used with directory targets. + + - Significant internal restructuring of Scanners and Taskmaster. + + - Added new --debug=dtree option. + + - Fixes for --profile option. + + - Performance improvement in construction variable substitution. + + - Implemented caching of content signatures, plus added --max-drift + option to control caching. + + - Implemented caching of dependency signatures, enabled by new + --implicit-cache option. + + - Added abspath construction variable modifier. + + - Added $SOURCE variable as a synonym for $SOURCES[0]. + + - Write out .sconsign files on error or interrupt so intermediate + build results are saved. + + - Change the -U option to -D. Make a new -U that builds just the + targets from the local SConscript file. + + - Fixed use of sys.path so Python modules can be imported from + the SConscript directory. + + - Fix for using Aliases with the -u, -U and -D options. + + - Fix so that Nodes can be passed to SConscript files. + + From Moshe Zadka: + + - Changes for official Debian packaging. diff --git a/Changelogs/Changes-0.08.txt b/Changelogs/Changes-0.08.txt new file mode 100644 index 0000000000..b350cb3c9e --- /dev/null +++ b/Changelogs/Changes-0.08.txt @@ -0,0 +1,147 @@ +RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500 + + From Charles Crain: + + - Fixed a bug with relative CPPPATH dirs when using BuildDir(). + (Bug reported by Bob Summerwill.) + + - Added a warnings framework and a --warn option to enable or + disable warnings. + + - Make the C scanner warn users if files referenced by #include + directives cannot be found and --warn=dependency is specified. + + - The BUILDERS construction variable should now be a dictionary + that maps builder names to actions. Existing uses of lists, + and the Builder name= keyword argument, generate warnings + about use of deprecated features. + + - Removed the "shared" keyword argument from the Object and + Library builders. + + - Added separated StaticObject, SharedObject, StaticLibrary and + SharedLibrary builders. Made Object and Library synonyms for + StaticObject and StaticLibrary, respectively. + + - Add LIBS and LIBPATH dependencies for shared libraries. + + - Removed support for the prefix, suffix and src_suffix arguments + to Builder() to be callable functions. + + - Fix handling file names with multiple dots. + + - Allow a build directory to be outside of the SConstruct tree. + + - Add a FindFile() function that searches for a file node with a + specified name. + + - Add $CPPFLAGS to the shared-object command lines for g++ and gcc. + + From Charles Crain and Steven Knight: + + - Add a "tools=" keyword argument to Environment instantiation, + and a separate Tools() method, for more flexible specification + of tool-specific environment changes. + + From Steven Knight: + + - Add a "platform=" keyword argument to Environment instantiation, + and a separate Platform() method, for more flexible specification + of platform-specific environment changes. + + - Updated README instructions and setup.py code to catch an + installation failure from not having distutils installed. + + - Add descriptions to the -H help text for -D, -u and -U so + people can tell them apart. + + - Remove the old feature of automatically splitting strings + of file names on white space. + + - Add a dependency Scanner for native Fortran "include" statements, + using a new "F77PATH" construction variable. + + - Fix C #include scanning to detect file names with characters like + '-' in them. + + - Add more specific version / build output to the -v option. + + - Add support for the GNU as, Microsoft masm, and nasm assemblers. + + - Allow the "target" argument to a Builder call to be omitted, in + which case the target(s) are deduced from the source file(s) and the + Builder's specified suffix. + + - Add a tar archive builder. + + - Add preliminary support for the OS/2 Platform, including the icc + and ilink Tools. + + From Jeff Petkau: + + - Fix --implicit-cache if the scanner returns an empty list. + + From Anthony Roach: + + - Add a "multi" keyword argument to Builder creation that specifies + it's okay to call the builder multiple times for a target. + + - Set a "multi" on Aliases so multiple calls will append to an Alias. + + - Fix emitter functions' use of path names when using BuildDir or + in subdirectories. + + - Fix --implicit-cache causing redundant rebuilds when the header + file list changed. + + - Fix --implicit-cache when a file has no implicit dependencies and + its source is generated. + + - Make the drive letters on Windows always be the same case, so that + changes in the case of drive letters don't cause a rebuild. + + - Fall back to importing the SCons.TimeStamp module if the SCons.MD5 + module can't be imported. + + - Fix interrupt handling to guarantee that a single interrupt will + halt SCons both when using -j and not. + + - Fix .sconsign signature storage so that output files of one build + can be safely used as input files to another build. + + - Added a --debug=time option to print SCons execution times. + + - Print an error message if a file can't be unlinked before being + built, rather than just silently terminating the build. + + - Add a SideEffect() method that can be used to tell the build + engine that a given file is created as a side effect of building + a target. A file can be specified as a side effect of more than + one build comand, in which case the commands will not be executed + simultaneously. + + - Significant performance gains from not using our own version of + the inefficient stock os.path.splitext() method, caching source + suffix computation, code cleanup in MultiStepBuilder.__call__(), + and replicating some logic in scons_subst(). + + - Add --implicit-deps-changed and --implicit-deps-unchanged options. + + - Add a GetLaunchDir() function. + + - Add a SetBuildSignatureType() function. + + From Zed Shaw: + + - Add an Append() method to Environments, to append values to + construction variables. + + - Change the name of Update() to Replace(). Keep Update() as a + deprecated synonym, at least for now. + + From Terrel Shumway: + + - Use a $PYTHON construction variable, initialized to sys.executable, + when using Python to build parts of the SCons packages. + + - Use sys.prefix, not sys.exec_prefix, to find pdb.py. diff --git a/Changelogs/Changes-0.09.txt b/Changelogs/Changes-0.09.txt new file mode 100644 index 0000000000..d3c57a13cf --- /dev/null +++ b/Changelogs/Changes-0.09.txt @@ -0,0 +1,145 @@ +RELEASE 0.09 - Thu, 5 Dec 2002 04:48:25 -0600 + + From Chad Austin: + + - Add a Prepend() method to Environments, to append values to + the beginning of construction variables. + + From Matt Balvin: + + - Add long command-line support to the "lib" Tool (Microsoft library + archiver), too. + + From Charles Crain: + + - Allow $$ in a string to be passed through as $. + + - Support file names with odd characters in them. + + - Add support for construction variable substition on scanner + directories (in CPPPATH, F77PATH, LIBPATH, etc.). + + From Charles Crain and Steven Knight: + + - Add Repository() functionality, including the -Y option. + + From Steven Knight: + + - Fix auto-deduction of target names so that deduced targets end + up in the same subdirectory as the source. + + - Don't remove source files specified on the command line! + + - Suport the Intel Fortran Compiler (ifl.exe). + + - Supply an error message if there are no command-line or + Default() targets specified. + + - Fix the ASPPCOM values for the GNU assembler. + (Bug reported by Brett Polivka.) + + - Fix an exception thrown when a Default() directory was specified + when using the -U option. + + - Issue a warning when -c can't remove a target. + + - Eliminate unnecessary Scanner calls by checking for the + existence of a file before scanning it. (This adds a generic + hook to check an arbitrary condition before scanning.) + + - Add explicit messages to tell when we're "Reading SConscript files + ...," "done reading SConscript files," "Building targets," and + "done building targets." Add a -Q option to supress these. + + - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables + (by default, the same as $OBJPREFIX and $OBJSUFFIX). + + - Add Make-like error messages when asked to build a source file, + and before trying to build a file that doesn't have all its source + files (including when an invalid drive letter is used on WIN32). + + - Add an scons-local-{version} package (in both .tar.gz and .zip + flavors) to help people who want to ship SCons as a stand-alone + build tool in their software packages. + + - Prevent SCons from unlinking files in certain situations when + the -n option is used. + + - Change the name of Tool/lib.py to Tool/mslib.py. + + From Steven Knight and Anthony Roach: + + - Man page: document the fact that Builder calls return Node objects. + + From Steve LeBlanc: + + - Refactor option processing to use our own version of Greg Ward's + Optik module, modified to run under Python 1.5.2. + + - Add a ParseConfig() command to modify an environment based on + parsing output from a *-config command. + + From Jeff Petkau: + + - Fix interpretation of '#/../foo' on Win32 systems. + + From Anthony Roach: + + - Fixed use of command lines with spaces in their arguments, + and use of Nodes with spaces in their string representation. + + - Make access and modification times of files in a BuildDir match + the source file, even when hard linking isn't available. + + - Make -U be case insensitive on Win32 systems. + + - Issue a warning and continue when finding a corrupt .sconsign file. + + - Fix using an alias as a dependency of a target so that if one of the + alias' dependencies gets rebuilt, the resulting target will, too. + + - Fix differently ordered targets causing unnecessary rebuilds + on case insensitive systems. + + - Use os.system() to execute external commands whenever the "env" + utility is available, which is much faster than fork()/exec(), + and fixes the -j option on several platforms. + + - Fix use of -j with multiple targets. + + - Add an Options() object for friendlier accomodation of command- + line arguments. + + - Add support for Microsoft VC++ precompiled header (.pch) files, + debugger (.pdb) files, and resource (.rc) files. + + - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and + $_LIBDIRFLAGS variables each time a command is executed, define + them so they're computed only as needed. Add a new _concat + function to the Environment that allows people to define their + own similar variables. + + - Fix dependency scans when $LIBS is overridden. + + - Add EnsurePythonVersion() and EnsureSConsVersion() functions. + + - Fix the overly-verbose stack trace on ListBuilder build errors. + + - Add a SetContentSignatureType() function, allowing use of file + timestamps instead of MD5 signatures. + + - Make -U and Default('source') fail gracefully. + + - Allow the File() and Dir() methods to take a path-name string as + the starting directory, in addition to a Dir object. + + - Allow the command handler to be selected via the SPAWN, SHELL + and ESCAPE construction variables. + + - Allow construction variables to be overridden when a Builder + is called. + + From sam th: + + - Dynamically check for the existence of utilities with which to + initialize Environments by default. diff --git a/Changelogs/Changes-0.10.txt b/Changelogs/Changes-0.10.txt new file mode 100644 index 0000000000..a24553f5ca --- /dev/null +++ b/Changelogs/Changes-0.10.txt @@ -0,0 +1,78 @@ +RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600 + + From Derrick 'dman' Hudson: + + - Support Repositories on other file systems by symlinking or + copying files when hard linking won't work. + + From Steven Knight: + + - Remove Python bytecode (*.pyc) files from the scons-local packages. + + - Have FunctionActions print a description of what they're doing + (a representation of the Python call). + + - Fix the Install() method so that, like other actions, it prints + what would have happened when the -n option is used. + + - Don't create duplicate source files in a BuildDir when the -n + option is used. + + - Refactor the Scanner interface to eliminate unnecessary Scanner + calls and make it easier to write efficient scanners. + + - Added a "recursive" flag to Scanner creation that specifies the + Scanner should be invoked recursively on dependency files returned + by the scanner. + + - Significant performance improvement from using a more efficient + check, throughout the code, for whether a Node has a Builder. + + - Fix specifying only the source file to MultiStepBuilders such as + the Program Builder. (Bug reported by Dean Bair.) + + - Fix an exception when building from a file with the same basename as + the subdirectory in which it lives. (Bug reported by Gerard Patel.) + + - Fix automatic deduction of a target file name when there are + multiple source files specified; the target is now deduced from just + the first source file in the list. + + - Documentation fixes: better initial explanation of SConscript files; + fix a misformatted "table" in the StaticObject explanation. + + From Steven Knight and Steve Leblanc: + + - Fix the -c option so it will remove symlinks. + + From Steve Leblanc: + + - Add a Clean() method to support removing user-specified targets + when using the -c option. + + - Add a development script for running SCons through PyChecker. + + - Clean up things found by PyChecker (mostly unnecessary imports). + + - Add a script to use HappyDoc to create HTML class documentation. + + From Lachlan O'Dea: + + - Make the Environment.get() method return None by default. + + From Anthony Roach: + + - Add SetJobs() and GetJobs() methods to allow configuration of the + number of default jobs (still overridden by -j). + + - Convert the .sconsign file format from ASCII to a pickled Python + data structure. + + - Error message cleanups: Made consistent the format of error + messages (now all start with "scons: ***") and warning messages (now + all start with "scons: warning:"). Caught more cases with the "Do + not know how to build" error message. + + - Added support for the MinGW tool chain. + + - Added a --debug=includes option. diff --git a/Changelogs/Changes-0.11.txt b/Changelogs/Changes-0.11.txt new file mode 100644 index 0000000000..47b6ae9989 --- /dev/null +++ b/Changelogs/Changes-0.11.txt @@ -0,0 +1,89 @@ +RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600 + + From Chad Austin: + + - Add support for IRIX and the SGI MIPSPro tool chain. + + - Support using the MSVC tool chain when running Cygwin Python. + + From Michael Cook: + + - Avoid losing signal bits in the exit status from a command, + helping terminate builds on interrupt (CTRL+C). + + From Charles Crain: + + - Added new AddPreAction() and AddPostAction() functions that support + taking additional actions before or after building specific targets. + + - Add support for the PharLap ETS tool chain. + + From Steven Knight: + + - Allow Python function Actions to specify a list of construction + variables that should be included in the Action's signature. + + - Allow libraries in the LIBS variable to explicitly include the prefix + and suffix, even when using the GNU linker. + (Bug reported by Neal Becker.) + + - Use DOS-standard CR-LF line endings in the scons.bat file. + (Bug reported by Gary Ruben.) + + - Doc changes: Eliminate description of deprecated "name" keyword + argument from Builder definition (reported by Gary Ruben). + + - Support using env.Append() on BUILDERS (and other dictionaries). + (Bug reported by Bj=F6rn Bylander.) + + - Setting the BUILDERS construction variable now properly clears + the previous Builder attributes from the construction Environment. + (Bug reported by Bj=F6rn Bylander.) + + - Fix adding a prefix to a file when the target isn't specified. + (Bug reported by Esa Ilari Vuokko.) + + - Clean up error messages from problems duplicating into read-only + BuildDir directories or into read-only files. + + - Add a CommandAction.strfunction() method, and add an "env" argument + to the FunctionAction.strfunction() method, so that all Action + objects have strfunction() methods, and the functions for building + and returning a string both take the same arguments. + + - Add support for new CacheDir() functionality to share derived files + between builds, with related options --cache-disable, --cache-force, + and --cache-show. + + - Change the default behavior when no targets are specified to build + everything in the current directory and below (like Make). This + can be disabled by specifying Default(None) in an SConscript. + + - Revamp SCons installation to fix a case-sensitive installation + on Win32 systems, and to add SCons-specific --standard-lib, + --standalone-lib, and --version-lib options for easier user + control of where the libraries get installed. + + - Fix the ability to directly import and use Platform and Tool modules + that have been implicitly imported into an Environment(). + + - Add support for allowing an embedding interface to annotate a node + when it's created. + + - Extend the SConscript() function to accept build_dir and duplicate + keyword arguments that function like a BuildDir() call. + + From Steve Leblanc: + + - Fix the output of -c -n when directories are involved, so it + matches -c. + + From Anthony Roach: + + - Use a different shared object suffix (.os) when using gcc so shared + and static objects can exist side-by-side in the same directory. + + - Allow the same object files on Win32 to be linked into either + shared or static libraries. + + - Cache implicit cache values when using --implicit-cache. diff --git a/Changelogs/Changes-0.12.txt b/Changelogs/Changes-0.12.txt new file mode 100644 index 0000000000..dc6bcbd523 --- /dev/null +++ b/Changelogs/Changes-0.12.txt @@ -0,0 +1,96 @@ +RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600 + + From Charles Crain: + + - Added support for the Perforce source code management system. + + - Fix str(Node.FS) so that it returns a path relative to the calling + SConscript file's directory, not the top-level directory. + + - Added support for a separate src_dir argument to SConscript() + that allows explicit specification of where the source files + for an SConscript file can be found. + + - Support more easily re-usable flavors of command generators by + calling callable variables when strings are expanded. + + From Steven Knight: + + - Added an INSTALL construction variable that can be set to a function + to control how the Install() and InstallAs() Builders install files. + The default INSTALL function now copies, not links, files. + + - Remove deprecated features: the "name" argument to Builder objects, + and the Environment.Update() method. + + - Add an Environment.SourceCode() method to support fetching files + from source code systems. Add factory methods that create Builders + to support BitKeeper, CVS, RCS, and SCCS. Add support for fetching + files from RCS or SCCS transparently (like GNU Make). + + - Make the internal to_String() function more efficient. + + - Make the error message the same as other build errors when there's a + problem unlinking a target file in preparation for it being built. + + - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and + warn if the user tries to set them in a construction environment. + + - Add support for Tar and Zip files. + + - Better documentation of the different ways to export variables to a + subsidiary SConscript file. Fix documentation bugs in a tools + example, places that still assumed SCons split strings on white + space, and typos. + + - Support fetching arbitrary files from the TARGETS or SOURCES lists + (e.g. ${SOURCES[2]}) when calculating the build signature of a + command. + + - Don't silently swallow exceptions thrown by Scanners (or other + exceptions while finding a node's dependent children). + + - Push files to CacheDir() before calling the superclass built() + method (which may clear the build signature as part of clearing + cached implicit dependencies, if the file has a source scanner). + (Bug reported by Jeff Petkau.) + + - Raise an internal error if we attempt to push a file to CacheDir() + with a build signature of None. + + - Add an explicit Exit() function for terminating early. + + - Change the documentation to correctly describe that the -f option + doesn't change to the directory in which the specified file lives. + + - Support changing directories locally with SConscript directory + path names relative to any SConstruct file specified with -f. + This allows you to build in another directory by simply changing + there and pointing at the SConstruct file in another directory. + + - Change the default SConscriptChdir() behavior to change to the + SConscript directory while it's being read. + + - Fix an exception thrown when the -U option was used with no + Default() target specified. + + - Fix -u so that it builds things in corresponding build directories + when used in a source directory. + + From Lachlan O'Dea: + + - Add SharedObject() support to the masm tool. + + - Fix WhereIs() to return normalized paths. + + From Jeff Petkau: + + - Don't copy a built file to a CacheDir() if it's already there. + + - Avoid partial copies of built files in a CacheDir() by copying + to a temporary file and renaming. + + From Anthony Roach: + + - Fix incorrect dependency-cycle errors when an Aliased source doesn't + exist. diff --git a/Changelogs/Changes-0.13.txt b/Changelogs/Changes-0.13.txt new file mode 100644 index 0000000000..af838950bf --- /dev/null +++ b/Changelogs/Changes-0.13.txt @@ -0,0 +1,9 @@ +RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600 + + From Charles Crain: + + - Fix a bug when BuildDir(duplicate=0) is used and SConscript + files are called from within other SConscript files. + + - Support (older) versions of Perforce which don't set the Windows + registry. diff --git a/Changelogs/Changes-0.14.txt b/Changelogs/Changes-0.14.txt new file mode 100644 index 0000000000..6ae3b8e5d4 --- /dev/null +++ b/Changelogs/Changes-0.14.txt @@ -0,0 +1,146 @@ +RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500 + + From Chad Austin: + + - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC + when compiling them. + + - Use 'rm' to remove files under Cygwin. + + - Add a PLATFORM variable to construction environments. + + - Remove the "platform" argument from tool specifications. + + - Propogate PYTHONPATH when running the regression tests so distutils + can be found in non-standard locations. + + - Using MSVC long command-line linking when running Cygwin. + + - Portability fixes for a lot of tests. + + - Add a Value Node class for dependencies on in-core Python values. + + From Allen Bierbaum: + + - Pass an Environment to the Options validator method, and + add an Options.Save() method. + + From Steve Christensen: + + - Add an optional sort function argument to the GenerateHelpText() + Options function. + + - Evaluate the "varlist" variables when computing the signature of a + function action. + + From Charles Crain: + + - Parse the source .java files for class names (including inner class + names) to figure out the target .class files that will be created. + + - Make Java support work with Repositories and SConscriptChdir(0). + + - Pass Nodes, not strings, to Builder emitter functions. + + - Refactor command-line interpolation and signature calculation + so we can use real Node attributes. + + From Steven Knight: + + - Add Java support (javac, javah, jar and rmic). + + - Propagate the external SYSTEMROOT environment variable into ENV on + Win32 systems, so external commands that use sockets will work. + + - Add a .posix attribute to PathList expansions. + + - Check out CVS source files using POSIX path names (forward slashes + as separators) even on Win32. + + - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a + Node's state, allowing it to be re-evaluated by continuous + integration build interfaces. + + - Change the name of the Set{Build,Content}SignatureType() functions + to {Target,Source}Signatures(). Deprecate the old names but support + them for backwards compatibility. + + - Add internal SCons.Node.FS.{Dir,File}.Entry() methods. + + - Interpolate the null string if an out-of-range subscript is used + for a construction variable. + + - Fix the internal Link function so that it properly links or copies + files in subsidiary BuildDir directories. + + - Refactor the internal representation of a single execution instance + of an action to eliminate redundant signature calculations. + + - Eliminate redundant signature calculations for Nodes. + + - Optimize out calling hasattr() before accessing attributes. + + - Say "Cleaning targets" (not "Building...") when the -c option is + used. + + From Damyan Pepper: + + - Quote the "Entering directory" message like Make. + + From Stefan Reichor: + + - Add support for using Ghostscript to convert Postscript to PDF files. + + From Anthony Roach: + + - Add a standalone "Alias" function (separate from an Environment). + + - Make Export() work for local variables. + + - Support passing a dictionary to Export(). + + - Support Import('*') to import everything that's been Export()ed. + + - Fix an undefined exitvalmap on Win32 systems. + + - Support new SetOption() and GetOption() functions for setting + various command-line options from with an SConscript file. + + - Deprecate the old SetJobs() and GetJobs() functions in favor of + using the new generic {Set,Get}Option() functions. + + - Fix a number of tests that searched for a Fortran compiler using the + external PATH instead of what SCons would use. + + - Fix the interaction of SideEffect() and BuildDir() so that (for + example) PDB files get put correctly in a BuildDir(). + + From David Snopek: + + - Contribute the "Autoscons" code for Autoconf-like checking for + the existence of libraries, header files and the like. + + - Have the Tool() function add the tool name to the $TOOLS + construction variable. + + From Greg Spencer: + + - Support the C preprocessor #import statement. + + - Allow the SharedLibrary() Builder on Win32 systems to be able to + register a newly-built dll using regsvr32. + + - Add a Builder for Windows type library (.tlb) files from IDL files. + + - Add an IDL scanner. + + - Refactor the Fortran, C and IDL scanners to share common logic. + + - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE. + + From Christoph Wiedemann: + + - Integrate David Snopek's "Autoscons" code as the new SConf + configuration subsystem, including caching of values between + runs (using normal SCons dependency mechanisms), tests, and + documentation. diff --git a/Changelogs/Changes-0.90.txt b/Changelogs/Changes-0.90.txt new file mode 100644 index 0000000000..0b148c0241 --- /dev/null +++ b/Changelogs/Changes-0.90.txt @@ -0,0 +1,91 @@ +RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500 + + From Chad Austin: + + - Fix the _concat() documentation, and add a test for it. + + - Portability fixes for non-GNU versions of lex and yacc. + + From Matt Balvin: + + - Fix handling of library prefixes when the subdirectory matches + the prefix. + + From Timothee Bessett: + + - Add an M4 Builder. + + From Charles Crain: + + - Use '.lnk' as the suffix on the temporary file for linking long + command lines (necessary for the Phar Lap linkloc linker). + + - Save non-string Options values as their actual type. + + - Save Options string values that contain a single quote correctly. + + - Save any Options values that are changed from the default + Environment values, not just ones changed on the command line or in + an Options file. + + - Make closing the Options file descriptor exception-safe. + + From Steven Knight: + + - SCons now enforces (with an error) that construction variables + must have the same form as valid Python identifiers. + + - Fix man page bugs: remove duplicate AddPostAction() description; + document no_import_lib; mention that CPPFLAGS does not contain + $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS; + mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS + nor $_LIBDIRFLAGS. + + - Eliminate a dependency on the distutils.fancy_getopt module by + copying and pasting its wrap_text() function directly. + + - Make the Script.Options() subclass match the underlying base class + implementation. + + - When reporting a target is up to date, quote the target like make + (backquote-quote) instead of with double quotes. + + - Fix handling of ../* targets when using -U, -D or -u. + + From Steve Leblanc: + + - Don't update the .sconsign files when run with -n. + + From Gary Oberbrunner: + + - Add support for the Intel C Compiler (icl.exe). + + From Anthony Roach + + - Fix Import('*'). + + From David Snopek + + - Fix use of SConf in paths with white space in them. + + - Add CheckFunc and CheckType functionality to SConf. + + - Fix use of SConf with Builders that return a list of nodes. + + From David Snopek and Christoph Wiedemann + + - Fix use of the SConf subsystem with SConscriptChdir(). + + From Greg Spencer + + - Check for the existence of MS Visual Studio on disk before using it, + to avoid getting fooled by leftover junk in the registry. + + - Add support for MSVC++ .NET. + + - Add support for MS Visual Studio project files (DSP, DSW, + SLN and VCPROJ files). + + From Christoph Wiedemann + + - SConf now works correctly when the -n and -q options are used. diff --git a/Changelogs/Changes-0.91.txt b/Changelogs/Changes-0.91.txt new file mode 100644 index 0000000000..872d19f305 --- /dev/null +++ b/Changelogs/Changes-0.91.txt @@ -0,0 +1,137 @@ +RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500 + + From Chad Austin: + + - Support specifying a list of tools when calling Environment.Copy(). + + - Give a Value Nodes a timestamp of the system time when they're + created, so they'll work when using timestamp-based signatures. + + - Add a DefaultEnvironment() function that only creates a default + environment on-demand (for fetching source files, e.g.). + + - Portability fix for test/M4.py. + + From Steven Knight: + + - Tighten up the scons -H help output. + + - When the input yacc file ends in .yy and the -d flag is specified, + recognize that a .hpp file (not a .h file) will be created. + + - Make builder prefixes work correctly when deducing a target + from a source file name in another directory. + + - Documentation fixes: typo in the man page; explain up-front about + not propagating the external environment. + + - Use "cvs co -d" instead of "cvs co -p >" when checking out something + from CVS with a specified module name. This avoids zero-length + files when there is a checkout error. + + - Add an "sconsign" script to print the contents of .sconsign files. + + - Speed up maintaining the various lists of Node children by using + dictionaries to avoid "x in list" searches. + + - Cache the computed list of Node children minus those being Ignored + so it's only calculated once. + + - Fix use of the --cache-show option when building a Program() + (or using any other arbitrary action) by making sure all Action + instances have strfunction() methods. + + - Allow the source of Command() to be a directory. + + - Better error handling of things like raw TypeErrors in SConscripts. + + - When installing using "setup.py install --prefix=", suppress the + distutils warning message about adding the (incorrect) library + directory to your search path. + + - Correct the spelling of the "validater" option to "validator." + Add a DeprecatedWarning when the old spelling is used. + + - Allow a Builder's emitter to be a dictionary that maps source file + suffixes to emitter functions, using the suffix of the first file + in the source list to pick the right one. + + - Refactor the creation of the Program, *Object and *Library Builders + so that they're moved out of SCons.Defaults and created on demand. + + - Don't split SConscript file names on white space. + + - Document the SConscript function's "dirs" and "name" keywords. + + - Remove the internal (and superfluous) SCons.Util.argmunge() function. + + - Add /TP to the default CXXFLAGS for msvc, so it can compile all + of the suffixes we use as C++ files. + + - Allow the "prefix" and "suffix" attributes of a Builder to be + callable objects that return generated strings, or dictionaries + that map a source file suffix to the right prefix/suffix. + + - Support a MAXLINELINELENGTH construction variable on Win32 systems + to control when a temporary file is used for long command lines. + + - Make how we build .rpm packages not depend on the installation + locations from the distutils being used. + + - When deducing a target Node, create it directly from the first + source Node, not by trying to create the right string to pass to + arg2nodes(). + + - Add support for SWIG. + + From Bram Moolenaar: + + - Test portability fixes for FreeBSD. + + From Gary Oberbrunner: + + - Report the target being built in error messages when building + multiple sources from different extensions, or when the target file + extension can't be deduced, or when we don't have an action for a + file suffix. + + - Provide helpful error messages when the arguments to env.Install() + are incorrect. + + - Fix the value returned by the Node.prevsiginfo() method to conform + to a previous change when checking whether a node is current. + + - Supply a stack trace if the Taskmaster catches an exception. + + - When using a temporary file for a long link line on Win32 systems, + (also) print the command line that is being executed through the + temporary file. + + - Initialize the LIB environment variable when using the Intel + compiler (icl). + + - Documentation fixes: better explain the AlwaysBuild() function. + + From Laurent Pelecq: + + - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to + call pdb directly, don't call Python recursively. + + From Ben Scott: + + - Add support for a platform-independent CPPDEFINES variable. + + From Christoph Wiedemann: + + - Have the g++ Tool actually use g++ in preference to c++. + + - Have the gcc Tool actually use gcc in preference to cc. + + - Add a gnutools.py test of the GNU tool chain. + + - Be smarter about linking: use $CC by default and $CXX only if we're + linking with any C++ objects. + + - Avoid SCons hanging when a piped command has a lot of output to read. + + - Add QT support for preprocessing .ui files into .c files. diff --git a/Changelogs/Changes-0.92.txt b/Changelogs/Changes-0.92.txt new file mode 100644 index 0000000000..c6609e19c9 --- /dev/null +++ b/Changelogs/Changes-0.92.txt @@ -0,0 +1,20 @@ +RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500 + + From Charles Crain and Gary Oberbrunner: + + - Fix Tool import problems with the Intel and PharLap linkers. + + From Steven Knight + + - Refactor the DictCmdGenerator class to be a Selector subclass. + + - Allow the DefaultEnvironment() function to take arguments and pass + them to instantiation of the default construction environment. + + - Update the Debian package so it uses Python 2.2 and more closely + resembles the currently official Debian packaging info. + + From Gerard Patel + + - When the yacc -d flag is used, take the .h file base name from the + target .c file, not the source (matching what yacc does). diff --git a/Changelogs/Changes-0.93.txt b/Changelogs/Changes-0.93.txt new file mode 100644 index 0000000000..de1b2f820c --- /dev/null +++ b/Changelogs/Changes-0.93.txt @@ -0,0 +1,177 @@ +RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500 + + From J.T. Conklin: + + - On POSIX, execute commands with the more modern os.spawnvpe() + function, if it's available. + + - Scan .S, .spp and .SPP files for C preprocessor dependencies. + + - Refactor the Job.Parallel() class to use a thread pool without a + condition variable. This improves parallel build performance and + handles keyboard interrupts properly when -j is used. + + From Charles Crain: + + - Add support for a JARCHDIR variable to control changing to a + directory using the jar -C option. + + - Add support for detecting Java manifest files when using jar, + and specifying them using the jar m flag. + + - Fix some Python 2.2 specific things in various tool modules. + + - Support directories as build sources, so that a rebuild of a target + can be triggered if anything underneath the directory changes. + + - Have the scons.bat and scons.py files look for the SCons modules + in site-packages as well. + + From Christian Engel: + + - Support more flexible inclusion of separate C and C++ compilers. + + - Use package management tools on AIX and Solaris to find where + the comilers are installed, and what version they are. + + - Add support for CCVERSION and CXXVERSION variables for a number + of C and C++ compilers. + + From Sergey Fogel: + + - Add test cases for the new capabilities to run bibtex and to rerun + latex as needed. + + From Ralf W. Grosse-Kunstleve: + + - Accomodate anydbm modules that don't have a sync() method. + + - Allow SConsignFile() to take an argument specifying the DBM + module to be used. + + From Stephen Kennedy: + + - Add support for a configurable global .sconsign.dbm file which + can be used to avoid cluttering each directory with an individual + .sconsign file. + + From John Johnson: + + - Fix (re-)scanning of dependencies in generated or installed + header files. + + From Steven Knight: + + - The -Q option suppressed too many messages; fix it so that it only + suppresses the Reading/Building messages. + + - Support #include when there's no space before the opening quote + or angle bracket. + + - Accomodate alphanumeric version strings in EnsurePythonVersion(). + + - Support arbitrary expansion of construction variables within + file and directory arguments to Builder calls and Environment methods. + + - Add Environment-method versions of the following global functions: + Action(), AddPostAction(), AddPreAction(), Alias(), Builder(), + BuildDir(), CacheDir(), Clean(), Configure(), Default(), + EnsurePythonVersion(), EnsureSConsVersion(), Environment(), + Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(), + Import(), Literal(), Local(), Platform(), Repository(), Scanner(), + SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(), + Split(), TargetSignatures(), Tool(), Value(). + + - Add the following global functions that correspond to the same-named + Environment methods: AlwaysBuild(), Command(), Depends(), Ignore(), + Install(), InstallAs(), Precious(), SideEffect() and SourceCode(). + + - Add the following global functions that correspond to the default + Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(), + Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(), + PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(), + SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary() + and Zip(). + + - Rearrange the man page to show construction environment methods and + global functions in the same list, and to explain the difference. + + - Alphabetize the explanations of the builder methods in the man page. + + - Rename the Environment.Environment class to Enviroment.Base. + Allow the wrapping interface to extend an Environment by using its own + subclass of Environment.Base and setting a new Environment.Environment + variable as the calling entry point. + + - Deprecate the ParseConfig() global function in favor of a same-named + construction environment method. + + - Allow the Environment.WhereIs() method to take explicit path and + pathext arguments (like the underlying SCons.Util.WhereIs() function). + + - Remove the long-obsolete {Get,Set}CommandHandler() functions. + + - Enhance env.Append() to suppress null values when appropriate. + + - Fix ParseConfig() so it works regardless of initial construction + variable values. + + Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and + CheckLibWithHeader() to accept a list of header files that will be + #included in the test. The last one in the list is assumed to be + the one being checked for. (Prototype code contributed by Gerard + Patel and Niall Douglas). + + - Supply a warning when -j is used and threading isn't built in to + the current version of Python. + + - First release of the User's Guide (finally, and despite a lot + of things still missing from it...). + + From Clark McGrew: + + - Generalize the action for .tex files so that it will decide whether + a file is TeX or LaTeX, check the .aux output to decide if it should + run bibtex, and check the .log output to re-run LaTeX if needed. + + From Bram Moolenaar: + + - Split the non-SCons-specific functionality from SConf.py to a new, + re-usable Conftest.py module. + + From Gary Oberbrunner: + + - Allow a directory to be the target or source or dependency of a + Depends(), Ignore(), Precious() or SideEffect() call. + + From Gerard Patel: + + - Use the %{_mandir} macro when building our RPM package. + + From Marko Rauhamaa: + + - Have the closing message say "...terminated because of errors" if + there were any. + + From Anthony Roach: + + - On Win32 systems, only use "rm" to delete files if Cygwin is being + used. ("rm" doesn't understand Win32-format path names.) + + From Christoph Wiedemann: + + - Fix test/SWIG.py to find the Python include directory in all cases. + + - Fix a bug in detection of Qt installed on the local system. + + - Support returning Python 2.3 BooleanType values from Configure checks. + + - Provide an error message if someone mistakenly tries to call a + Configure check from within a Builder function. + + - Support calling a Builder when a Configure context is still open. + + - Handle interrupts better by eliminating all try:-except: blocks + which caught any and all exceptions, including KeyboardInterrupt. + + - Add a --duplicate= option to control how files are duplicated. diff --git a/Changelogs/Changes-0.94.txt b/Changelogs/Changes-0.94.txt new file mode 100644 index 0000000000..b64b240209 --- /dev/null +++ b/Changelogs/Changes-0.94.txt @@ -0,0 +1,30 @@ +RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600 + + From Hartmut Goebel: + + - Add several new types of canned functions to help create options: + BoolOption(), EnumOption(), ListOption(), PackageOption(), + PathOption(). + + From Steven Knight: + + - Fix use of CPPDEFINES with C++ source files. + + - Fix env.Append() when the operand is an object with a __cmp__() + method (like a Scanner instance). + + - Fix subclassing the Environment and Scanner classes. + + - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables. + + From Steve Leblanc: + + - SGI fixes: Fix C++ compilation, add a separate Tool/sgic++.py module. + + From Gary Oberbrunner: + + - Fix how the man page un-indents after examples in some browsers. + + From Vincent Risi: + + - Fix the C and C++ tool specifications for AIX. diff --git a/Changelogs/Changes-0.95.txt b/Changelogs/Changes-0.95.txt new file mode 100644 index 0000000000..ac0ef7e837 --- /dev/null +++ b/Changelogs/Changes-0.95.txt @@ -0,0 +1,233 @@ +RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600 + + From Chad Austin: + + - Replace print statements with calls to sys.stdout.write() so output + lines stay together when -j is used. + + - Add portability fixes for a number of tests. + + - Accomodate the fact that Cygwin's os.path.normcase() lies about + the underlying system being case-sensitive. + + - Fix an incorrect _concat() call in the $RCINCFLAGS definition for + the mingw Tool. + + - Fix a problem with the msvc tool with Python versions prior to 2.3. + + - Add support for a "toolpath" Tool() and Environment keyword that + allows Tool modules to be found in specified local directories. + + - Work around Cygwin Python's silly fiction that it's using a + case-sensitive file system. + + - More robust handling of data in VCComponents.dat. + + - If the "env" command is available, spawn commands with the more + general "env -" instead of "env -i". + + From Kerim Borchaev: + + - Fix a typo in a msvc.py's registry lookup: "VCComponents.dat", not + "VSComponents.dat". + + From Chris Burghart: + + - Fix the ability to save/restore a PackageOption to a file. + + From Steve Christensen: + + - Update the MSVS .NET and MSVC 6.0/7.0 path detection. + + From David M. Cooke: + + - Make the Fortran scanner case-insensitive for the INCLUDE string. + + From Charles Crain: + + - If no version of MSVC is detected but the tool is specified, + use the MSVC 6.0 paths by default. + + - Ignore any "6.1" version of MSVC found in the registry; this is a + phony version number (created by later service packs?) and would + throw off the logic if the user had any non-default paths configure. + + - Correctly detect if the user has independently configured the MSVC + "include," "lib" or "path" in the registry and use the appropriate + values. Previously, SCons would only use the values if all three + were set in the registry. + + - Make sure side-effect nodes are prepare()d before building their + corresponding target. + + - Preserve the ability to call BuildDir() multiple times with the + same target and source directory arguments. + + From Andy Friesen: + + - Add support for the Digital Mars "D" programming language. + + From Scott Lystig Fritchie: + + - Fix the ability to use a custom _concat() function in the + construction environment when calling _stripixes(). + + - Make the message about ignoring a missing SConscript file into a + suppressable Warning, not a hard-coded sys.stderr.write(). + + - If a builder can be called multiple times for a target (because + the sources and overrides are identical, or it's a builder with the + "multi" flag set), allow the builder to be called through multiple + environments so long as the builders have the same signature for + the environments in questions (that is, they're the same action). + + From Bob Halley: + + - When multiple targets are built by a single action, retrieve all + of them from cache, not just the first target, and exec the build + command if any of the targets isn't present in the cache. + + From Zephaniah Hull: + + - Fix command-line ARGUMENTS with multiple = in them. + + From Steven Knight: + + - Fix EnsureSConsVersion() so it checks against the SCons version, + not the Python version, on Pythons with sys.version_info. + + - Don't swallow the AttributeError when someone uses an expansion like + $TARGET.bak, so we can supply a more informative error message. + + - Fix an odd double-quote escape sequence in the man page. + + - Fix looking up a naked drive letter as a directory (Dir('C:')). + + - Support using File nodes in the LIBS construction variable. + + - Allow the LIBS construction variable to be a single string or File + node, not a list, when only one library is needed. + + - Fix typos in the man page: JAVACHDIR => JARCHDIR; add "for_signature" + to the __call__() example in the "Variable Substitution" section. + + - Correct error message spellings of "non-existant" to "non-existent." + + - When scanning for libraries to link with, don't append $LIBPREFIXES + or $LIBSUFFIXES values to the $LIBS values if they're already present. + + - Add a ZIPCOMPRESSION construction variable to control whether the + internal Python action for the Zip Builder compresses the file or + not. The default value is zipfile.ZIP_DEFLATED, which generates + a compressed file. + + - Refactor construction variable expansion to support recursive + expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going + into an infinite loop. Support this in all construction variable + overrides, as well as when copying Environments. + + - Fix calling Configure() from more than one subsidiary SConscript file. + + - Fix the env.Action() method so it returns the correct type of + Action for its argument(s). + + - Fix specifying .class files as input to JavaH with the .class suffix + when they weren't generated using the Java Builder. + + - Make the check for whether all of the objects going into a + SharedLibrary() are shared work even if the object was built in a + previous run. + + - Supply meaningful error messages, not stack traces, if we try to add + a non-Node as a source, dependency, or ignored dependency of a Node. + + - Generate MSVS Project files that re-invoke SCons properly regardless + of whether the file was built via scons.bat or scons.py. + (Thanks to Niall Douglas for contributing code and testing.) + + - Fix TestCmd.py, runtest.py and specific tests to accomodate being + run from directories whose paths include white space. + + - Provide a more useful error message if a construction variable + expansion contains a syntax error during evaluation. + + - Fix transparent checkout of implicit dependency files from SCCS + and RCS. + + - Added new --debug=count, --debug=memory and --debug=objects options. + --debug=count and --debug=objects only print anything when run + under Python 2.1 or later. + + - Deprecate the "overrides" keyword argument to Builder() creation + in favor of using keyword argument values directly (like we do + for builder execution and the like). + + - Always use the Builder overrides in substitutions, not just if + there isn't a target-specific environment. + + - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE, + so Builder command lines can find things in Repository source + directories when using BuildDir. + + - Fix the M4 Builder so that it chdirs to the Repository directory + when the input file is in the source directory of a BuildDir. + + - Save memory at build time by allowing Nodes to delete their build + environments after they've been built. + + - Add AppendUnique() and PrependUnique() Environment methods, which + add values to construction variables like Append() and Prepend() + do, but suppress any duplicate elements in the list. + + - Allow the 'qt' tool to still be used successfully from a copied + Environment. The include and library directories previously ended up + having the same string re-appended to the end, yielding an incorrect + path name. + + - Supply a more descriptive error message when the source for a target + can't be found. + + - Initialize all *FLAGS variables with objects do the right thing with + appending flags as strings or lists. + + - Make things like ${TARGET.dir} work in *PATH construction variables. + + - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether + ATL and MFC directories are included in the default INCLUDE and + LIB paths. + + - Document the dbm_module argument to the SConsignFile() function. + + From Vincent Risi: + + - Add support for the bcc32, ilink32 and tlib Borland tools. + + From Anthony Roach: + + - Supply an error message if the user tries to configure a BuildDir + for a directory that already has one. + + - Remove documentation of the still-unimplemented -e option. + + - Add -H help text listing the legal --debug values. + + - Don't choke if a construction variable is a non-string value. + + - Build Type Libraries in the target directory, not the source + directory. + + - Add an appendix to the User's Guide showing how to accomplish + various common tasks in Python. + + From Greg Spencer: + + - Add support for Microsoft Visual Studio 2003 (version 7.1). + + - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder + is invoked, not when the tool is initialized. + + From Christoph Wiedemann: + + - When compiling Qt, make sure the moc_*.cc files are compiled using + the flags from the environment used to specify the target, not + the environment that first has the Qt Builders attached. diff --git a/Changelogs/Changes-0.96.1.txt b/Changelogs/Changes-0.96.1.txt new file mode 100644 index 0000000000..27d47e5cf7 --- /dev/null +++ b/Changelogs/Changes-0.96.1.txt @@ -0,0 +1,26 @@ +RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000 + + From Craig Bachelor: + + - Handle white space in the executable Python path name within in MSVS + project files by quoting the path. + + - Correct the format of a GUID string in a solution (.dsw) file so + MSVS can correctly "build enable" a project. + + From Steven Knight: + + - Add a must_exist flag to Delete() to let the user control whether + it's an error if the specified entry doesn't exist. The default + behavior is now to silently do nothing if it doesn't exist. + + - Package up the new Platform/darwin.py, mistakenly left out of 0.96. + + - Make the scons.bat REM statements into @REM so they aren't printed. + + - Make the SCons packaging SConscript files platform independent. + + From Anthony Roach: + + - Fix scanning of pre-compiled header (.pch) files for #includes, + broken in 0.96. diff --git a/Changelogs/Changes-0.96.90.txt b/Changelogs/Changes-0.96.90.txt new file mode 100644 index 0000000000..ad229690a2 --- /dev/null +++ b/Changelogs/Changes-0.96.90.txt @@ -0,0 +1,491 @@ +RELEASE 0.96.90 - Tue, 15 Feb 2005 21:21:12 +0000 + + NOTE: This was a pre-release of 0.97 for testing purposes. + + From Anonymous: + + - Fix Java parsing to avoid erroneously identifying a new array + of class instances as an anonymous inner class. + + - Fix a typo in the man page description of PathIsDirCreate. + + 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: + + - Handle exceptions from Python functions as build actions. + + - Add a set of canned PathOption validators: PathExists (the default), + PathIsFile, PathIsDir and PathIsDirCreate. + + From Matthew Doar: + + - Add support for .lex and .yacc file suffixes for Lex and Yacc files. + + From Eric Frias: + + - Huge performance improvement: wrap the tuples representing an + include path in an object, so that the time it takes to hash the + path doesn't grow porportionally to the length of the path. + + From Gottfried Ganssauge: + + - Fix SCons on SuSE/AMD-64 Linux by having the wrapper script also + check for the build engine in the parent directory of the Python + library directory (/usr/lib64 instead of /usr/lib). + + From Stephen Kennedy: + + - Speed up writing the .sconsign file at the end of a run by only + calling sync() once at the end, not after every entry. + + From Steven Knight: + + - When compiling with Microsoft Visual Studio, don't include the ATL and + MFC directories in the default INCLUDE and LIB environment variables. + + - Remove the following deprecated features: the ParseConfig() + global function (deprecated in 0.93); the misspelled "validater" + keyword to the Options.Add() method (deprecated in 0.91); the + SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and + GetJobs() global functions (deprecated in 0.14). + + - Fix problems with corrupting the .sconsign.dblite file when + interrupting builds by writing to a temporary file and renaming, + not writing the file directly. + + - Fix a 0.96 regression where when running with -k, targets built from + walking dependencies later on the command line would not realize + that a dependency had failed an earlier build attempt, and would + try to rebuild the dependent targets. + + - Change the final messages when using -k and errors occur from + "{building,cleaning} terminated because of errors" to "done + {building,cleaning} targets (errors occurred during {build,clean})." + + - Allow Configure.CheckFunc() to take an optional header argument + (already supported by Conftest.py) to specify text at the top of + the compiled test file. + + - Fix the --debug=explain output when a Python function action changed + so it prints a meaningful string, not the binary representation of + the function contents. + + - Allow a ListOption's default value(s) to be a Python list of specified + values, not just a string containing a comma-separated list of names. + + - Add a ParseDepends() function that will parse up a list of explicit + dependencies from a "make depend" style file. + + - Support the ability to change directory when executing an Action + through "chdir" keyword arguments to Action and Builder creation + and calls. + + - Fix handling of Action ojects (and other callables that don't match + our calling arguments) in construction variable expansions. + + - On Win32, install scons.bat in the Python directory when installing + from setup.py. (The bdist_wininst installer was already doing this.) + + - Fix env.SConscript() when called with a list of SConscipt files. + (The SConscript() global function already worked properly.) + + - Add a missing newline to the end of the --debug=explain "unknown + reasons" message. + + - Enhance ParseConfig() to work properly for spaces in between the -I, + -L and -l options and their arguments. + + - Packaging build fix: Rebuild the files that are use to report the + --version of SCons whenever the development version number changes. + + - Fix the ability to specify a target_factory of Dir() to a Builder, + which the default create-a-directory Builder was interfering with. + + - Mark a directory as built if it's created as part of the preparation + for another target, to avoid trying to build it again when it comes + up in the target list. + + - Allow a function with the right calling signature to be put directly + in an Environment's BUILDERS dictionary, making for easier creation + and use of wrappers (pseudo-Builders) that call other Builders. + + - On Python 2.x, wrap lists of Nodes returned by Builders in a UserList + object that adds a method that makes str() object return a string + with all of the Nodes expanded to their path names. (Builders under + Python 1.5.2 still return lists to avoid TypeErrors when trying + to extend() list, so Python 1.5.2 doesn't get pretty-printing of Node + lists, but everything should still function.) + + - Allow Aliases to have actions that will be executed whenever + any of the expanded Alias targets are out of date. + + - Fix expansion of env.Command() overrides within target and + source file names. + + - Support easier customization of what's displayed by various default + actions by adding lots of new construction variables: $ARCOMSTR, + $ASCOMSTR, $ASPPCOMSTR, $BIBTEXCOMSTR, $BITKEEPERCOMSTR, $CCCOMSTR, + $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR, + $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR, + $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR, + $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR, + $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR, + $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. + + From Wayne Lee: + + - Avoid "maximum recursion limit" errors when removing $(-$) pairs + from long command lines. + + From Clive Levinson: + + - Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and + $CCFLAGS, and -mwindows to $LINKFLAGS. + + From Michael McCracken: + + - Add a new "applelink" tool to handle the things like Frameworks and + bundles that Apple has added to gcc for linking. + + - Use more appropriate default search lists of linkers, compilers and + and other tools for the 'darwin' platform. + + - Add a LoadableModule Builder that builds a bundle on Mac OS X (Darwin) + and a shared library on other systems. + + - Improve SWIG tests for use on Mac OS X (Darwin). + + From Elliot Murphy: + + - Enhance the tests to guarantee persistence of ListOption + values in saved options files. + + - Supply the help text when -h is used with the -u, -U or -D options. + + From Christian Neeb: + + - Fix the Java parser's handling of string definitions to avoid ignoring + subsequent code. + + From Han-Wen Nienhuys: + + - Optimize variable expansion by: using the re.sub() method (when + possible); not using "eval" for variables for which we can fetch the + value directory; avoiding slowing substitution logic when there's no + '$' in the string. + + From Gary Oberbrunner: + + - Add an Environment.Dump() method to print the contents of a + construction environment. + + - Allow $LIBS (and similar variables) to contain explicit File Nodes. + + - Change ParseConfig to add the found library names directly to the + $LIBS variable, instead of returning them. + + - Add ParseConfig() support for the -framework GNU linker option. + + - Add a PRINT_CMD_LINE_FUNC construction variable to allow people + to filter (or log) command-line output. + + - Print an internal Python stack trace in response to an otherwise + unexplained error when --debug=stacktrace is specified. + + - Add a --debug=findlibs option to print what's happening when + the scanner is searching for libraries. + + - Allow Tool specifications to be passed a dictionary of keyword + arguments. + + - Support an Options default value of None, in which case the variable + will not be added to the construction environment unless it's set + explicitly by the user or from an Options file. + + - Avoid copying __builtin__ values into a construction environment's + dictionary when evaluating construction variables. + + - Add a new cross-platform intelc.py Tool that can detect and + configure the Intel C++ v8 compiler on both Windows, where it's + named icl, and Linux, where it's named icc. It also checks that + the directory specified in the Windows registry exists, and sets a + new $INTEL_C_COMPILER_VERSION construction variable to identify the + version being used. (Niall Douglas contributed an early prototype + of parts of this module.) + + - Fix the private Conftest._Have() function so it doesn't change + non-alphanumeric characters to underscores. + + - Supply a better error message when a construction variable expansion + has an unknown attribute. + + - Documentation changes: Update the man page to describe use of + filenames or Nodes in $LIBS. + + From Chris Pawling: + + - Have the linkloc tool use $MSVS_VERSION to select the Microsoft + Visual Studio version to use. + + From Kevin Quick: + + - Fix the Builder name returned from ListBuilders and other instances + of subclasses of the BuilderBase class. + + - Add Builders and construction variables to support rpcgen: + RPCGenClient(), RPCGenHeader(), RPCGenService(), RPCGenXDR(), + $RPCGEN, $RPCGENFLAGS, $RPCGENCLIENTFLAGS, $RPCGENHEADERFLAGS, + $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS. + + - Update the man page to document that prefix and suffix Builder + keyword arguments can be strings, callables or dictionaries. + + - Provide more info in the error message when a user tries to build + a target multiple ways. + + - Fix Delete() when a file doesn't exist and must_exist=1. (We were + unintentionally dependent on a bug in versions of the Python shutil.py + module prior to Python 2.3, which would generate an exception for + a nonexistent file even when ignore_errors was set.) + + - Only replace a Node's builder with a non-null source builder. + + - Fix a stack trace when a suffix selection dictionary is passed + an empty source file list. + + - Allow optional names to be attached to Builders, for default + Builders that don't get attached to construction environments. + + - Fix problems with Parallel Task Exception handling. + + - Build targets in an associated BuildDir even if there are targets + or subdirectories locally in the source directory. + + - If a FunctionAction has a callable class as its underlying Python + function, use its strfunction() method (if any) to display the + action. + + - Fix handling when BuildDir() exists but is unwriteable. Add + "Stop." to those error messages for consistency. + + - Catch incidents of bad builder creation (without an action) and + supply meaningful error messages. + + - Fix handling of src_suffix values that aren't extensions (don't + begin with a '.'). + + - Don't retrieve files from a CacheDir, but report what would happen, + when the -n option is used. + + - Use the source_scanner from the target Node, not the source node + itself. + + - Internal Scanners fixes: Make sure Scanners are only passed Nodes. + Fix how a Scanner.Selector called its base class initialization. + Make comparisons of Scanner objects more robust. Add a name to + an internal default ObjSourceScanner. + + - Add a deprecated warning for use of the old "scanner" keyword argument + to Builder creation. + + - Improve the --debug=explain message when the build action changes. + + - Test enhancements in SourceCode.py, option-n.py, midl.py. Better + Command() and Scanner test coverage. Improved test infrastructure + for -c output. + + - Refactor the interface between Action and Executor objects to treat + Actions atomically. + + - The --debug=presub option will now report the pre-substitution + each action seprately, instead of reporting the entire list before + executing the actions one by one. + + - The --debug=explain option explaining a changed action will now + (more correctly) show pre-substitution action strings, instead of + the commands with substituted file names. + + - A Node (file) will now be rebuilt if its PreAction or PostAction + actions change. + + - Python Function actions now have their calling signature (target, + source, env) reported correctly when displayed. + + - Fix BuildDir()/build_dir handling when the build_dir is underneath + the source directory and trying to use entries from the build_dir + as sources for other targets in the build-dir. + + - Fix hard-coding of JDK path names in various Java tests. + + - Handle Python stack traces consistently (stop at the SConscript stack + frame, by default) even if the Python source code isn't available. + + - Improve the performance of the --debug={tree,dtree} options. + + - Add --debug=objects logging of creation of OverrideWarner, + EnvironmentCopy and EnvironmentOverride objects. + + - Fix command-line expansion of Python Value Nodes. + + - Internal cleanups: Remove an unnecessary scan argument. Associate + Scanners only with Builders, not nodes. Apply overrides once when + a Builder is called, not in multiple places. Cache results from the + Node.FS.get_suffix() and Node.get_build_env() methods. Use the Python + md5 modules' hexdigest() method, if there is one. Have Taskmaster + call get_stat() once for each Node and re-use the value instead of + calling it each time it needs the value. Have Node.depends_on() + re-use the list from the children() method instead of calling it + multiple times. + + - Use the correct scanner if the same source file is used for targets in + two different environments with the same path but different scanners. + + - Collect logic for caching values in memory in a Memoizer class, + which cleans up a lot of special-case code in various methods and + caches additional values to speed up most configurations. + + - Add a PathAccept validator to the list of new canned PathOption + validators. + + From Jeff Squyres: + + - Documentation changes: Use $CPPDEFINES instead of $CCFLAGS in man + page examples. + + From Levi Stephen: + + - Allow $JARCHDIR to be expanded to other construction variables. + + From Christoph Wiedemann: + + - Add an Environment.SetDefault() method that only sets values if + they aren't already set. + + - Have the qt.py Tool not override variables already set by the user. + + - Add separate $QT_BINPATH, $QT_CPPPATH and $QT_LIBPATH variables + so these can be set individually, instead of being hard-wired + relative to $QTDIR. + + - The %TEMP% and %TMP% external environment variables are now propagated + automatically to the command execution environment on Windows systems. + + - A new --config= command-line option allows explicit control of + of when the Configure() tests are run: --config=force forces all + checks to be run, --config=cache uses all previously cached values, + --config=auto (the default) runs tests only when dependency analysis + determines it's necessary. + + - The Configure() subsystem can now write a config.h file with values + like HAVE_STDIO_H, HAVE_LIBM, etc. + + - The Configure() subsystem now executes its checks silently when the + -Q option is specified. + + - The Configure() subsystem now reports if a test result is being + taken from cache, and prints the standard output and error output + of tests even when cached. + + - Configure() test results are now reported as "yes" or "no" instead of + "ok" or "failed." + + - Fixed traceback printing when calling the env.Configure() method + instead of the Configure() global function. + + - The Configure() subsystem now caches build failures in a .sconsign + file in the subdirectory, not a .cache file. This may cause + tests to be re-executed the first time after you install 0.97. + + - Additional significant internal cleanups in the Configure() subsystem + and its tests. + + - Have the Qt Builder make uic-generated files dependent on the .ui.h + file, if one exists. + + - Add a test to make sure that SCons source code does not contain + try:-except: blocks that catch all errors, which potentially catch + and mask keyboard interrupts. + + - Fix us of TargetSignatures('content') with the SConf subsystem. + + From Russell Yanofsky: + + - Add support for the Metrowerks Codewarrior compiler and linker + (mwcc and mwld). diff --git a/Changelogs/Changes-0.96.91.txt b/Changelogs/Changes-0.96.91.txt new file mode 100644 index 0000000000..068c1a7e50 --- /dev/null +++ b/Changelogs/Changes-0.96.91.txt @@ -0,0 +1,198 @@ +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. + + 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 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 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. + + From Greg Ward: + + - Fix a misplaced line in the man page. diff --git a/Changelogs/Changes-0.96.92.txt b/Changelogs/Changes-0.96.92.txt new file mode 100644 index 0000000000..ce3b3958e1 --- /dev/null +++ b/Changelogs/Changes-0.96.92.txt @@ -0,0 +1,272 @@ +RELEASE 0.96.92 - Mon, 10 Apr 2006 21:08:22 -0400 + + NOTE: This was a pre-release of 0.97 for testing purposes. + + From Anonymous: + + - 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. + + - Add support for a support "runfile" parameter to Microsoft + Visual Studio project file creation. + + - Put the project GUID, not the solution GUID, in the right spot + in the 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 Johnson: + + - Add a NoClean() Environment method and function to override removal + of targets during a -c clean, including documentation and tests. + + 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. + + - Fix (?) a runtest.py hang on Windows when the --xml option is used. + + - Change the message when an error occurs trying to interact with the + file system to report the target(s) in square brackets (as before) and + the actual file or directory that encountered the error afterwards. + + From Chen Lee: + + - Add x64 support for Microsoft Visual Studio 8. + + From Baptiste Lepilleur: + + - Support the --debug=memory option on Windows when the Python version + has the win32process and win32api modules. + + - Add support for Visual Studio 2005 Pro. + + - Fix portability issues in various tests: test/Case.py, + Test/Java/{JAR,JARCHDIR,JARFLAGS,JAVAC,JAVACFLAGS,JAVAH,RMIC}.py, + test/MSVS/vs-{6.0,7.0,7.1,8.0}-exec.py, + test/Repository/{Java,JavaH,RMIC}.py, + test/QT/{generated-ui,installed,up-to-date,warnings}.py, + test/ZIP/ZIP.py. + + - Ignore pkgchk errors on Solaris when searching for the C++ compiler. + + - Speed up the SCons/EnvironmentTests.py unit tests. + + - Add a --verbose= option to runtest.py to print executed commands + and their output at various levels. + + 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 Adam MacBeth: + + - Fix detection of additional Java inner classes following use of a + "new" keyword inside an inner class. + + 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 Erick Tryzelaar: + + - Fix the error message when trying to report that a given option is + not gettable/settable from an SConscript file. + + 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 David J. Van Maren: + + - Only filter common prefixes from source files names in Visual Studio + project files if the prefix is a complete (sub)directory name. + + From Thad Ward: + + - If $MSVSVERSIONS is already set, don't overwrite it with + information from the registry. diff --git a/Changelogs/Changes-0.96.93.txt b/Changelogs/Changes-0.96.93.txt new file mode 100644 index 0000000000..1acfbc4c8e --- /dev/null +++ b/Changelogs/Changes-0.96.93.txt @@ -0,0 +1,200 @@ +RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600 + + NOTE: This is a pre-release of 0.97 for testing purposes. + + From Anonymous: + + - Allow Python Value Nodes to be Builder targets. + + From Matthias: + + - Only filter Visual Studio common filename prefixes on complete + directory names. + + From Chad Austin: + + - Fix the build of the SCons documentation on systems that don't + have "python" in the $PATH. + + From Ken Boortz: + + - Enhance ParseConfig() to recognize options that begin with '+'. + + From John Calcote, Elliot Murphy: + + - Document ways to override the CCPDBFLAGS variable to use the + Microsoft linker's /Zi option instead of the default /Z7. + + From Christopher Drexler: + + - Make SCons aware bibtex must be called if any \include files + cause creation of a bibliography. + + - Make SCons aware that "\bilbiography" in TeX source files means + that related .bbl and .blg bibliography files will be created. + (NOTE: This still needs to search for the string in \include files.) + + From David Gruener: + + - Fix inconsistent handling of Action strfunction arguments. + + - Preserve white space in display Action strfunction strings. + + From James Y. Knight and Gerard Patel: + + - Support creation of shared object files from assembly language. + + From Steven Knight: + + - Speed up the Taskmaster significantly by avoiding unnecessary + re-scans of Nodes to find out if there's work to be done, having it + track the currently-executed top-level target directly and not + through its presence on the target list, and eliminating some other + minor list(s), method(s) and manipulation. + + - Fix the expansion of $TARGET and $SOURCE in the expansion of + $INSTALLSTR displayed for non-environment calls to InstallAs(). + + - Fix the ability to have an Alias() call refer to a directory + name that's not identified as a directory until later. + + - Enhance runtest.py with an option to use QMTest as the harness. + This will become the default behavior as we add more functionality + to the QMTest side. + + - Let linking on mingw use the default function that chooses $CC (gcc) + or $CXX (g++) depending on whether there are any C++ source files. + + - Work around a bug in early versions of the Python 2.4 profile module + that caused the --profile= option to fail. + + - Only call Options validators and converters once when initializing a + construction environment. + + - Fix the ability of env.Append() and env.Prepend(), in all known Python + versions, to handle different input value types when the construction + variable being updated is a dictionary. + + - Add a --cache-debug option for information about what files it's + looking for in a CacheDir(). + + - Document the difference in construction variable expansion between + {Action,Builder}() and env.{Action,Builder}(). + + - Change the name of env.Copy() to env.Clone(), keeping the old name + around for backwards compatibility (with the intention of eventually + phasing it out to avoid confusion with the Copy() Action factory). + + From Arve Knudsen: + + - Support cleaning and scanning SWIG-generated files. + + From Carsten Koch: + + - Allow selection of Visual Studio version by setting $MSVS_VERSION + after construction environment initialization. + + From Jean-Baptiste Lab: + + - Try using zipimport if we can't import Tool or Platform modules + using the normal "imp" module. This allows SCons to be packaged + using py2exe's all-in-one-zip-file approach. + + From Ben Liblit: + + - Do not re-scan files if the scanner returns no implicit dependencies. + + From Sanjoy Mahajan: + + - Change use of $SOURCES to $SOURCE in all TeX-related Tool modules. + + From Joel B. Mohler: + + - Make SCons aware that "\makeindex" in TeX source files means that + related .ilg, .ind and .idx index files will be created. + (NOTE: This still needs to search for the string in \include files.) + + - Prevent scanning the TeX .aux file for additional files from + trying to remove it twice when the -c option is used. + + From Leanid Nazdrynau: + + - Give the MSVC RES (resource) Builder a src_builder list and a .rc + src_suffix so other builders can generate .rc files. + + From Matthew A. Nicholson: + + - Enhance Install() and InstallAs() to handle directory trees as sources. + + From Jan Nijtmans: + + - Don't use the -fPIC flag when using gcc on Windows (e.g. MinGW). + + From Greg Noel: + + - Add an env.ParseFlags() method that provides separate logic for + parsing GNU tool chain flags into a dictionary. + + - Add an env.MergeFlags() method to apply an arbitrary dictionary + of flags to a construction environment's variables. + + From Gary Oberbrunner: + + - Fix parsing tripartite Intel C compiler version numbers on Linux. + + - Extend the ParseConfig() function to recognize -arch and + -isysroot options. + + - Have the error message list the known suffixes when a Builder call + can't build a source file with an unknown suffix. + + From Karol Pietrzak: + + - Avoid recursive calls to main() in the program snippet used by the + SConf subsystem to test linking against libraries. This changes the + default behavior of CheckLib() and CheckLibWithHeader() to print + "Checking for C library foo..." instead of "Checking for main() + in C library foo...". + + From John Pye: + + - Throw an exception if a command called by ParseConfig() or + ParseFlags() returns an error. + + From Stefan Seefeld: + + - Initial infrastructure for running SCons tests under QMTest. + + From Sohail Somani: + + - Fix tests that fail due to gcc warnings. + + From Dobes Vandermeer: + + - In stack traces, print the full paths of SConscript files. + + From Atul Varma: + + - Fix detection of Visual C++ Express Edition. + + From Dobes Vandermeer: + + - Let the src_dir option to the SConscript() function affect all the + the source file paths, instead of treating all source files paths + as relative to the SConscript directory itself. + + From Nicolas Vigier: + + - Fix finding Fortran modules in build directories. + + - Fix use of BuildDir() when the source file in the source directory + is a symlink with a relative path. + + From Edward Wang: + + - Fix the Memoizer when the SCons Python modules are executed from + .pyo files at different locations from where they were compiled. + + From Johan Zander: + + - Fix missing os.path.join() when constructing the $FRAMEWORKSDKDIR/bin. diff --git a/Changelogs/Changes-0.96.94.txt b/Changelogs/Changes-0.96.94.txt new file mode 100644 index 0000000000..e7e221a603 --- /dev/null +++ b/Changelogs/Changes-0.96.94.txt @@ -0,0 +1,147 @@ +RELEASE 0.96.94 - Sun, 07 Jan 2007 18:36:20 -0600 + + NOTE: This is a pre-release of 0.97 for testing purposes. + + From Anonymous: + + - Allow arbitrary white space after a SWIG %module declaration. + + From Paul: + + - When compiling resources under MinGW, make sure there's a space + between the --include-dir option and its argument. + + From Jay Kint: + + - Alleviate long command line issues on Windows by executing command + lines directly via os.spawnv() if the command line doesn't need + shell interpretation (has no pipes, redirection, etc.). + + From Walter Franzini: + + - Exclude additional Debian packaging files from the copyright check. + + From Fawad Halim: + + - Handle the conflict between the impending Python 2.6 'as' keyword + and our Tool/as.py module name. + + From Steven Knight: + + - Speed up the Node.FS.Dir.rel_path() method used to generate path names + that get put into the .sconsign* file(s). + + - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up + front, when we set the Node's name. (Duh...) + + - Reduce the Memoizer's responsibilities to simply counting hits and + misses when the --debug=memoizer option is used, not to actually + handling the key calculation and memoization itself. This speeds + up some configurations significantly, and should cause no functional + differences. + + - Add a new scons-time script with subcommands for generating + consistent timing output from SCons configurations, extracting + various information from those timings, and displaying them in + different formats. + + - Reduce some unnecessary stat() calls from on-disk entry type checks. + + - Fix SideEffect() when used with -j, which was badly broken in 0.96.93. + + - Propagate TypeError exceptions when evaluating construction variable + expansions up the stack, so users can see what's going on. + + - When disambiguating a Node.FS.Entry into a Dir or File, don't look + in the on-disk source directory until we've confirmed there's no + on-disk entry locally and there *is* one in the srcdir. This avoids + creating a phantom Node that can interfere with dependencies on + directory contents. + + - Add an AllowSubstExceptions() function that gives the SConscript + files control over what exceptions cause a string to expand to '' + vs. terminating processing with an error. + + - Allow the f90.py and f95.py Tool modules to compile earlier source + source files of earlier Fortran version. + + - Fix storing signatures of files retrieved from CacheDir() so they're + correctly identified as up-to-date next invocation. + + - Make sure lists of computed source suffixes cached by Builder objects + don't persist across changes to the list of source Builders (so the + addition of suffixes like .ui by the qt.py Tool module take effect). + + - Enhance the bootstrap.py script to allow it to be used to execute + SCons more easily from a checked-out source tree. + + From Ben Leslie: + + - Fix post-Memoizer value caching misspellings in Node.FS._doLookup(). + + From Rob Managan, Dmitry Mikhin and Joel B. Mohler: + + - Handle TeX/LaTeX files in subdirectories by changing directory + before invoking TeX/LaTeX. + + - Scan LaTeX files for \bibliography lines. + + - Support multiple file names in a "\bibliography{file1,file2}" string. + + - Handle TeX warnings about undefined citations. + + - Support re-running LaTeX if necessary due to a Table of Contents. + + From Dmitry Mikhin: + + - Return LaTeX if "Rerun to get citations correct" shows up on the next + line after the "Warning:" string. + + From Gary Oberbrunner: + + - Add #include lines to fix portability issues in two tests. + + - Eliminate some unnecessary os.path.normpath() calls. + + - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS + for options common to C and C++. + + From Tom Parker: + + - Have the error message print the missing file that Qt can't find. + + From John Pye: + + - Fix env.MergeFlags() appending to construction variable value of None. + + From Steve Robbins: + + - Fix the "sconsign" script when the .sconsign.dblite file is explicitly + specified on the command line (and not intuited from the old way of + calling it with just ".sconsign"). + + From Jose Pablo Ezequiel "Pupeno" Fernandez Silva: + + - Give the 'lex' tool knowledge of the additional target files produced + by the flex "--header-file=" and "--tables-file=" options. + + - Give the 'yacc' tool knowledge of the additional target files produced + by the bison "-g", "--defines=" and "--graph=" options. + + - Generate intermediate files with Objective C file suffixes (.m) when + the lex and yacc source files have appropriate suffixes (.lm and .ym). + + From Sohail Somain: + + - Have the mslink.py Tool only look for a 'link' executable on Windows + systems. + + From Vaclav Smilauer: + + - Add support for a "srcdir" keyword argument when calling a Builder, + which will add a srcdir prefix to all non-relative string sources. + + From Jonathan Ultis: + + - Allow Options converters to take the construction environment as + an optional argument. diff --git a/Changelogs/Changes-0.96.95.txt b/Changelogs/Changes-0.96.95.txt new file mode 100644 index 0000000000..e468950d12 --- /dev/null +++ b/Changelogs/Changes-0.96.95.txt @@ -0,0 +1,86 @@ +RELEASE 0.96.95 - Mon, 12 Feb 2007 20:25:16 -0600 + + From Anatoly Techtonik: + + - Add the scons.org URL and a package description to the setup.py + arguments. + + - Have the Windows installer add a registry entry for scons.bat in the + "App Paths" key, so scons.bat can be executed without adding the + directory to the %PATH%. (Python itself works this way.) + + From Anonymous: + + - Fix looking for default paths in Visual Studio 8.0 (and later). + + - Add -lm to the list of default D libraries for linking. + + From Matt Doar: + + - Provide a more complete write-your-own-Scanner example in the man page. + + From Ralf W. Grosse-Kunstleve: + + - Contributed upstream Python change to our copied subprocess.py module + for more efficient standard input processing. + + From Steven Knight: + + - Fix the Node.FS.Base.rel_path() method when the two nodes are on + different drive letters. (This caused an infinite loop when + trying to write .sconsign files.) + + - Fully support Scanners that use a dictionary to map file suffixes + to other scanners. + + - Support delayed evaluation of the $SPAWN variable to allow selection + of a function via ${} string expansions. + + - Add --srcdir as a synonym for -Y/--repository. + + - Document limitations of #include "file.h" with Repository(). + + - Fix use of a toolpath under the source directory of a BuildDir(). + + - Fix env.Install() with a file name portion that begins with '#'. + + - Fix ParseConfig()'s handling of multiple options in a string that's + replaced a *FLAGS construction variable. + + - Have the C++ tools initialize common C compilation variables ($CCFLAGS, + $SHCCFLAGS and $_CCCOMCOM) even if the 'cc' Tool isn't loaded. + + From Leanid Nazdrynau: + + - Fix detection of Java anonymous classes if a newline precedes the + opening brace. + + From Gary Oberbrunner: + + - Document use of ${} to execute arbitrary Python code. + + - Add support for: + 1) automatically adding a site_scons subdirectory (in the top-level + SConstruct directory) to sys.path (PYTHONPATH); + 2) automatically importing site_scons/site_init.py; + 3) automatically adding site_scons/site_tools to the toolpath. + + From John Pye: + + - Change ParseConfig() to preserve white space in arguments passed in + as a list. + + From a smith: + + - Fix adding explicitly-named Java inner class files (and any + other file names that may contain a '$') to Jar files. + + From David Vitek: + + - Add a NoCache() function to mark targets as unsuitable for propagating + to (or retrieving from) a CacheDir(). + + From Ben Webb: + + - If the swig -noproxy option is used, it won't generate a .py file, + so don't emit it as a target that we expect to be built. diff --git a/Changelogs/Changes-0.96.96.txt b/Changelogs/Changes-0.96.96.txt new file mode 100644 index 0000000000..b11cf6c498 --- /dev/null +++ b/Changelogs/Changes-0.96.96.txt @@ -0,0 +1,96 @@ +RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500 + + NOTE: This is (Yet) a(nother) pre-release of 0.97 for testing purposes. + + From Joe Bloggs: + + - Man page fix: remove cut-and-paste sentence in NoCache() description. + + From Dmitry Grigorenko and Gary Oberbrunner: + + - Use the Intel C++ compiler, not $CC, to link C++ source. + + From Helmut Grohne: + + - Fix the man page example of propagating a user's external environment. + + From Steven Knight: + + - Back out (most of) the Windows registry installer patch, which + seems to not work on some versions of Windows. + + - Don't treat Java ".class" attributes as defining an inner class. + + - Fix detecting an erroneous Java anonymous class when the first + non-skipped token after a "new" keyword is a closing brace. + + - Fix a regression when a CPPDEFINES list contains a tuple, the second + item of which (the option value) is a construction variable expansion + (e.g. $VALUE) and the value of the variable isn't a string. + + - Improve the error message if an IOError (like trying to read a + directory as a file) occurs while deciding if a node is up-to-date. + + - Fix "maximum recursion" / "unhashable type" errors in $CPPPATH + PathList expansion if a subsidiary expansion yields a stringable, + non-Node object. + + - Generate API documentation from the docstrings (using epydoc). + + - Fix use of --debug=presub with Actions for out-of-the-box Builders. + + - Fix handling nested lists within $CPPPATH, $LIBPATH, etc. + + - Fix a "builders_used" AttributeError that real-world Qt initialization + triggered in the refactored suffix handling for Builders. + + - Make the reported --debug=time timings meaningful when used with -j. + Better documentation of what the times mean. + + - User Guide updates: --random, AlwaysBuild(), --tree=, + --debug=findlibs, --debug=presub, --debug=stacktrace, + --taskmastertrace. + + - Document (in both man page and User's Guide) that --implicit-cache + ignores changes in $CPPPATH, $LIBPATH, etc. + + From Jean-Baptiste Lab: + + - Remove hard-coded dependency on Python 2.2 from Debian packaging files. + + From Jeff Mahovsky: + + - Handle spaces in the build target name in Visual Studio project files. + + From Rob Managan: + + - Re-run LaTeX after BibTeX has been re-run in response to a changed + .bib file. + + From Joel B. Mohler: + + - Make additional TeX auxiliary files (.toc, .idx and .bbl files) + Precious so their removal doesn't affect whether the necessary + sections are included in output PDF or PostScript files. + + From Gary Oberbrunner: + + - Fix the ability to import modules in the site_scons directory from + a subdirectory. + + From Adam Simpkins: + + - Make sure parallel (-j) builds all targets even if they show up + multiple times in the child list (as a source and a dependency). + + From Matthias Troffaes: + + - Don't re-run TeX if the triggering strings (\makeindex, \bibliography + \tableofcontents) are commented out. + + From Richard Viney: + + - Fix use of custom include and lib paths with Visual Studio 8. + + - Select the default .NET Framework SDK Dir based on the version of + Visual Studio being used. diff --git a/Changelogs/Changes-0.96.txt b/Changelogs/Changes-0.96.txt new file mode 100644 index 0000000000..1ee9ee45a0 --- /dev/null +++ b/Changelogs/Changes-0.96.txt @@ -0,0 +1,257 @@ +RELEASE 0.96 - Wed, 18 Aug 2004 13:36:40 +0000 + + From Chad Austin: + + - Make the CacheDir() directory if it doesn't already exist. + + - Allow construction variable substitutions in $LIBS specifications. + + - Allow the emitter argument to a Builder() to be or expand to a list + of emitter functions, which will be called in sequence. + + - Suppress null values in construction variables like $LIBS that use + the internal _concat() function. + + - Remove .dll files from the construction variables searched for + libraries that can be fed to Win32 compilers. + + From Chad Austin and Christoph Wiedemann: + + - Add support for a $RPATH variable to supply a list of directories + to search for shared libraries when linking a program. Used by + the GNU and IRIX linkers (gnulink and sgilink). + + From Charles Crain: + + - Restore the ability to do construction variable substitutions in all + kinds of *PATH variables, even when the substitution returns a Node + or other object. + + From Tom Epperly: + + - Allow the Java() Builder to take more than one source directory. + + From Ralf W. Grosse-Kunstleve: + + - Have SConsignFile() use, by default, a custom "dblite.py" that we can + control and guarantee to work on all Python versions (or nearly so). + + From Jonathan Gurley: + + - Add support for the newer "ifort" versions of the Intel Fortran + Compiler for Linux. + + From Bob Halley: + + - Make the new *FLAGS variable type work with copied Environments. + + From Chris Hoeppler: + + - Initialize the name of a Scanner.Classic scanner correctly. + + From James Juhasz: + + - Add support for the .dylib shared library suffix and the -dynamiclib + linker option on Mac OS X. + + From Steven Knight: + + - Add an Execute() method for executing actions directly. + + - Support passing environment override keyword arguments to Command(). + + - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added + support for $MSVS_USE_MFC_DIRS last release. + + - Make env.Append() and env.Prepend() act like the underlying Python + behavior when the variable being appended to is a UserList object. + + - Fix a regression that prevented the Command() global function in + 0.95 from working with command-line strings as actions. + + - Fix checking out a file from a source code management system when + the env.SourceCode() method was called with an individual file name + or node, not a directory name or node. + + - Enhance the Task.make_ready() method to create a list of the + out-of-date Nodes for the task for use by the wrapping interface. + + - Allow Scanners to pull the list of suffixes from the construction + environment when the "skeys" keyword argument is a string containing + a construction variable to be expanded. + + - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and + $IDLSUFFIXES. construction variables that contain the default list + of suffixes to be scanned by a given type of scanner, allowing these + suffix lists to be easily added to or overridden. + + - Speed up Node creation when calling a Builder by comparing whether two + Environments are the same object, not if their underlying dictionaries + are equivalent. + + - Add a --debug=explain option that reports the reason(s) why SCons + thinks it must rebuild something. + + - Add support for functions that return platform-independent Actions + to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files + and/or directories. Like any other Actions, the returned Action + object may be executed directly using the Execute() global function + or env.Execute() environment method, or may be used as a Builder + action or in an env.Command() action list. + + - Add support for the strfunction argument to all types of Actions: + CommandAction, ListAction, and CommandGeneratorAction. + + - Speed up turning file system Nodes into strings by caching the + values after we're finished reading the SConscript files. + + - Have ParseConfig() recognize and supporting adding the -Wa, -Wl, + and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively. + + - Change the .sconsign format and the checks for whether a Node is + up-to-date to make dependency checks more efficient and correct. + + - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM, + $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM. This makes it possible + to replace the default print behavior with a custom strfunction() + for each of these. + + - When a Node has been built, don't walk the whole tree back to delete + the parents's implicit dependencies, let returning up the normal + Taskmaster descent take care of it for us. + + - Add documented support for separate target_scanner and source_scanner + arguments to Builder creation, which allows different scanners to + be applied to source files + + - Don't re-install or (re-generate) .h files when a subsidiary #included + .h file changes. This eliminates incorrect circular dependencies + with .h files generated from other source files. + + - Slim down the internal Sig.Calculator class by eliminating methods + whose functionality is now covered by Node methods. + + - Document use of the target_factory and source_factory keyword + arguments when creating Builder objects. Enhance Dir Nodes so that + they can be created with user-specified Builder objects. + + - Don't blow up with stack trace when the external $PATH environment + variable isn't set. + + - Make Builder calls return lists all the time, even if there's only + one target. This keeps things consistent and easier to program to + across platforms. + + - Add a Flatten() function to make it easier to deal with the Builders + all returning lists of targets, not individual targets. + + - Performance optimizations in Node.FS.__doLookup(). + + - Man page fixes: formatting typos, misspellings, bad example. + + - User's Guide fixes: Fix the signatures of the various example + *Options() calls. Triple-quote properly a multi-line Split example. + + - User's Guide additions: Chapter describing File and Directory + Nodes. Section describing declarative nature of SCons functions in + SConscript files. Better organization and clarification of points + raised by Robert P. J. Day. Chapter describing SConf (Autoconf-like) + functionality. Chapter describing how to install Python and + SCons. Chapter describing Java builds. + + From Chris Murray: + + - Add a .win32 attribute to force file names to expand with + Windows backslash path separators. + + - Fix escaping file names on command lines when the expansion is + concatenated with another string. + + - Add support for Fortran 90 and Fortran 95. This adds $FORTRAN* + variables that specify a default compiler, command-line, flags, + etc. for all Fortran versions, plus separate $F90* and $F95* + variables for when different compilers/flags/etc. must be specified + for different Fortran versions. + + - Have individual tools that create libraries override the default + $LIBPREFIX and $LIBSUFFIX values set by the platform. This makes + it easier to use Microsoft Visual Studio tools on a CygWin platform. + + From Gary Oberbrunner: + + - Add a --debug=presub option to print actions prior to substitution. + + - Add a warning upon use of the override keywords "targets" and + "sources" when calling Builders. These are usually mistakes which + are otherwise silently (and confusingly) turned into construction + variable overrides. + + - Try to find the ICL license file path name in the external environment + and the registry before resorting to the hard-coded path name. + + - Add support for fetching command-line keyword=value arguments in + order from an ARGLIST list. + + - Avoid stack traces when trying to read dangling symlinks. + + - Treat file "extensions" that only contain digits as part of the + file basename. This supports version numbers as part of shared + library names, for example. + + - Avoid problems when there are null entries (None or '') in tool + lists or CPPPATH. + + - Add an example and explanation of how to use "tools = ['default', ..." + when creating a construction environment. + + - Add a section describing File and Directory Nodes and some of their + attributes and methods. + + - Have ParseConfig() add a returned -pthread flag to both $CCFLAGS + and $LINKFLAGS. + + - Fix some test portability issues on Mac OS X (darwin). + + From Simon Perkins: + + - Fix a bug introduced in building shared libraries under MinGW. + + From Kevin Quick: + + - Handling SCons exceptions according to Pythonic standards. + + - Fix test/chained-build.py on systems that execute within one second. + + - Fix tests on systems where 'ar' warns about archive creation. + + From Anthony Roach: + + - Fix use of the --implicit-cache option with timestamp signatures. + + - If Visual Studio is installed, assume the C/C++ compiler, the linker + and the MIDL compiler that comes with it are available, too. + + - Better error messages when evaluating a construction variable + expansion yields a Python syntax error. + + - Change the generation of PDB files when using Visual Studio from + compile time to link time. + + From sam th: + + - Allow SConf.CheckLib() to search a list of libraries, like the + Autoconf AC_SEARCH_LIBS macro. + + - Allow the env.WhereIs() method to take a "reject" argument to + let it weed out specific path names. + + From Christoph Wiedemann: + + - Add new Moc() and Uic() Builders for more explicit control over + Qt builds, plus new construction variables to control them: + $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX, + $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX, + $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX. + + - Add a new single_source keyword argument for Builders that enforces + a single source file on calls to the Builder. diff --git a/Changelogs/Changes-0.97.0d20070809.txt b/Changelogs/Changes-0.97.0d20070809.txt new file mode 100644 index 0000000000..82119c7897 --- /dev/null +++ b/Changelogs/Changes-0.97.0d20070809.txt @@ -0,0 +1,135 @@ +RELEASE 0.97.0d20070809 - Fri, 10 Aug 2007 10:51:27 -0500 + + From Lars Albertsson: + + - Don't error if a #include line happens to match a directory + somewhere on a path (like $CPPPATH, $FORTRANPATH, etc.). + + From Mark Bertoglio: + + - Fix listing multiple projects in Visual Studio 7.[01] solution files, + including generating individual project GUIDs instead of re-using + the solution GUID. + + From Jean Brouwers: + + - Add /opt/SUNWspro/bin to the default execution PATH on Solaris. + + From Allan Erskine: + + - Only expect the Microsoft IDL compiler to emit *_p.c and *_data.c + files if the /proxy and /dlldata switches are used (respectively). + + From Steven Knight: + + - Have --debug=explain report if a target is being rebuilt because + AlwaysBuild() is specified (instead of "unknown reasons"). + + - Support {Get,Set}Option('help') to make it easier for SConscript + files to tell if a help option (-h, --help, etc.) has been specified. + + - Support {Get,Set}Option('random') so random-dependency interaction + with CacheDir() is controllable from SConscript files. + + - Add a new AddOption() function to support user-defined command- + line flags (like --prefix=, --force, etc.). + + - Replace modified Optik version with new optparse compatibility module + for command line processing in Scripts/SConsOptions.py + + - Push and retrieve built symlinks to/from a CacheDir() as actual + symlinks, not by copying the file contents. + + - Fix how the Action module handles stringifying the shared library + generator in the Tool/mingw.py module. + + - When generating a config.h file, print "#define HAVE_{FEATURE} 1" + instad of just "#define HAVE_{FEATURE}", for more compatibility + with Autoconf-style projects. + + - Fix expansion of $TARGET, $TARGETS, $SOURCE and $SOURCES keywords in + Visual C/C++ PDB file names. + + - Fix locating Visual C/C++ PDB files in build directories. + + - Support an env.AddMethod() method and an AddMethod() global function + for adding a new method, respectively, to a construction environment + or an arbitrary object (such as a class). + + - Fix the --debug=time option when the -j option is specified and all + files are up to date. + + - Add a $SWIGOUTDIR variable to allow setting the swig -outdir option, + and use it to identify files created by the swig -java option. + + - Add a $SWIGPATH variable that specifies the path to be searched + for included SWIG files, Also add related $SWIGINCPREFIX and + $SWIGINCSUFFIX variables that specify the prefix and suffix to + be be added to each $SWIGPATH directory when expanded on the SWIG + command line. + + - More efficient copying of construction environments (mostly borrowed + from copy.deepcopy() in the standard Python library). + + - When printing --tree=prune output, don't print [brackets] around + source files, only do so for built targets with children. + + - Fix interpretation of Builder source arguments when the Builder has + a src_suffix *and* a source_builder and the argument has no suffix. + + - Fix use of expansions like ${TARGET.dir} or ${SOURCE.dir} in the + following construction variables: $FORTRANMODDIR, $JARCHDIR, + $JARFLAGS, $LEXFLAGS, $SWIGFLAGS, $SWIGOUTDIR and $YACCFLAGS. + + - Fix dependencies on Java files generated by SWIG so they can be + detected and built in one pass. + + - Fix SWIG when used with a BuildDir(). + + From Leanid Nazdrynau: + + - When applying Tool modules after a construction environment has + already been created, don't overwrite existing $CFILESUFFIX and + $CXXFILESUFFIX value. + + - Support passing the Java() builder a list of explicit .java files + (not only a list of directories to be scanned for .java files). + + - Support passing .java files to the Jar() and JavaH() builders, which + then use the builder underlying the Java() builder to turn them into + .class files. (That is, the Jar()-Java() chain of builders become + multi-step, like the Program()-Object()-CFile() builders.) + + - Support passing SWIG .i files to the Java builders (Java(), + Jar(), JavaH()), to cause intermediate .java files to be created + automatically. + + - Add $JAVACLASSPATH and $JAVASOURCEPATH variables, that get added to + the javac "-classpath" and "-sourcepath" options. (Note that SCons + does *not* currently search these paths for implicit dependencies.) + + - Commonize initialization of Java-related builders. + + From Jan Nijtmans: + + - Find Java anonymous classes when the next token after the name is + an open parenthesis. + + From Gary Oberbrunner: + + - Fix a code example in the man page. + + From Tilo Prutz: + + - Add support for the file names that Java 1.5 (and 1.6) generates for + nested anonymous inner classes, which are different from Java 1.4. + + From Adam Simpkins: + + - Allow worker threads to terminate gracefully when all jobs are + finished. + + From Sohail Somani: + + - Add LaTeX scanner support for finding dependencies specified with + the \usepackage{} directive. diff --git a/Changelogs/Changes-0.97.0d20070918.txt b/Changelogs/Changes-0.97.0d20070918.txt new file mode 100644 index 0000000000..cf152d1589 --- /dev/null +++ b/Changelogs/Changes-0.97.0d20070918.txt @@ -0,0 +1,87 @@ +RELEASE 0.97.0d20070918 - Tue, 18 Sep 2007 10:51:27 -0500 + + From Steven Knight: + + - Fix the wix Tool module to handle null entries in $PATH variables. + + - Move the documentation of Install() and InstallAs() from the list + of functions to the list of Builders (now that they're implemented + as such). + + - Allow env.CacheDir() to be set per construction environment. The + global CacheDir() function now sets an overridable global default. + + - Add an env.Decider() method and a Node.Decider() method that allow + flexible specification of an arbitrary function to decide if a given + dependency has changed since the last time a target was built. + + - Don't execute Configure actions (while reading SConscript files) + when cleaning (-c) or getting help (-h or -H). + + - Add to each target an implicit dependency on the external command(s) + used to build the target, as found by searching env['ENV']['PATH'] + for the first argument on each executed command line. + + - Add support for a $IMPLICIT_COMMAND_DEPENDENCIES construction + variabe that can be used to disable the automatic implicit + dependency on executed commands. + + - Add an "ensure_suffix" keyword to Builder() definitions that, when + true, will add the configured suffix to the targets even if it looks + like they already have a different suffix. + + - Add a Progress() function that allows for calling a function or string + (or list of strings) to display progress while walking the DAG. + + - Allow ParseConfig(), MergeFlags() and ParseFlags() to handle output + from a *config command with quoted path names that contain spaces. + + - Make the Return() function stop processing the SConscript file and + return immediately. Add a "stop=" keyword argument that can be set + to False to preserve the old behavior. + + - Fix use of exitstatfunc on an Action. + + - Introduce all man page function examples with "Example:" or "Examples:". + + - When a file gets added to a directory, make sure the directory gets + re-scanned for the new implicit dependency. + + - Fix handling a file that's specified multiple times in a target + list so that it doesn't cause dependent Nodes to "disappear" from + the dependency graph walk. + + From Carsten Koch: + + - Avoid race conditions with same-named files and directory creation + when pushing copies of files to CacheDir(). + + From Tzvetan Mikov: + + - Handle $ in Java class names. + + From Gary Oberbrunner: + + - Add support for the Intel C compiler on Windows64. + + - On SGI IRIX, have $SHCXX use $CXX by default (like other platforms). + + From Sohail Somani: + + - When Cloning a construction environment, set any variables before + applying tools (so the tool module can access the configured settings) + and re-set them after (so they end up matching what the user set). + + From Matthias Troffaes: + + - Make sure extra auxiliary files generated by some LaTeX packages + and not ending in .aux also get deleted by scons -c. + + From Greg Ward: + + - Add a $JAVABOOTCLASSPATH variable for directories to be passed to the + javac -bootclasspath option. + + From Christoph Wiedemann: + + - Add implicit dependencies on the commands used to build a target. diff --git a/Changelogs/Changes-0.97.0d20071212.txt b/Changelogs/Changes-0.97.0d20071212.txt new file mode 100644 index 0000000000..ec0bb22282 --- /dev/null +++ b/Changelogs/Changes-0.97.0d20071212.txt @@ -0,0 +1,96 @@ +RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600 + + From Benoit Belley: + + - Fix occasional spurious rebuilds and inefficiency when using + --implicit-cache and Builders that produce multiple targets. + + - Allow SCons to not have to know about the builders of generated + files when BuildDir(duplicate=0) is used, potentially allowing some + SConscript files to be ignored for smaller builds. + + From David Cournapeau: + + - Add a CheckTypeSize() call to configure contexts. + + From Ken Deeter: + + - Make the "contents" of Alias Nodes a concatenation of the children's + content signatures (MD5 checksums), not a concatenation of the + children's contents, to avoid using large amounts of memory during + signature calculation. + + From Malte Helmert: + + - Fix a lot of typos in the man page and User's Guide. + + From Geoffrey Irving: + + - Speed up conversion of paths in .sconsign files to File or Dir Nodes. + + From Steven Knight: + + - Add an Options.UnknownOptions() method that returns any settings + (from the command line, or whatever dictionary was passed in) + that aren't known to the Options object. + + - Add a Glob() function. + + - When removing targets with the -c option, use the absolute path (to + avoid problems interpreting BuildDir() when the top-level directory + is the source directory). + + - Fix problems with Install() and InstallAs() when called through a + clone (of a clone, ...) of a cloned construction environment. + + - When executing a file containing Options() settings, add the file's + directory to sys.path (so modules can be imported from there) and + explicity set __name__ to the name of the file so the statement's + in the file can deduce the location if they need to. + + - Fix an O(n^2) performance problem when adding sources to a target + through calls to a multi Builder (including Aliases). + + - Redefine the $WINDOWSPROGMANIFESTSUFFIX and + $WINDOWSSHLIBMANIFESTSUFFIX variables so they pick up changes to + the underlying $SHLIBSUFFIX and $PROGSUFFIX variables. + + - Add a GetBuildFailures() function that can be called from functions + registered with the Python atexit module to print summary information + about any failures encountered while building. + + - Return a NodeList object, not a Python list, when a single_source + Builder like Object() is called with more than one file. + + - When searching for implicit dependency files in the directories + in a $*PATH list, don't create Dir Nodes for directories that + don't actually exist on-disk. + + - Add a Requires() function to allow the specification of order-only + prerequisites, which will be updated before specified "downstream" + targets but which don't actually cause the target to be rebuilt. + + - Restore the FS.{Dir,File,Entry}.rel_path() method. + + - Make the default behavior of {Source,Target}Signatures('timestamp') + be equivalent to 'timestamp-match', not 'timestamp-newer'. + + - Fix use of CacheDir with Decider('timestamp-newer') by updating + the modification time when copying files from the cache. + + - Fix random issues with parallel (-j) builds on Windows when Python + holds open file handles (especially for SCons temporary files, + or targets built by Python function actions) across process creation. + + From Maxim Kartashev: + + - Fix test scripts when run on Solaris. + + From Gary Oberbrunner: + + - Fix Glob() when a pattern is in an explicitly-named subdirectory. + + From Philipp Scholl: + + - Fix setting up targets if multiple Package builders are specified + at once. diff --git a/Changelogs/Changes-0.97.txt b/Changelogs/Changes-0.97.txt new file mode 100644 index 0000000000..7b51a5404e --- /dev/null +++ b/Changelogs/Changes-0.97.txt @@ -0,0 +1,11 @@ +RELEASE 0.97 - Thu, 17 May 2007 08:59:41 -0500 + + From Steven Knight: + + - Fix a bug that would make parallel builds stop in their tracks if + Nodes that depended on lists that contained some Nodes built together + caused the reference count to drop below 0 if the Nodes were visited + and commands finished in the wrong order. + + - Make sure the DirEntryScanner doesn't choke if it's handed something + that's not a directory (Node.FS.Dir) Node. diff --git a/Changelogs/Changes-0.98.1.txt b/Changelogs/Changes-0.98.1.txt new file mode 100644 index 0000000000..641b3d63e1 --- /dev/null +++ b/Changelogs/Changes-0.98.1.txt @@ -0,0 +1,83 @@ +RELEASE 0.98.1 - Fri, 18 Apr 2008 19:11:58 -0700 + + From Benoit Belley: + + - Speed up the SCons.Util.to_string*() functions. + + - Optimize various Node intialization and calculations. + + - Optimize Executor scanning code. + + - Optimize Taskmaster execution, including dependency-cycle checking. + + - Fix the --debug=stree option so it prints its tree once, not twice. + + From Johan Boul�: + + - Fix the ability to use LoadableModule() under MinGW. + + From David Cournapeau: + + - Various missing Fortran-related construction variables have been added. + + - SCons now uses the program specified in the $FORTRAN construction + variable to link Fortran object files. + + - Fortran compilers on Linux (Intel, g77 and gfortran) now add the -fPIC + option by default when compilling shared objects. + + - New 'sunf77', 'sunf90' and 'sunf95' Tool modules have been added to + support Sun Fortran compilers. On Solaris, the Sun Fortran compilers + are used in preference to other compilers by default. + + - Fortran support now uses gfortran in preference to g77. + + - Fortran file suffixes are now configurable through the + $F77FILESUFFIXES, $F90FILESUFFIXES, $F95FILESUFFIXES and + $FORTRANFILESUFFIXES variables. + + From Steven Knight: + + - Make the -d, -e, -w and --no-print-directory options "Ignored for + compatibility." (We're not going to implement them.) + + - Fix a serious inefficiency in how SCons checks for whether any source + files are missing when a Builder call creates many targets from many + input source files. + + - In Java projects, make the target .class files depend only on the + specific source .java files where the individual classes are defined. + + - Don't store duplicate source file entries in the .sconsign file so + we don't endlessly rebuild the target(s) for no reason. + + - Add a Variables object as the first step towards deprecating the + Options object name. Similarly, add BoolVariable(), EnumVariable(), + ListVariable(), PackageVariable() and PathVariable() functions + as first steps towards replacing BoolOption(), EnumOption(), + ListOption(), PackageOption() and PathOption(). + + - Change the options= keyword argument to the Environment() function + to variables=, to avoid confusion with SCons command-line options. + Continue supporting the options= keyword for backwards compatibility. + + - When $SWIGFLAGS contains the -python flag, expect the generated .py + file to be in the same (sub)directory as the target. + + - When compiling C++ files, allow $CCFLAGS settings to show up on the + command line even when $CXXFLAGS has been redefined. + + - Fix --interactive with -u/-U/-D when a VariantDir() is used. + + From Anatoly Techtonik: + + - Have the scons.bat file add the script execution directory to its + local %PATH% on Windows, so the Python executable can be found. + + From Mike Wake: + + - Fix passing variable names as a list to the Return() function. + + From Matthew Wesley: + + - Add support for the GDC 'D' language compiler. diff --git a/Changelogs/Changes-0.98.2.txt b/Changelogs/Changes-0.98.2.txt new file mode 100644 index 0000000000..81102eefe5 --- /dev/null +++ b/Changelogs/Changes-0.98.2.txt @@ -0,0 +1,13 @@ +RELEASE 0.98.2 - Sun, 20 Apr 2008 23:38:56 -0700 + + From Steven Knight: + + - Fix a bug in Fortran suffix computation that would cause SCons to + run out of memory on Windows systems. + + - Fix being able to specify --interactive mode command lines with + \ (backslash) path name separators on Windows. + + From Gary Oberbrunner: + + - Document Glob() in the User's Guide. diff --git a/Changelogs/Changes-0.98.3.txt b/Changelogs/Changes-0.98.3.txt new file mode 100644 index 0000000000..bfea174329 --- /dev/null +++ b/Changelogs/Changes-0.98.3.txt @@ -0,0 +1,21 @@ +RELEASE 0.98.3 - Tue, 29 Apr 2008 22:40:12 -0700 + + From Greg Noel: + + - Fix use of $CXXFLAGS when building C++ shared object files. + + From Steven Knight: + + - Fix a regression when a Builder's source_scanner doesn't select + a more specific scanner for the suffix of a specified source file. + + - Fix the Options object backwards compatibility so people can still + "import SCons.Options.{Bool,Enum,List,Package,Path}Option" submodules. + + - Fix searching for implicit dependencies when an Entry Node shows up + in the search path list. + + From Stefano: + + - Fix expansion of $FORTRANMODDIR in the default Fortran command line(s) + when it's set to something like ${TARGET.dir} diff --git a/Changelogs/Changes-0.98.4.txt b/Changelogs/Changes-0.98.4.txt new file mode 100644 index 0000000000..0b5f260b8e --- /dev/null +++ b/Changelogs/Changes-0.98.4.txt @@ -0,0 +1,31 @@ +RELEASE 0.98.4 - Sat, 17 May 2008 22:14:46 -0700 + + From Benoit Belley: + + - Fix calculation of signatures for Python function actions with + closures in Python versions before 2.5. + + From David Cournapeau: + + - Fix the initialization of $SHF77FLAGS so it includes $F77FLAGS. + + From Jonas Olsson: + + - Fix a syntax error in the Intel C compiler support on Windows. + + From Steven Knight: + + - Change how we represent Python Value Nodes when printing and when + stored in .sconsign files (to avoid blowing out memory by storing + huge strings in .sconsign files after multiple runs using Configure + contexts cause the Value strings to be re-escaped each time). + + - Fix a regression in not executing configuration checks after failure + of any configuration check that used the same compiler or other tool. + + - Handle multiple destinations in Visual Studio 8 settings for the + analogues to the INCLUDE, LIBRARY and PATH variables. + + From Greg Noel: + + - Update man page text for VariantDir(). diff --git a/Changelogs/Changes-0.98.5.txt b/Changelogs/Changes-0.98.5.txt new file mode 100644 index 0000000000..179465c812 --- /dev/null +++ b/Changelogs/Changes-0.98.5.txt @@ -0,0 +1,23 @@ +RELEASE 0.98.5 - Sat, 07 Jun 2008 08:20:35 -0700 + + From Benoit Belley: + + - Fix the Intel C++ compiler ABI specification for EMT64 processors. + + From David Cournapeau: + + - Issue a (suppressable) warning, not an error, when trying to link + C++ and Fortran object files into the same executable. + + From Steven Knight: + + - Update the scons.bat file so that it returns the real exit status + from SCons, even though it uses setlocal + endlocal. + + - Fix the --interactive post-build messages so it doesn't get stuck + mistakenly reporting failures after any individual build fails. + + - Fix calling File() as a File object method in some circumstances. + + - Fix setup.py installation on Mac OS X so SCons gets installed + under /usr/lcoal by default, not in the Mac OS X Python framework. diff --git a/Changelogs/Changes-0.98.txt b/Changelogs/Changes-0.98.txt new file mode 100644 index 0000000000..071ca5a161 --- /dev/null +++ b/Changelogs/Changes-0.98.txt @@ -0,0 +1,212 @@ +RELEASE 0.98 - Sun, 30 Mar 2008 23:33:05 -0700 + + From Benoit Belley: + + - Fix the --keep-going flag so it builds all possible targets even when + a later top-level target depends on a child that failed its build. + + - Fix being able to use $PDB and $WINDWOWS_INSERT_MANIFEST together. + + - Don't crash if un-installing the Intel C compiler leaves left-over, + dangling entries in the Windows registry. + + - Improve support for non-standard library prefixes and suffixes by + stripping all prefixes/suffixes from file name string as appropriate. + + - Reduce the default stack size for -j worker threads to 256 Kbytes. + Provide user control over this value by adding --stack-size and + --warn=stack-size options, and a SetOption('stack_size') function. + + - Fix a crash on Linux systems when trying to use the Intel C compiler + and no /opt/intel_cc_* directories are found. + + - Improve using Python functions as actions by incorporating into + a FunctionAction's signature: + - literal values referenced by the byte code. + - values of default arguments + - code of nested functions + - values of variables captured by closures + - names of referenced global variables and functions + + - Fix the closing message when --clean and --keep-going are both + used and no errors occur. + + - Add support for the Intel C compiler on Mac OS X. + + - Speed up reading SConscript files by about 20% (for some + configurations) by: 1) optimizing the SCons.Util.is_*() and + SCons.Util.flatten() functions; 2) avoiding unnecessary os.stat() + calls by using a File's .suffix attribute directly instead of + stringifying it. + + From Jérôme Berger: + + - Have the D language scanner search for .di files as well as .d files. + + - Add a find_include_names() method to the Scanner.Classic class to + abstract out how included names can be generated by subclasses. + + - Allow the D language scanner to detect multiple modules imported by + a single statement. + + From Konstantin Bozhikov: + + - Support expansion of construction variables that contain or refer + to lists of other variables or Nodes within expansions like $CPPPATH. + + - Change variable substitution (the env.subst() method) so that an + input sequence (list or tuple) is preserved as a list in the output. + + From David Cournapeau: + + - Add a CheckDeclaration() call to configure contexts. + + - Improve the CheckTypeSize() code. + + - Add a Define() call to configure contexts, to add arbitrary #define + lines to a generated configure header file. + + - Add a "gfortran" Tool module for the GNU F95/F2003 compiler. + + - Avoid use of -rpath with the Mac OS X linker. + + - Add comment lines to the generated config.h file to describe what + the various #define/#undef lines are doing. + + From Steven Knight: + + - Support the ability to subclass the new-style "str" class as input + to Builders. + + - Improve the performance of our type-checking by using isinstance() + with new-style classes. + + - Fix #include (and other $*PATH variables searches) of files with + absolute path names. Don't die if they don't exist (due to being + #ifdef'ed out or the like). + + - Fix --interactive mode when Default(None) is used. + + - Fix --debug=memoizer to work around a bug in base Python 2.2 metaclass + initialization (by just not allowing Memoization in Python versions + that have the bug). + + - Have the "scons-time time" subcommand handle empty log files, and + log files that contain no results specified by the --which option. + + - Fix the max Y of vertical bars drawn by "scons-time --fmt=gnuplot". + + - On Mac OS X, account for the fact that the header file generated + from a C++ file will be named (e.g.) file.cpp.h, not file.hpp. + + - Fix floating-point numbers confusing the Java parser about + generated .class file names in some configurations. + + - Document (nearly) all the values you can now fetch with GetOption(). + + - Fix use of file names containing strings of multiple spaces when + using ActionFactory instances like the Copy() or Move() function. + + - Fix a 0.97 regression when using a variable expansion (like + $OBJSUFFIX) in a source file name to a builder with attached source + builders that match suffix (like Program()+Object()). + + - Have the Java parser recognize generics (surrounded by angle brackets) + so they don't interfere with identifying anonymous inner classes. + + - Avoid an infinite loop when trying to use saved copies of the + env.Install() or env.InstallAs() after replacing the method + attributes. + + - Improve the performance of setting construction variables. + + - When cloning a construction environment, avoid over-writing an + attribute for an added method if the user explicitly replaced it. + + - Add a warning about deprecated support for Python 1.5, 2.0 and 2.1. + + - Fix being able to SetOption('warn', ...) in SConscript files. + + - Add a warning about env.Copy() being deprecated. + + - Add warnings about the --debug={dtree,stree,tree} options + being deprecated. + + - Add VariantDir() as the first step towards deprecating BuildDir(). + Add the keyword argument "variant_dir" as the replacement for + "build_dir". + + - Add warnings about the {Target,Source}Signatures() methods and + functions being deprecated. + + From Rob Managan: + + - Enhance TeX and LaTeX support to work with BuildDir(duplicate=0). + + - Re-run LaTeX when it issues a package warning that it must be re-run. + + From Leanid Nazdrynau: + + - Have the Copy() action factory preserve file modes and times + when copying individual files. + + From Jan Nijtmans: + + - If $JARCHDIR isn't set explicitly, use the .java_classdir attribute + that was set when the Java() Builder built the .class files. + + From Greg Noel: + + - Document the Dir(), File() and Entry() methods of Dir and File Nodes. + + - Add the parse_flags option when creating Environments + + From Gary Oberbrunner: + + - Make File(), Dir() and Entry() return a list of Nodes when passed + a list of names, instead of trying to make a string from the name + list and making a Node from that string. + + - Fix the ability to build an Alias in --interactive mode. + + - Fix the ability to hash the contents of actions for nested Python + functions on Python versions where the inability to pickle them + returns a TypeError (instead of the documented PicklingError). + + From Jonas Olsson: + + - Fix use of the Intel C compiler when the top compiler directory, + but not the compiler version, is specified. + + - Handle Intel C compiler network license files (port@system). + + From Jim Randall: + + - Fix how Python Value Nodes are printed in --debug=explain output. + + From Adam Simpkins: + + - Add a --interactive option that starts a session for building (or + cleaning) targets without re-reading the SConscript files every time. + + - Fix use of readline command-line editing in --interactive mode. + + - Have the --interactive mode "build" command with no arguments + build the specified Default() targets. + + - Fix the Chmod(), Delete(), Mkdir() and Touch() Action factories to + take a list (of Nodes or strings) as arguments. + + From Vaclav Smilauer: + + - Fix saving and restoring an Options value of 'all' on Python + versions where all() is a builtin function. + + From Daniel Svensson: + + - Code correction in SCons.Util.is_List(). + + From Ben Webb: + + - Support the SWIG %module statement with following modifiers in + parenthese (e.g., '%module(directors="1")'). diff --git a/Changelogs/Changes-1.0.0.txt b/Changelogs/Changes-1.0.0.txt new file mode 100644 index 0000000000..7f2fd182e4 --- /dev/null +++ b/Changelogs/Changes-1.0.0.txt @@ -0,0 +1,121 @@ +RELEASE 1.0.0 - Sat, 09 Aug 2008 12:19:44 -0700 + + From Luca Falavigna: + + - Fix SCons man page indentation under Debian's man page macros. + + From Steven Knight: + + - Clarify the man page description of the SConscript(src_dir) argument. + + - User's Guide updates: + + - Document the BUILD_TARGETS, COMMAND_LINE_TARGETS and + DEFAULT_TARGETS variables. + + - Document the AddOption(), GetOption() and SetOption() functions. + + - Document the Requires() function; convert to the Variables + object, its UnknownOptions() method, and its associated + BoolVariable(), EnumVariable(), ListVariable(), PackageVariable() + and PathVariable() functions. + + - Document the Progress() function. + + - Reorganize the chapter and sections describing the different + types of environments and how they interact. Document the + SetDefault() method. Document the PrependENVPath() and + AppendENVPath() functions. + + - Reorganize the command-line arguments chapter. Document the + ARGLIST variable. + + - Collect some miscellaneous sections into a chapter about + configuring build output. + + - Man page updates: + + - Document suggested use of the Visual C/C++ /FC option to fix + the ability to double-click on file names in compilation error + messages. + + - Document the need to use Clean() for any SideEffect() files that + must be explicitly removed when their targets are removed. + + - Explicitly document use of Node lists as input to Dependency(). + + From Greg Noel: + + - Document MergeFlags(), ParseConfig(), ParseFlags() and SideEffect() + in the User's Guide. + + From Gary Oberbrunner: + + - Document use of the GetBuildFailures() function in the User's Guide. + + From Adam Simpkins: + + - Add man page text clarifying the behavior of AddPreAction() and + AddPostAction() when called with multiple targets. + + From Alexey Zezukin: + + - Fix incorrectly swapped man page descriptions of the --warn= options + for duplicate-environment and missing-sconscript. + +RELEASE 1.0.0 - XXX + + From Jared Grubb: + + - Clear the Node state when turning a generic Entry into a Dir. + + From Ludwig H�hne: + + - Fix sporadic output-order failures in test/GetBuildFailures/parallel.py. + + - Document the ParseDepends() function in the User's Guide. + + From khomenko: + + - Create a separate description and long_description for RPM packages. + + From Steven Knight: + + - Document the GetLaunchDir() function in the User's Guide. + + - Have the env.Execute() method print an error message if the + executed command fails. + + - Add a script for creating a standard SCons development system on + Ubuntu Hardy. Rewrite subsidiary scripts for install Python and + SCons versions in Python (from shell). + + From Greg Noel: + + - Handle yacc/bison on newer Mac OS X versions creating file.hpp, + not file.cpp.h. + + - In RPCGEN tests, ignore stderr messages from older versions of + rpcgen on some versions of Mac OS X. + + - Fix typos in man page descriptions of Tag() and Package(), and in + the scons-time man page. + + - Fix documentation of SConf.CheckLibWithHeader and other SConf methods. + + - Update documentation of SConscript(variant_dir) usage. + + - Fix SWIG tests for (some versions of) Mac OS X. + + From Jonas Olsson: + + - Print the warning about -j on Windows being potentially unreliable if + the pywin32 extensions are unavailable or lack file handle operations. + + From Jim Randall: + + - Fix the env.WhereIs() method to expand construction variables. + + From Rogier Schouten: + + - Enable building of shared libraries with the Bordand ilink32 linker. diff --git a/Changelogs/Changes-1.0.1.txt b/Changelogs/Changes-1.0.1.txt new file mode 100644 index 0000000000..34b8377555 --- /dev/null +++ b/Changelogs/Changes-1.0.1.txt @@ -0,0 +1,12 @@ +RELEASE 1.0.1 - Sat, 06 Sep 2008 07:29:34 -0700 + + From Greg Noel: + + - Add a FindFile() section to the User's Guide. + + - Fix the FindFile() documentation in the man page. + + - Fix formatting errors in the Package() description in the man page. + + - Escape parentheses that appear within variable names when spawning + command lines using os.system(). diff --git a/Changelogs/Changes-1.1.0.d20081207.txt b/Changelogs/Changes-1.1.0.d20081207.txt new file mode 100644 index 0000000000..282cd0e59b --- /dev/null +++ b/Changelogs/Changes-1.1.0.d20081207.txt @@ -0,0 +1,121 @@ +RELEASE 1.1.0.d20081207 - Sun, 07 Dec 2008 19:17:23 -0800 + + From Benoit Belley: + + - Improve the robustness of GetBuildFailures() by refactoring + SCons exception handling (especially BuildError exceptions). + + - Have the --taskmastertrace= option print information about + individual Task methods, not just the Taskmaster control flow. + + - Eliminate some spurious dependency cycles by being more aggressive + about pruning pending children from the Taskmaster walk. + + - Suppress mistaken reports of a dependency cycle when a child + left on the pending list is a single Node in EXECUTED state. + + From David Cournapeau: + + - Fix $FORTRANMODDIRPREFIX for the ifort (Intel Fortran) tool. + + From Brad Fitzpatrick: + + - Don't pre-generate an exception message (which will likely be + ignored anyway) when an EntryProxy re-raises an AttributeError. + + From Jared Grubb: + + - Clean up coding style and white space in Node/FS.py. + + - Fix a typo in the documentation for $_CPPDEFFLAGS. + + - Issue 2401: Fix usage of comparisons with None. + + From Ludwig H�hne: + + - Handle Java inner classes declared within a method. + + From Steven Knight: + + - Fix label placement by the "scons-time.py func" subcommand + when a profile value was close to (or equal to) 0.0. + + - Fix env.Append() and env.Prepend()'s ability to add a string to + list-like variables like $CCFLAGS under Python 2.6. + + - Other Python2.6 portability: don't use "as" (a Python 2.6 keyword). + Don't use the deprecated Exception.message attribute. + + - Support using the -f option to search for a different top-level + file name when walking up with the -D, -U or -u options. + + - Fix use of VariantDir when the -n option is used and doesn't, + therefore, actually create the variant directory. + + - Fix a stack trace from the --debug=includes option when passed a + static or shared library as an argument. + + - Speed up the internal find_file() function (used for searching + CPPPATH, LIBPATH, etc.). + + - Add support for using the Python "in" keyword on construction + environments (for example, if "CPPPATH" in env: ...). + + - Fix use of Glob() when a repository or source directory contains + an in-memory Node without a corresponding on-disk file or directory. + + - Add a warning about future reservation of $CHANGED_SOURCES, + $CHANGED_TARGETS, $UNCHANGED_SOURCES and $UNCHANGED_TARGETS. + + - Enable by default the existing warnings about setting the resource + $SOURCE, $SOURCES, $TARGET and $TARGETS variable. + + From Rob Managan: + + - Scan for TeX files in the paths specified in the $TEXINPUTS + construction variable and the $TEXINPUTS environment variable. + + - Configure the PDF() and PostScript() Builders as single_source so + they know each source file generates a separate target file. + + - Add $EPSTOPDF, $EPSTOPDFFLAGS and $EPSTOPDFCOM + + - Add .tex as a valid extension for the PDF() builder. + + - Add regular expressions to find \input, \include and + \includegraphics. + + - Support generating a .pdf file from a .eps source. + + - Recursive scan included input TeX files. + + - Handle requiring searched-for TeX input graphics files to have + extensions (to avoid trying to build a .eps from itself, e.g.). + + From Greg Noel: + + - Make the Action() function handle positional parameters consistently. + + - Clarify use of Configure.CheckType(). + + - Make the File.{Dir,Entry,File}() methods create their entries + relative to the calling File's directory, not the SConscript + directory. + + - Use the Python os.devnull variable to discard error output when + looking for the $CC or $CXX version. + + - Mention LoadableModule() in the SharedLibrary() documentation. + + From Gary Oberbrunner: + + - Update the User's Guide to clarify use of the site_scons/ + directory and the site_init.py module. + + - Make env.AppendUnique() and env.PrependUnique remove duplicates + within a passed-in list being added, too. + + From Randall Spangler: + + - Fix Glob() so an on-disk file or directory beginning with '#' + doesn't throw an exception. diff --git a/Changelogs/Changes-1.1.0.txt b/Changelogs/Changes-1.1.0.txt new file mode 100644 index 0000000000..34e9dc3ca5 --- /dev/null +++ b/Changelogs/Changes-1.1.0.txt @@ -0,0 +1,129 @@ +RELEASE 1.1.0 - Thu, 09 Oct 2008 08:33:47 -0700 + + From Chris AtLee + + - Use the specified environment when checking for the GCC compiler + version. + + From Ian P. Cardenas: + + - Fix Glob() polluting LIBPATH by returning copy of list + + From David Cournapeau: + + - Add CheckCC, CheckCXX, CheckSHCC and CheckSHCXX tests to + configuration contexts. + + - Have the --profile= argument use the much faster cProfile module + (if it's available in the running Python version). + + - Reorder MSVC compilation arguments so the /Fo is first. + + From Bill Deegan: + + - Add scanning Windows resource (.rc) files for implicit dependencies. + + From John Gozde: + + - When scanning for a #include file, don't use a directory that + has the same name as the file. + + From Ralf W. Grosse-Kunstleve + + - Suppress error output when checking for the GCC compiler version. + + From Jared Grubb: + + - Fix VariantDir duplication of #included files in subdirectories. + + From Ludwig H�hne: + + - Reduce memory usage when a directory is used as a dependency of + another Node (such as an Alias) by returning a concatenation + of the children's signatures + names, not the children's contents, + as the directory contents. + + - Raise AttributeError, not KeyError, when a Builder can't be found. + + - Invalidate cached Node information (such as the contenst returned + by the get_contents() method) when calling actions with Execute(). + + - Avoid object reference cycles from frame objects. + + - Reduce memory usage from Null Executor objects. + + - Compute MD5 checksums of large files without reading the entire + file contents into memory. Add a new --md5-chunksize option to + control the size of each chunk read into memory. + + From Steven Knight: + + - Fix the ability of the add_src_builder() method to add a new + source builder to any other builder. + + - Avoid an infinite loop on non-Windows systems trying to find the + SCons library directory if the Python library directory does not + begin with the string "python". + + - Search for the SCons library directory in "scons-local" (with + no version number) after "scons-local-{VERSION}". + + From Rob Managan: + + - Fix the user's ability to interrupt the TeX build chain. + + - Fix the TeX builder's allowing the user to specify the target name, + instead of always using its default output name based on the source. + + - Iterate building TeX output files until all warning are gone + and the auxiliary files stop changing, or until we reach the + (configurable) maximum number of retries. + + - Add TeX scanner support for: glossaries, nomenclatures, lists of + figures, lists of tables, hyperref and beamer. + + - Use the $BIBINPUTS, $BSTINPUTS, $TEXINPUTS and $TEXPICTS construction + variables as search paths for the relevant types of input file. + + - Fix building TeX with VariantDir(duplicate=0) in effect. + + - Fix the LaTeX scanner to search for graphics on the TEXINPUTS path. + + - Have the PDFLaTeX scanner search for .gif files as well. + + From Greg Noel: + + - Fix typos and format bugs in the man page. + + - Add a first draft of a wrapper module for Python's subprocess + module. + + - Refactor use of the SCons.compat module so other modules don't + have to import it individually. + + - Add .sx as a suffix for assembly language files that use the + C preprocessor. + + From Gary Oberbrunner: + + - Make Glob() sort the returned list of Files or Nodes + to prevent spurious rebuilds. + + - Add a delete_existing keyword argument to the AppendENVPath() + and PrependENVPath() Environment methods. + + - Add ability to use "$SOURCE" when specifying a target to a builder + + From Damyan Pepper: + + - Add a test case to verify that SConsignFile() files can be + created in previously non-existent subdirectories. + + From Jim Randall: + + - Make the subdirectory in which the SConsignFile() file will + live, if the subdirectory doesn't already exist. + + From Ali Tofigh: + + - Add a test to verify duplication of files in VariantDir subdirectories. diff --git a/Changelogs/Changes-1.2.0.d20090113.txt b/Changelogs/Changes-1.2.0.d20090113.txt new file mode 100644 index 0000000000..d48235a0b1 --- /dev/null +++ b/Changelogs/Changes-1.2.0.d20090113.txt @@ -0,0 +1,76 @@ +RELEASE 1.2.0.d20090113 - Tue, 13 Jan 2009 02:50:30 -0800 + + From Stanislav Baranov, Ted Johnson and Steven Knight: + + - Add support for batch compilation of Visual Studio C/C++ source + files, controlled by a new $MSVC_BATCH construction variable. + + From Steven Knight: + + - Print the message, "scons: Build interrupted." on error output, + not standard output. + + - Add a --warn=future-deprecated option for advance warnings about + deprecated features that still have warnings hidden by default. + + - Fix use of $SOURCE and $SOURCES attributes when there are no + sources specified in the Builder call. + + - Add support for new $CHANGED_SOURCES, $CHANGED_TARGETS, + $UNCHANGED_SOURCES and $UNCHANGED_TARGETS variables. + + - Add general support for batch builds through new batch_key= and + targets= keywords to Action object creation. + + From Arve Knudsen: + + - Make linker tools differentiate properly between SharedLibrary + and LoadableModule. + + - Document TestCommon.shobj_prefix variable. + + - Support $SWIGOUTDIR values with spaces. + + From Rob Managan: + + - Don't automatically try to build .pdf graphics files for + .eps files in \includegraphics{} calls in TeX/LaTeX files + when building with the PDF builder (and thus using pdflatex). + + From Gary Oberbrunner: + + - Allow AppendENVPath() and PrependENVPath() to interpret '#' + for paths relative to the top-level SConstruct directory. + + - Use the Borland ilink -e option to specify the output file name. + + - Document that the msvc Tool module uses $PCH, $PCHSTOP and $PDB. + + - Allow WINDOWS_INSERT_DEF=0 to disable --output-def when linking + under MinGW. + + From Zia Sobhani: + + - Fix typos in the User's Guide. + + From Greg Spencer: + + - Support implicit dependency scanning of files encoded in utf-8 + and utf-16. + + From Roberto de Vecchi: + + - Remove $CCFLAGS from the the default definitions of $CXXFLAGS for + Visual C/C++ and MIPSpro C++ on SGI so, they match other tools + and avoid flag duplication on C++ command lines. + + From Ben Webb: + + - Handle quoted module names in SWIG source files. + + - Emit *_wrap.h when SWIG generates header file for directors + + From Matthew Wesley: + + - Copy file attributes so we identify, and can link a shared library + from, shared object files in a Repository. diff --git a/Changelogs/Changes-1.2.0.d20090223.txt b/Changelogs/Changes-1.2.0.d20090223.txt new file mode 100644 index 0000000000..ea5e62de9f --- /dev/null +++ b/Changelogs/Changes-1.2.0.d20090223.txt @@ -0,0 +1,51 @@ +RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800 + + From Stanislav Baranov: + + - Make suffix-matching for scanners case-insensitive on Windows. + + From David Cournapeau: + + - Change the way SCons finds versions of Visual C/C++ and Visual + Studio to find and use the Microsoft v*vars.bat files. + + From Robert P. J. Day: + + - User's Guide updates. + + From Dan Eaton: + + - Fix generation of Visual Studio 8 project files on x64 platforms. + + From Allan Erskine: + + - Set IncludeSearchPath and PreprocessorDefinitions in generated + Visual Studio 8 project files, to help IntelliSense work. + + From Mateusz Gruca: + + - Fix deletion of broken symlinks by the --clean option. + + From Steven Knight: + + - Fix the error message when use of a non-existent drive on Windows + is detected. + + - Add sources for files whose targets don't exist in $CHANGED_SOURCES. + + - Detect implicit dependencies on commands even when the command is + quoted. + + - Fix interaction of $CHANGED_SOURCES with the --config=force option. + + - Fix finding #include files when the string contains escaped + backslashes like "C:\\some\\include.h". + + - Pass $CCFLAGS to Visual C/C++ precompiled header compilation. + + - Remove unnecessary nested $( $) around $_LIBDIRFLAGS on link lines + for the Microsoft linker, the OS/2 ilink linker and the Phar Lap + linkloc linker. + + - Spell the Windows environment variables consistently "SystemDrive" + and "SystemRoot" instead of "SYSTEMDRIVE" and "SYSTEMROOT". diff --git a/Changelogs/Changes-1.2.0.d20100117.txt b/Changelogs/Changes-1.2.0.d20100117.txt new file mode 100644 index 0000000000..16a49bab25 --- /dev/null +++ b/Changelogs/Changes-1.2.0.d20100117.txt @@ -0,0 +1,126 @@ +RELEASE 1.2.0.d20100117 - Sun, 17 Jan 2010 14:26:59 -0800 + + From Jim Randall: + - Fixed temp filename race condition on Windows with long cmd lines. + + From David Cournapeau: + - Fixed tryRun when sconf directory is in a variant dir. + - Do not add -fPIC for ifort tool on non-posix platforms (darwin and + windows). + - Fix bug 2294 (spurious CheckCC failures). + - Fix SCons bootstrap process on windows 64 (wrong wininst name) + + From William Deegan: + - Final merge from vs_revamp branch to main + + - Added definition and usage of HOST_OS, HOST_ARCH, TARGET_OS, + TARGET_ARCH, currently only defined/used by Visual Studio + Compilers. This will be rolled out to other platforms/tools + in the future. + + - Add check for python >= 3.0.0 and exit gracefully. + For 1.3 python >= 1.5.2 and < 3.0.0 are supported + + - Fix bug 1944 - Handle non-existent .i file in swig emitter, previously + it would crash with an IOError exception. Now it will try to make an + educated guess on the module name based on the filename. + + From Lukas Erlinghagen: + + - Have AddOption() remove variables from the list of + seen-but-unknown variables (which are reported later). + + - An option name and aliases can now be specified as a tuple. + + From Hartmut Goebel: + + - Textfile builder. + + From Jared Grubb: + + - use "is/is not" in comparisons with None instead of "==" or "!=". + + From Jim Hunziker: + + - Avoid adding -gphobos to a command line multiple times + when initializing use of the DMD compiler. + + From Jason Kenney: + + - Sugguested HOST/TARGET OS/ARCH separation. + + From Steven Knight: + + - Fix the -n option when used with VariantDir(duplicate=1) + and the variant directory doesn't already exist. + + - Fix scanning of Unicode files for both UTF-16 endian flavors. + + - Fix a TypeError on #include of file names with Unicode characters. + + - Fix an exception if a null command-line argument is passed in. + + - Evaluate Requires() prerequisites before a Node's direct children + (sources and dependencies). + + From Greg Noel: + + - Remove redundant __metaclass__ initializations in Environment.py. + + - Correct the documentation of text returned by sconf.Result(). + + - Document that filenames with '.' as the first character are + ignored by Glob() by default (matching UNIX glob semantics). + + - Fix SWIG testing infrastructure to work on Mac OS X. + + - Restructure a test that occasionally hung so that the test would + detect when it was stuck and fail instead. + + - Substfile builder. + + From Gary Oberbrunner: + + - When reporting a target that SCons doesn't know how to make, + specify whether it's a File, Dir, etc. + + From Ben Webb: + + - Fix use of $SWIGOUTDIR when generating Python wrappers. + + - Add $SWIGDIRECTORSUFFIX and $SWIGVERSION construction variables. + + From Rob Managan: + + - Add -recorder flag to Latex commands and updated internals to + use the output to find files TeX creates. This allows the MiKTeX + installations to find the created files + + - Notify user of Latex errors that would get buried in the + Latex output + + - Remove LATEXSUFFIXES from environments that don't initialize Tex. + + - Add support for the glossaries package for glossaries and acronyms + + - Fix problem that pdftex, latex, and pdflatex tools by themselves did + not create the actions for bibtex, makeindex,... by creating them + and other environment settings in one routine called by all four + tex tools. + + - Fix problem with filenames of sideeffects when the user changes + the name of the output file from the latex default + + - Add scanning of files included in Latex by means of \lstinputlisting{} + Patch from Stefan Hepp. + + - Change command line for epstopdf to use --outfile= instead of -o + since this works on all platforms. + Patch from Stefan Hepp. + + - Change scanner to properly search for included file from the + directory of the main file instead of the file it is included from. + Also update the emitter to add the .aux file associated with + \include{filename} commands. This makes sure the required directories + if any are created for variantdir cases. + Half of the patch from Stefan Hepp. diff --git a/Changelogs/Changes-1.2.0.d20100306.txt b/Changelogs/Changes-1.2.0.d20100306.txt new file mode 100644 index 0000000000..2ae0772a9e --- /dev/null +++ b/Changelogs/Changes-1.2.0.d20100306.txt @@ -0,0 +1,36 @@ +RELEASE 1.2.0.d20100306 - Sat, 06 Mar 2010 16:18:33 -0800 + + From Luca Falavigna: + + - Fix typos in the man page. + + From Gottfried Ganssauge: + + - Support execution when SCons is installed via easy_install. + + From Steven Knight: + + - Make the messages for Configure checks of compilers consistent. + + - Issue an error message if a BUILDERS entry is not a Builder + object or a callable wrapper. + + From Rob Managan: + + - Update tex builder to handle the case where a \input{foo} + command tries to work with a directory named foo instead of the + file foo.tex. The builder now ignores a directory and continues + searching to find the correct file. Thanks to Lennart Sauerbeck + for the test case and initial patch + + Also allow the \include of files in subdirectories when variantDir + is used with duplicate=0. Previously latex would crash since + the directory in which the .aux file is written was not created. + Thanks to Stefan Hepp for finding this and part of the solution. + + From James Teh: + - Patches to fix some issues using MS SDK V7.0 + + From William Deegan: + - Lots of testing and minor patches to handle mixed MS VC and SDK + installations, as well as having only the SDK installed. diff --git a/Changelogs/Changes-1.2.0.txt b/Changelogs/Changes-1.2.0.txt new file mode 100644 index 0000000000..38ee59a5df --- /dev/null +++ b/Changelogs/Changes-1.2.0.txt @@ -0,0 +1,7 @@ +RELEASE 1.2.0 - Sat, 20 Dec 2008 22:47:29 -0800 + + From Steven Knight: + + - Don't fail if can't import a _subprocess module on Windows. + + - Add warnings for use of the deprecated Options object. diff --git a/Changelogs/Changes-1.2.0.xd20090113.txt b/Changelogs/Changes-1.2.0.xd20090113.txt new file mode 100644 index 0000000000..d48235a0b1 --- /dev/null +++ b/Changelogs/Changes-1.2.0.xd20090113.txt @@ -0,0 +1,76 @@ +RELEASE 1.2.0.d20090113 - Tue, 13 Jan 2009 02:50:30 -0800 + + From Stanislav Baranov, Ted Johnson and Steven Knight: + + - Add support for batch compilation of Visual Studio C/C++ source + files, controlled by a new $MSVC_BATCH construction variable. + + From Steven Knight: + + - Print the message, "scons: Build interrupted." on error output, + not standard output. + + - Add a --warn=future-deprecated option for advance warnings about + deprecated features that still have warnings hidden by default. + + - Fix use of $SOURCE and $SOURCES attributes when there are no + sources specified in the Builder call. + + - Add support for new $CHANGED_SOURCES, $CHANGED_TARGETS, + $UNCHANGED_SOURCES and $UNCHANGED_TARGETS variables. + + - Add general support for batch builds through new batch_key= and + targets= keywords to Action object creation. + + From Arve Knudsen: + + - Make linker tools differentiate properly between SharedLibrary + and LoadableModule. + + - Document TestCommon.shobj_prefix variable. + + - Support $SWIGOUTDIR values with spaces. + + From Rob Managan: + + - Don't automatically try to build .pdf graphics files for + .eps files in \includegraphics{} calls in TeX/LaTeX files + when building with the PDF builder (and thus using pdflatex). + + From Gary Oberbrunner: + + - Allow AppendENVPath() and PrependENVPath() to interpret '#' + for paths relative to the top-level SConstruct directory. + + - Use the Borland ilink -e option to specify the output file name. + + - Document that the msvc Tool module uses $PCH, $PCHSTOP and $PDB. + + - Allow WINDOWS_INSERT_DEF=0 to disable --output-def when linking + under MinGW. + + From Zia Sobhani: + + - Fix typos in the User's Guide. + + From Greg Spencer: + + - Support implicit dependency scanning of files encoded in utf-8 + and utf-16. + + From Roberto de Vecchi: + + - Remove $CCFLAGS from the the default definitions of $CXXFLAGS for + Visual C/C++ and MIPSpro C++ on SGI so, they match other tools + and avoid flag duplication on C++ command lines. + + From Ben Webb: + + - Handle quoted module names in SWIG source files. + + - Emit *_wrap.h when SWIG generates header file for directors + + From Matthew Wesley: + + - Copy file attributes so we identify, and can link a shared library + from, shared object files in a Repository. diff --git a/Changelogs/Changes-1.3.0.txt b/Changelogs/Changes-1.3.0.txt new file mode 100644 index 0000000000..2c91f6cd84 --- /dev/null +++ b/Changelogs/Changes-1.3.0.txt @@ -0,0 +1,9 @@ +RELEASE 1.3.0 - Tue, 23 Mar 2010 21:44:19 -0400 + + From Steven Knight: + + - Update man page and documentation. + + From William Deegan (plus minor patch from Gary Oberbrunner): + + - Support Visual Studio 8.0 Express diff --git a/Changelogs/Changes-2.0.0.final.0.txt b/Changelogs/Changes-2.0.0.final.0.txt new file mode 100644 index 0000000000..8a15ebc77f --- /dev/null +++ b/Changelogs/Changes-2.0.0.final.0.txt @@ -0,0 +1,89 @@ +RELEASE 2.0.0.final.0 - Mon, 14 Jun 2010 22:01:37 -0700 + + From Dirk Baechle: + + - Fix XML in documentation. + + From Steven Knight: + + - Provide forward compatibility for the 'profile' module. + + - Provide forward compatibility for the 'pickle' module. + + - Provide forward compatibility for the 'io' module. + + - Provide forward compatibility for the 'queue' module. + + - Provide forward compatibility for the 'collections' module. + + - Provide forward compatibility for the 'builtins' module. + + - Provide forward compatibility for 'sys.intern()'. + + - Convert to os.walk() from of os.path.walk(). + + - Remove compatibility logic no longer needed. + + - Add a '-3' option to runtest to print 3.x incompatibility warnings. + + - Convert old-style classes into new-style classes. + + - Fix "Ignoring corrupt sconsign entry" warnings when building + in a tree with a pre-2.0 .sconsign file. + + - Fix propagation from environment of VS*COMNTOOLS to resolve issues + initializing MSVC/MSVS/SDK issues. + + - Handle detecting Visual C++ on Python versions with upper-case + platform architectures like 'AMD64'. + + From W. Trevor King: + + - Revisions to README. + + From Greg Noel: + + - Apply numerous Python fixers to update code to more modern idioms. + Find where fixers should be applied to code in test strings and + apply the fixers there, too. + + - Write a fixer to convert string functions to string methods. + + - Modify the 'dict' fixer to be less conservative. + + - Modify the 'apply' fixer to handle more cases. + + - Create a modified 'types' fixer that converts types to 2.x + equivalents rather than 3.x equivalents. + + - Write a 'division' fixer to highlight uses of the old-style + division operator. Correct usage where needed. + + - Add forward compatibility for the new 'memoryview' function + (which replaces the 'buffer' function). + + - Add forward compatibility for the 'winreg' module. + + - Remove no-longer-needed 'platform' module. + + - Run tests with the '-3' option to Python 2.6 and clear up + various reported incompatibilities. + + - Comb out code paths specialized to Pythons older than 2.4. + + - Update deprecation warnings; most now become mandatory. + + - Start deprecation cycle for BuildDir() and build_dir. + + - Start deprecation cycle for SourceCode() and related factories + + - Fixed a problem with is_Dict() not identifying some objects derived + from UserDict. + + From Jim Randall: + + - Document the AllowSubstExceptions() function in the User's Guide. + + From William Deegan: + + - Migrate MSVC/MSVS/SDK improvements from 1.3 branch. diff --git a/Changelogs/Changes-2.0.1.txt b/Changelogs/Changes-2.0.1.txt new file mode 100644 index 0000000000..192e004fad --- /dev/null +++ b/Changelogs/Changes-2.0.1.txt @@ -0,0 +1,32 @@ +RELEASE 2.0.1 - Mon, 15 Aug 2010 15:46:32 -0700 + + From Dirk Baechle: + + - Fix XML in documentation. + + From Joe Zuntz: + + - Fixed a case-sensitivity problem with Fortran modules. + + From Bauke Conijn: + + - Added Users Guide example for auto-generated source code + + From Steven Knight: + + - Fix explicit dependencies (Depends()) on Nodes that don't have + attached Builders. + + From Matt Hughes: + + - Fix the ability to append to default $*FLAGS values (which are + implemented as CLVar instances) in a copied construction environment + without affecting the original construction environment's value. + + From Rob Managan: + + - Updated the TeX command strings to include a /D on Windows in + case the new directory is on a different drive letter. + + - Fixed the LaTeX scanner so dependencies are found in commands that + are broken across lines with a comment or have embedded spaces. diff --git a/Changelogs/Changes-2.1.0.txt b/Changelogs/Changes-2.1.0.txt new file mode 100644 index 0000000000..75c614ba46 --- /dev/null +++ b/Changelogs/Changes-2.1.0.txt @@ -0,0 +1,196 @@ +RELEASE 2.1.0 - Mon, 09 Sep 2011 20:54:57 -0700 + + From Anton Lazarev: + - Fix Windows resource compiler scanner to accept DOS line endings. + + From Matthias: + - Update MSVS documents to remove note indicating that only one + project is currently supported per solution file. + + From Grzegorz Bizoń: + - Fix long compile lines in batch mode by using TEMPFILE + - Fix MSVC_BATCH=False (was treating it as true) + + From Justin Gullingsrud: + - support -std=c++0x and related CXXFLAGS in pkgconfig (ParseFlags) + + From Vincent Beffara: + - Support -dylib_file in pkgconfig (ParseFlags) + + From Gary Oberbrunner and Sohail Somani: + - new construction variable WINDOWS_EMBED_MANIFEST to automatically + embed manifests in Windows EXEs and DLLs. + + From Gary Oberbrunner: + - Fix Visual Studio project generation when CPPPATH contains Dir nodes + - Ensure Visual Studio project is regenerated when CPPPATH or CPPDEFINES change + - Fix unicode error when using non-ASCII filenames with Copy or Install + - Put RPATH in LINKCOM rather than LINKFLAGS so resetting + LINKFLAGS doesn't kill RPATH + - Fix precompiled headers on Windows when variant dir name has spaces. + - Adding None to an Action no longer fails (just returns original action) + - New --debug=prepare option to show each target as it's being + prepared, whether or not anything needs to be done for it. + - New debug option --debug=duplicate to print a line for each + unlink/relink (or copy) of a variant file from its source file. + - Improve error message for EnumVariables to show legal values. + - Fix Intel compiler to sort versions >9 correctly (esp. on Linux) + - Fix Install() when the source and target are directories and the + target directory exists. + + From David Garcia Garzon: + - Fix Delete to be able to delete broken symlinks and dir + symlinks. + + From Imran Fanaswala and Robert Lehr: + - Handle .output file generated by bison/yacc properly. Cleaning it + when necessary. + + From Antoine Dechaume: + - Handle SWIG file where there is whitespace after the module name + properly. Previously the generated files would include + the whitespace. + + From Dmitry R.: + - Handle Environment in case __semi_deepcopy is None + + From Benoit Belley: + + - Much improved support for Windows UNC paths (\\SERVERNAME). + + From Jean-Baptiste Lab: + + - Fix problems with appending CPPDEFINES that contain + dictionaries, and related issues with Parse/MergeFlags and + CPPDEFINES. + + From Allen Weeks: + + - Fix for an issue with implicit-cache with multiple targets + when dependencies are removed on disk. + + From Evgeny Podjachev and Alexey Petruchick: + + - Support generation of Microsoft Visual Studio 2008 (9.0) + and 2010 (10.0) project and solution files. + + From Ken Deeter: + + - Fix a problem when FS Entries which are actually Dirs have builders. + + From Luca Falavigna: + + - Support Fortran 03 + + From Gary Oberbrunner: + + - Print the path to the SCons package in scons --version + + From Jean-Fran�ois Colson: + + - Improve Microsoft Visual Studio Solution generation, and fix + various errors in the generated solutions especially when using + MSVS_SCC_PROVIDER, and when generating multiple projects. The + construction variable MSVS_SCC_PROJECT_BASE_PATH, which never + worked properly, is removed. Users can use the new variable + MSVS_SCC_CONNECTION_ROOT instead if desired. + + From Anatoly Techtonik: + + - Use subprocess in bootstrap.py instead of os.execve to avoid + losing output control on Windows (http://bugs.python.org/issue9148) + + - Revert patch for adding SCons to App Paths, because standard cmd + shell doesn't search there. This is confusing, because `scons` can + be executed from explorer, but fail to start from console. + + - Fix broken installation with easy_install on Windows (issue #2051) + SCons traditionally installed in a way that allowed to run multiple + versions side by side. This custom logic was incompatible with + easy_install way of doing things. + + - Use epydoc module for generating API docs in HTML if command line + utility is not found in PATH. Actual for Windows. + + From Alexander Goomenyuk: + + - Add .sx to assembly source scanner list so .sx files + get their header file dependencies detected. + + From Arve Knudsen: + + - Set module metadata when loading site_scons/site_init.py + so it is treated as a proper module; __doc__, __file__ and + __name__ now refer to the site_init.py file. + + From Russel Winder: + + - Users Guide updates explaining that Tools can be packages as + well as python modules. + + From Gary Oberbrunner: + + - New systemwide and per-user site_scons dirs. + + From Dirk Baechle: + + - XML fixes in User's Guide. + - Fixed the detection of 'jar' and 'rmic' during + the initialization of the respective Tools (#2730). + - Improved docs for custom Decider functions and + custom Scanner objects (#2711, #2713). + - Corrected SWIG module names for generated *.i files (#2707). + + From Joe Zuntz: + + - Fixed a case-sensitivity problem with Fortran modules. + + From Bauke Conijn: + + - Added Users Guide example for auto-generated source code + + From Steven Knight: + + - Fix explicit dependencies (Depends()) on Nodes that don't have + attached Builders. + + - Fix use of the global Alias() function with command actions. + + From Matt Hughes: + + - Fix the ability to append to default $*FLAGS values (which are + implemented as CLVar instances) in a copied construction environment + without affecting the original construction environment's value. + + From Rob Managan: + + - Updated the TeX command strings to include a /D on Windows in + case the new directory is on a different drive letter. + + - Fixed the LaTeX scanner so dependencies are found in commands that + are broken across lines with a comment or have embedded spaces. + + - The TeX builders should now work with tex files that are generated + by another program. Thanks to Hans-Martin von Gaudecker for + isolating the cause of this bug. + + - Added support for INDEXSTYLE environment variable so makeindex can + find style files. + + - Added support for the bibunits package so we call bibtex on all + the bu*.aux files. + + - Add support of finding path information on OSX for TeX applications + MacPorts and Fink paths need to be added by the user + + From Russel Winder: + + - Add support for DMD version 2 (the phobos2 library). + + From William Deegan: + + - Add initial support for VS/VC 2010 (express and non-express versions) + - Remove warning for not finding MS VC/VS install. + "scons: warning: No version of Visual Studio compiler found + - C/C++ compilers most likely not set correctly" + - Add support for Linux 3.0 diff --git a/Changelogs/Changes-2.2.0.txt b/Changelogs/Changes-2.2.0.txt new file mode 100644 index 0000000000..28aeb001b6 --- /dev/null +++ b/Changelogs/Changes-2.2.0.txt @@ -0,0 +1,47 @@ +RELEASE 2.2.0 - Mon, 05 Aug 2012 15:37:48 +0000 + + From dubcanada on Bitbucket: + - Fix 32-bit Visual Express C++ on 64-bit Windows (generate 32-bit code) + + From Paweł Tomulik: + - Added gettext toolset + - Fixed FindSourceFiles to find final sources (leaf nodes). + + From Greg Ward: + - Allow Node objects in Java path (#2825) + + From Joshua Hughes: + - Make Windows not redefine builtin file as un-inheritable (#2857) + - Fix WINDOWS_INSERT_DEF on MinGW (Windows) (#2856) + + From smallbub on Bitbucket: + - Fix LINKCOMSTR, SHLINKCOMSTR, and LDMODULECOMSTR on Windows (#2833). + + From Mortoray: + - Make -s (silent mode) be silent about entering subdirs (#2976). + - Fix cloning of builders when cloning environment (#2821). + + From Gary Oberbrunner: + - Show valid Visual Studio architectures in error message + when user passes invalid arch. + + From Alexey Petruchik: + - Support for Microsoft Visual Studio 11 (both using it + and generating MSVS11 solution files). + + From Alexey Klimkin: + - Fixed the Taskmaster, curing spurious build failures in + multi-threaded runs (#2720). + + From Dirk Baechle: + - Improved documentation of command-line variables (#2809). + - Fixed scons-doc.py to properly convert main XML files (#2812). + + From Rob Managan: + - Updated the TeX builder to support LaTeX's multibib package. + - Updated the TeX builder to support LaTeX's biblatex package. + - Added support for using biber instead of bibtex by setting + env['BIBTEX'] = 'biber' + + From Arve Knudsen: + - Test for FORTRANPPFILESUFFIXES (#2129). diff --git a/Changelogs/Changes-2.3.0.txt b/Changelogs/Changes-2.3.0.txt new file mode 100644 index 0000000000..db298576e8 --- /dev/null +++ b/Changelogs/Changes-2.3.0.txt @@ -0,0 +1,62 @@ +RELEASE 2.3.0 - Mon, 02 Mar 2013 13:22:29 -0400 + + From Anatoly Techtonik: + - Added ability to run scripts/scons.py directly from source checkout + - Hide deprecated --debug={dtree,stree,tree} from --help output + - Error messages from option parser now include hints about valid choices + - Cleaned up some Python 1.5 and pre-2.3 code, so don't expect SCons + to run on anything less than Python 2.4 anymore + - Several fixes for runtest.py: + * exit with an error if no tests were found + * removed --noqmtest option - this behavior is by default + * replaced `-o FILE --xml` combination with `--xml FILE` + * changed `-o, --output FILE` option to capture stdout/stderr output + from runtest.py + - Remove os_spawnv_fix.diff patch required to enable parallel builds + support prior to Python 2.2 + + From Juan Lang: + - Fix WiX Tool to use .wixobj rather than .wxiobj for compiler output + - Support building with WiX releases after 2.0 + + From Alexey Klimkin: + - Fix nested LIBPATH expansion by flattening sequences in subst_path. + + From eyan on Bitbucket: + - Print target name with command execution time with --debug=time + + From Thomas Berg and Evgeny Podjachev: + - Fix subprocess spawning on Windows. Work around a Windows + bug that can crash python occasionally when using -jN. (#2449) + + From Dirk Baechle: + - Updated test framework to support dir and file fixtures and + added ability to test external (out-of-tree) tools (#2862). + See doc in QMTest/test-framework.rst. + - Fixed several errors in the test suite (Java paths, MSVS version + detection, Tool import), additionally + * provided MinGW command-line support for the CXX, AS and + Fortran tests, + * refactored the detection of the gcc version and the according + Fortran startup library, + * provided a new module rpmutils.py, wrapping the RPM naming rules + for target files and further hardware-dependent info (compatibility, + compiler flags, ...), + * added new test methods must_exist_one_of() and + must_not_exist_any_of() and + * removed Aegis support from runtest.py. (#2872) + + From Gary Oberbrunner: + - Add -jN support to runtest.py to run tests in parallel + - Add MSVC10 and MSVC11 support to get_output low-level bat script runner. + - Fix MSVS solution generation for VS11, and fixed tests. + + From Rob Managan: + - Updated the TeX builder to support the \newglossary command + in LaTeX's glossaries package and the files it creates. + - Improve support for new versions of biblatex in the TeX builder + so biber is called automatically if biblatex requires it. + - Add SHLIBVERSION as an option that tells SharedLibrary to build + a versioned shared library and create the required symlinks. + Add builder InstallVersionedLib to create the required symlinks + installing a versioned shared library. diff --git a/Changelogs/Changes-2.3.1.txt b/Changelogs/Changes-2.3.1.txt new file mode 100644 index 0000000000..a8147bd688 --- /dev/null +++ b/Changelogs/Changes-2.3.1.txt @@ -0,0 +1,80 @@ +RELEASE 2.3.1 + + From Andrew Featherstone: + - Added support for EPUB output format to the DocBook tool. + + From Tom Tanner: + - Stop leaking file handles to subprocesses by switching to using subprocess + always. + - Allow multiple options to be specified with --debug=a,b,c + - Add support for a readonly cache (--cache-readonly) + - Always print stats if requested + - Generally try harder to print out a message on build errors + - Adds a switch to warn on missing targets + - Add Pseudo command to mark targets which should not exist after + they are built. + + From Bogdan Tenea: + - Check for 8.3 filenames on cygwin as well as win32 to make variant_dir work properly. + + From Alexandre Feblot: + - Make sure SharedLibrary depends on all dependent libs (by depending on SHLINKCOM) + + From Stefan Sperling: + - Fixed the setup of linker flags for a versioned SharedLibrary + under OpenBSD (#2916). + + From Antonio Cavallo: + - Improve error if Visual Studio bat file not found. + + From Manuel Francisco Naranjo: + - Allow Subst.Literal string objects to be compared with each other, + so they work better in AddUnique() and Remove(). + + From David Rothenberger: + - Added cyglink linker that uses Cygwin naming conventions for + shared libraries and automatically generates import libraries. + + From Dirk Baechle: + - Update bootstrap.py so it can be used from any dir, to run + SCons from a source (non-installed) dir. + - Count statistics of instances are now collected only when + the --debug=count command-line option is used (#2922). + - Added release_target_info() to File nodes, which helps to + reduce memory consumption in clean builds and update runs + of large projects. + - Fixed the handling of long options in the command-line + parsing (#2929). + - Fixed misspelled variable in intelc.py (#2928). + + From Gary Oberbrunner: + - Test harness: fail_test() can now print a message to help debugging. + + From Anatoly Techtonik: + - Require rpmbuild when building SCons package. + - Print full stack on certain errors, for debugging. + - Improve documentation for Textfile builder. + + From William Deegan: + - VS2012 & VS2010 Resolve initialization issues by adding path to reg.exe + in shell used to run batch files. + - MSVC Support fixed defaulting TARGET_ARCH to HOST_ARCH. It should be + None if not explicitly set. + - MSVC Fixed issue where if more than one Architectures compilers are + detected, it would take the last one found, and not the first. + + From Philipp Kraus: + - Added optional ZIPROOT to Zip tool. + + From Dirk Baechle: + - Replaced old SGML-based documentation toolchain with a more modern + approach, that also requires less external dependencies (programs and + Python packages). Added a customized Docbook XSD for strict validation of + all input XML files. + + From Luca Falavigna: + - Fixed spelling errors in MAN pages (#2897). + + From Michael McDougall: + - Fixed description of ignore_case for EnumVariable in the + MAN page (#2774). diff --git a/Changelogs/Changes-2.3.2.txt b/Changelogs/Changes-2.3.2.txt new file mode 100644 index 0000000000..8bbd7bc52b --- /dev/null +++ b/Changelogs/Changes-2.3.2.txt @@ -0,0 +1,53 @@ +RELEASE 2.3.2 + + From Dirk Baechle: + - Update XML doc editor configuration + - Fix: Allow varlist to be specified as list of strings for Actions (#2754) + + From veon on bitbucket: + - Fixed handling of nested ifs in CPP scanner PreProcessor class. + + From Shane Gannon: + - Support for Visual Studio 2013 (12.0) + + From Michael Haubenwallner: + - Respect user's CC/CXX values; don't always overwrite in generate() + - Delegate linker Tool.exists() to CC/CXX Tool.exists(). + + From Rob Managan: + - Updated the TeX builder to support use of the -synctex=1 + option and the files it creates. + - Updated the TeX builder to correctly clean auxiliary files when + the biblatex package is used. + + From Gary Oberbrunner: + - get default RPM architecture more robustly when building RPMs + + From Amir Szekely: + - Fixed NoClean() for multi-target builders (#2353). + + From Paweł Tomulik: + - Fix SConf tests that write output + + From Russel Winder: + - Revamp of the D language support. Tools for DMD, GDC and LDC provided + and integrated with the C and C++ linking. NOTE: This is only tested + with D v2. Support for D v1 is now deprecated. + + From Anatoly Techtonik: + - Several improvements for running scons.py from source: + * engine files form source directory take priority over all other + importable versions + * message about scons.py running from source is removed to fix tests + that were failing because of this extra line in the output + * error message when SCons import fails now lists lookup paths + - Remove support for QMTest harness from runtest.py + - Remove RPM and m4 from default tools on Windows + - BitKeeper, CVS, Perforce, RCS, SCCS are deprecated from default + tools and will be removed in future SCons versions to speed up + SCons initialization (it will still be possible to use these tools + explicitly) + + From Sye van der Veen: + - Support for Visual Studio 12.0Exp, and fixes for earlier MSVS + versions. diff --git a/Changelogs/Changes-2.3.3.txt b/Changelogs/Changes-2.3.3.txt new file mode 100644 index 0000000000..3f14f8705a --- /dev/null +++ b/Changelogs/Changes-2.3.3.txt @@ -0,0 +1,33 @@ +RELEASE 2.3.3 - Sun, 24 Aug 2014 21:08:33 -0400 + + From Roland Stark: + - Fixed false line length calculation in the TempFileMunge class (#2970). + + From Gary Oberbrunner: + - Improve SWIG detection + + From Russel Winder: + - Fix regression on Windows in D language update + + From Neal Becker and Stefan Zimmermann: + - Python 3 port and compatibility + + From Anatoly Techtonik: + - Do not fail on EnsureSConsVersion when running from checkout + + From Kendrick Boyd and Rob Managan: + - Fixed the newglossary action to work with VariantDir (LaTeX). + + From Manuel Francisco Naranjo: + - Added a default for the BUILDERS environment variable, + to prevent not defined exception on a Clone(). + + From Andrew Featherstone: + - Added description of CheckTypeSize method (#1991). + - Fixed handling of CPPDEFINE var in Append() + for several list-dict combinations (#2900). + + From William Blevins: + - Added test for Java derived-source dependency tree generation. + - Added Copy Action symlink soft-copy support (#2395). + - Various contributions to the documentation (UserGuide). diff --git a/Changelogs/Changes-2.3.4.txt b/Changelogs/Changes-2.3.4.txt new file mode 100644 index 0000000000..d81e5b80aa --- /dev/null +++ b/Changelogs/Changes-2.3.4.txt @@ -0,0 +1,11 @@ +RELEASE 2.3.4 - Mon, 27 Sep 2014 12:50:35 -0400 + + From Bernhard Walle and Dirk Baechle: + - Fixed the interactive mode, in connection with + Configure contexts (#2971). + + From Anatoly Techtonik: + - Fix EnsureSConsVersion warning when running packaged version + + From Russel Winder: + - Fix D tools for building shared libraries diff --git a/Changelogs/Changes-2.3.5.txt b/Changelogs/Changes-2.3.5.txt new file mode 100644 index 0000000000..93ded2be9f --- /dev/null +++ b/Changelogs/Changes-2.3.5.txt @@ -0,0 +1,46 @@ +RELEASE 2.3.5 - Mon, 17 Jun 2015 21:07:32 -0700 + + From Stephen Pollard: + - Documentation fixes for libraries.xml and + builders-writing.xml (#2989 and #2990) + + From William Deegan: + - Extended docs for InstallVersionedLib/SharedLibrary, + and added SKIP_WIN_PACKAGES argument to build script + bootstrap.py (PR #230, #3002). + + From William Blevins: + - Fixed symlink support (PR #227, #2395). + - Updated debug-count test case (PR #229). + + From Alexey Klimkin: + - Fixed incomplete LIBS flattening and substitution in + Program scanner(PR #205, #2954). + + From Dirk Baechle: + - Added new method rentry_exists_on_disk to Node.FS (PR #193). + + From Russel Winder: + - Fixed several D tests under the different OS. + - Add support for f08 file extensions for Fortran 2008 code. + + From Anatoly Techtonik: + - Show --config choices if no argument is specified (PR #202). + - Fixed build crash when XML toolchain isn't installed, and + activated compression for ZIP archives. + + From Alexandre Feblot: + - Fix for VersionedSharedLibrary under 'sunos' platform. + - Fixed dll link with precompiled headers on MSVC 2012 + - Added an 'exclude' parameter to Glob() + + From Laurent Marchelli: + - Support for multiple cmdargs (one per variant) in VS project files. + - Various improvements for TempFileMunge class. + - Added an implementation for Visual Studio users files (PR #209). + + From Dan Pidcock: + - Added support for the 'PlatformToolset' tag in VS project files (#2978). + + From James McCoy: + - Added support for '-isystem' to ParseFlags. diff --git a/Changelogs/Changes-2.3.6.txt b/Changelogs/Changes-2.3.6.txt new file mode 100644 index 0000000000..94d63ff529 --- /dev/null +++ b/Changelogs/Changes-2.3.6.txt @@ -0,0 +1,4 @@ +RELEASE 2.3.6 - Mon, 31 Jul 2015 14:35:03 -0700 + + From Rob Smith: + - Added support for Visual Studio 2015 diff --git a/Changelogs/Changes-2.4.0.txt b/Changelogs/Changes-2.4.0.txt new file mode 100644 index 0000000000..f3fee94b68 --- /dev/null +++ b/Changelogs/Changes-2.4.0.txt @@ -0,0 +1,11 @@ +RELEASE 2.4.0 - Mon, 21 Sep 2015 08:56:00 -0700 + + From Dirk Baechle: + - Switched several core classes to use "slots", to + reduce the overall memory consumption in large + projects (fixes #2180, #2178, #2198) + - Memoizer counting uses decorators now, instead of + the old metaclasses approach. + + From Andrew Featherstone + - Fixed typo in SWIGPATH description diff --git a/Changelogs/Changes-2.4.1.txt b/Changelogs/Changes-2.4.1.txt new file mode 100644 index 0000000000..544b937d9b --- /dev/null +++ b/Changelogs/Changes-2.4.1.txt @@ -0,0 +1,60 @@ +RELEASE 2.4.1 - Mon, 07 Nov 2015 10:37:21 -0700 + + From Arfrever Frehtes Taifersar Arahesis: + - Fix for Bug # 2791 - Setup.py fails unnecessarily under Jython. + + From Dirk Baechle: + - Fixed license of SVG titlepage files in the context of Debian + packaging, such that they allow for commercial use too (#2985). + + From William Blevins: + - InstallVersionedLib now available in the DefaultEnvironment context. + - Improves orthogonality of use cases between different Install functions. + + From Carnë Draug: + - Added new configure check, CheckProg, to check for + existence of a program. + + From Andrew Featherstone: + - Fix for issue #2840 - Fix for two environments specifying same target with different + actions not throwing hard error. Instead SCons was incorrectly issuing a warning + and continuing. + + From Hiroaki Itoh : + - Add support `Microsoft Visual C++ Compiler for Python 2.7' + Compiler can be obtained at: https://www.microsoft.com/en-us/download/details.aspx?id=44266 + + From Florian Miedniak: + - Fixed tigris issue #3011: Glob() excludes didn't work when used with VariantDir(duplicate=0) + + From William Roberts: + - Fix bug 2831 and allow Help() text to be appended to AddOption() help. + + From Paweł Tomulik: + - Reimplemented versioning for shared libraries, with the following effects + - Fixed tigris issues #3001, #3006. + - Fixed several other issues not reported to tigris, including: + issues with versioned libraries in subdirectories with tricky names, + issues with versioned libraries and variant directories, + issue with soname not being injected to library when using D linkers, + - Switched to direct symlinks instead of daisy-chained ones -- soname and + development symlinks point directly to the versioned shared library now), + for rationale see: + https://www.debian.org/doc/debian-policy/ch-sharedlibs.html + https://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages + https://bitbucket.org/scons/scons/pull-requests/247/new-versioned-libraries-gnulink-cyglink/diff#comment-10063929 + - New construction variables to allow override default behavior: SONAME, + SHLIBVERSIONFLAGS, _SHLIBVERSIONFLAGS, SHLIBNOVERSIONSYMLINKS, + LDMODULEVERSION, LDMODULEVERSIONFLAGS, _LDMODULEVERSIONFLAGS, + LDMODULENOVERSIONSYMLINKS. + - Changed logic used to configure the versioning machinery from + platform-centric to linker-oriented. + - The SHLIBVERSION/LDMODULEVERSION variables are no longer validated by + SCons (more freedom to users). + - InstallVersionedLib() doesn't use SHLIBVERSION anymore. + - Enchanced docs for the library versioning stuff. + - New tests for versioned libraries. + - Library versioning is currently implemented for the following linker + tools: 'cyglink', 'gnulink', 'sunlink'. + - Fix to swig tool - pick-up 'swig', 'swig3.0' and 'swig2.0' (in order). + - Fix to swig tool - respect env['SWIG'] provided by user. diff --git a/Changelogs/Changes-2.5.0.txt b/Changelogs/Changes-2.5.0.txt new file mode 100644 index 0000000000..0fa6984bc1 --- /dev/null +++ b/Changelogs/Changes-2.5.0.txt @@ -0,0 +1,50 @@ +RELEASE 2.5.0 - Mon, 09 Apr 2016 11:27:42 -0700 + + From Dirk Baechle: + - Removed a lot of compatibility methods and workarounds + for Python versions < 2.7, in order to prepare the work + towards a combined 2.7/3.x version. (PR #284) + Also fixed the default arguments for the print_tree and + render_tree methods. (PR #284, too) + + From William Blevins: + - Added support for cross-language dependency scanning; + SCons now respects scanner keys for implicit dependencies. + - Notes for SCons users with heterogeneous systems. + - May find new (previously missed) dependencies. + - May cause rebuild after upgrade due to dependency changes. + - May find new dependency errors (EG. cycles). + - Discovered in some of the SCons QT tests. + - Resolved missing cross-language dependencies for + SWIG bindings (fixes #2264). + - Corrected typo in User Guide for Scanner keyword. (PR #2959) + - Install builder interacts with scanner found in SCANNERS differently. + - Previous: Install builder recursively scanned implicit dependencies + for scanners from SCANNER, but not for built-in (default) scanners. + - Current: Install builder will not scan for implicit dependencies via + either scanner source. This optimizes some Install builder behavior + and brings orthogonality to Install builder scanning behavior. + + From William Deegan: + - Add better messaging when two environments have + different actions for the same target (Bug #2024) + - Fix issue only with MSVC and Always build where targets + marked AlwaysBuild wouldn't make it into CHANGED_SOURCES + and thus yield an empty compile command line. (Bug #2622) + - Fix posix platform escaping logic to properly handle paths + with parens in them "()". (Bug #2225) + + From Jakub Pola: + - Intel Compiler 2016 (Linux/Mac) update for tool directories. + + From Adarsh Sanjeev: + - Fix for issue #2494: Added string support for Chmod function. + + From Tom Tanner: + - change cache to use 2 character subdirectories, rather than one character, + so as not to give huge directories for large caches, a situation which + causes issues for NFS. + For existing caches, you will need to run the scons-configure-cache.py + script to update them to the new format. You will get a warning every time + you build until you co this. + - Fix a bunch of unit tests on windows diff --git a/Changelogs/Changes-2.5.1.txt b/Changelogs/Changes-2.5.1.txt new file mode 100644 index 0000000000..49a014e345 --- /dev/null +++ b/Changelogs/Changes-2.5.1.txt @@ -0,0 +1,8 @@ +RELEASE 2.5.1 - Mon, 03 Nov 2016 13:37:42 -0400 + + From William Deegan: + - Add scons-configure-cache.py to packaging. It was omitted + + From Alexey Klimkin: + - Use memoization to optimize PATH evaluation across all dependencies per + node. (PR #345) diff --git a/Changelogs/Changes-3.0.0.txt b/Changelogs/Changes-3.0.0.txt new file mode 100644 index 0000000000..1db9fc56bb --- /dev/null +++ b/Changelogs/Changes-3.0.0.txt @@ -0,0 +1,113 @@ +RELEASE 3.0.0 - Mon, 18 Sep 2017 08:32:04 -0700 + +NOTE: This is a major release. You should expect that some targets may rebuild when upgrading. +Significant changes in some python action signatures. Also switching between PY 2.7 and PY 3.5, 3.6 +will cause rebuilds. + + + From William Blevins: + - Updated D language scanner support to latest: 2.071.1. (PR #1924) + https://dlang.org/spec/module.html accessed 11 August 2016 + - Enhancements: + - Added support for selective imports: "import A : B, C;" -> A + - Added support for renamed imports. "import B = A;" -> A + - Supports valid combinations: "import A, B, CCC = C, DDD = D : EEE = FFF;" -> A, B, C, D + - Notes: + - May find new (previously missed) Dlang dependencies. + - May cause rebuild after upgrade due to dependency changes. + - Updated Fortran-related tests to pass under GCC 5/6. + - Fixed SCons.Tool.Packaging.rpm.package source nondeterminism across builds. + + From William Deegan: + - Removed deprecated tools CVS, Perforce, BitKeeper, RCS, SCCS, Subversion. + - Removed deprecated module SCons.Sig + - Added prioritized list of xsltproc tools to docbook. The order will now be as + follows: xsltproc, saxon, saxon-xslt, xalan (with first being highest priority, first + tool found is used) + - Fixed MSVSProject example code (http://scons.tigris.org/issues/show_bug.cgi?id=2979) + - Defined MS SDK 10.0 and Changed VS 2015 to use SDK 10.0 + - Changes to Action Function and Action Class signiture creation. NOTE: This will cause rebuilds + for many builds when upgrading to SCons 3.0 + - Fixed Bug #3027 - "Cross Compiling issue: cannot override ranlib" + - Fixed Bug #3020 - "Download link in user guide wrong. python setup.py install --version-lib broken" + - Fixed Bug #2486 - Added SetOption('silent',True) - Previously this value was not allowed to be set. + - Fixed Bug #3040 - Non-unicode character in CHANGES.txt + - Fixed Bug #2622 - AlwaysBuild + MSVC regression. + - Fixed Bug #3025 - (Credit to Florian : User flow86 on tigris) - Fix typo JAVACLASSSUFIX should have been + JAVACLASSSUFFIX + + + From Ibrahim Esmat: + - Added the capability to build Windows Store Compatible libraries that can be used + with Universal Windows Platform (UWP) Apps and published to the store + + From Daniel Holth: + - Add basic support for PyPy (by deleting __slots__ from Node with a + metaclass on PyPy); wrap most-used open() calls in 'with' statements to + avoid too many open files. + - Add __main__.py for `python -m SCons` in case it is on PYTHONPATH. + - Always use highest available pickle protocol for efficiency. + - Remove unused command line fallback for the zip tool. + + From Gaurav Juvekar: + - Fix issue #2832: Expand construction variables in 'chdir' argument of builders. (PR #463) + - Fix issue #2910: Make --tree=all handle Unicode. (PR #427) + - Fix issue #2788: Fix typo in documentation example for sconf. (PR #388) + + From Alexey Klimkin: + - Use memoization to optimize PATH evaluation across all dependencies per + node. (PR #345) + - Use set() where it is applicable (PR #344) + + From M. Limber: + - Fixed msvs.py for Visual Studio Express editions that would report + "Error : ValueError: invalid literal for float(): 10.0Exp". + + From Rick Lupton: + - Update LaTeX scanner to understand \import and related commands + + From Steve Robinson: + - Add support for Visual Studio 2017. This support requires vswhere.exe a helper + tool installed with newer installs of 2017. SCons expects it to be located at + "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" + It can be downloaded separately at + https://github.com/Microsoft/vswhere + + From Tom Tanner: + - Allow nested $( ... $) sections + + From Paweł Tomulik: + - Fixed the issue with LDMODULEVERSIONFLAGS reported by Tim Jenness + (https://pairlist4.pair.net/pipermail/scons-users/2016-May/004893.html). + An error was causing "-Wl,Bsymbolic" being added to linker's command-line + even when there was no specified value in LDMODULEVERSION and thus no + need for the flags to be specified. + - Added LoadableModule to the list of global functions (DefaultEnvironment + builders). + + From Manish Vachharajani: + - Update debian rules, compat, and control to not use features + deprecated or obsolete in later versions of debhelpers + - Update python version to 2.7 in debian/control + + From Richard Viney: + - Fixed PCHPDBFLAGS causing a deprecation warning on MSVC v8 and later when + using PCHs and PDBs together. + + + From Richard West: + - Added nested / namespace tool support + - Added a small fix to the python3 tool loader when loading a tool as a package + - Added additional documentation to the user manual on using toolpaths with the environment + This includes the use of sys.path to search for tools installed via pip or package managers + - Added support for a PyPackageDir function for use with the toolpath + + From Russel Winder: + - Reordered the default D tools from "dmd, gdc, ldc" to "dmd, ldc, gdc". + - Add a ProgramAllAtOnce builder to the dmd, ldc, and gdc tools. (PR #448) + - Remove a file name exception for very old Fedora LDC installation. + - gdc can now handle building shared objects (tested for version 6.3.0). + - Remove establishing the SharedLibrary builder in the dmd, ldc, and gdc + tools, must now include the ar tool to get this builder as is required for + other compiler tools. + - Add clang and clang++ tools based on Paweł Tomulik's work. diff --git a/Changelogs/Changes-3.0.1.txt b/Changelogs/Changes-3.0.1.txt new file mode 100644 index 0000000000..4e22413b98 --- /dev/null +++ b/Changelogs/Changes-3.0.1.txt @@ -0,0 +1,41 @@ +RELEASE 3.0.1 - Mon, 12 Nov 2017 15:31:33 -0700 + + From Daniel Moody: + - Jar can take multiple targets, and will make a duplicate jar from the sources for each target + - Added some warnings in case the Jar builder makes an implicit target + - Added Jar method and changed jar build to be more specific. Jar method will take in + directories or classes as source. Added more tests to JAR to ensure the jar was + packaged with the correct compiled class files. + - Added a No result test case to handle bug which seems unrelated to java in the + swig-dependencies.py test, more info here: http://scons.tigris.org/issues/show_bug.cgi?id=2907 + - Added a travis script to test on ubuntu trusty now that the project is on github + so that Continuus Integration tests can be run automatically. It tests most case and considers + no result a pass as well. Improving this script can install more dependincies allowing for more + tests to be run. + + From Daniel Moody: + - Updated the Jar Builder tool in Tool/__init__.py so that is doesn't force class files as + sources, allowing directories to be passed, which was causing test/Java/JAR.py to fail. + + From William Deegan: + - Fix issue where code in utility routine to_String_for_subst() had code whose result was never + properly returned. + (Found by: James Rinkevich https://pairlist4.pair.net/pipermail/scons-users/2017-October/006358.html ) + - Fixed Variables.GenerateHelpText() to now use the sort parameter. Due to incorrect 2to3 fixer changes + 8 years ago it was being used as a boolean parameter. Now you can specify sort to be a callable, or boolean + value. (True = normal sort). Manpage also updated. + - Fixed Tool loading logic from exploding sys.path with many site_scons/site_tools prepended on py3. + - Added additional output with time to process each SConscript file when using --debug=time. + + From Thomas Berg: + - Fixed a regression in scons-3.0.0 where "from __future__ import print_function" was imposed + on the scope where SConstruct is executed, breaking existing builds using PY 2.7. + + From William Deegan: + - Fix broken subst logic where a string with "$$(abc)" was being treated as "$(abc) and the + logic for removing the signature escapes was then failing because there was no closing "$)". + This was introduced by a pull request to allow recursive variable evaluations to yield a string + such as "$( $( some stuff $) $)". + + From Zachary Tessler: + - Fix incorrect warning for repeated identical builder calls that use overrides diff --git a/Changelogs/Changes-3.0.2.txt b/Changelogs/Changes-3.0.2.txt new file mode 100644 index 0000000000..cfa71280f2 --- /dev/null +++ b/Changelogs/Changes-3.0.2.txt @@ -0,0 +1,205 @@ +RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700 + + From Bernard Blackham: + - Fixed handling of side-effects in task master (fixes #3013). + + From William Deegan: + - Remove long deprecated SCons.Options code and tests. This removes BoolOption,EnumOption, + ListOption,PackageOption, and PathOption which have been replaced by *Variable() many years ago. + - Re-Enable parallel SCons (-j) when running via Pypy + - Move SCons test framework files to testing/framework and remove all references to QMtest. + QMTest has not been used by SCons for some time now. + - Updated logic for mingw and clang on win32 to search default tool install paths if not + found in normal SCons PATH. If the user specifies PATH or tool specific paths they + will be used and the default paths below will be ignored. + - Default path for clang/clangxx : C:\Program Files\LLVM\bin + - Default path for mingw : C:\MinGW\bin and/or C:\mingw-w64\*\mingw64\bin + - Key program to locate mingw : mingw32-make (as the gcc with mingw prefix has no fixed name) + - Fixed issue causing stack trace when python Action function contains a unicode string when being + run with Python 2.7 + - Add alternate path to QT install for Centos in qt tool: /usr/lib64/qt-3.3/bin + - Fix Java tools to search reasonable default paths for Win32, Linux, macOS. Add required paths + for swig and java native interface to JAVAINCLUDES. You should add these to your CPPPATH if you need + to compile with them. This handles spaces in paths in default Java paths on windows. + - Added more java paths to match install for Centos 7 of openjdk + - Fix new logic which populates JAVAINCLUDES to handle the case where javac is not found. + - Fix GH Issue #2580 - # in FRAMEWORKPATH doesn't get properly expanded. The # is left in the + command line. + - Fix issue #2980 with credit to Piotr Bartosik (and William Blevins). This is an issue where using + TimeStamp-MD5 Decider and CacheDir can yield incorrect md5's being written into the .sconsign. + The difference between Piotr Bartosik's patch and the current code is that the more complicated + creation of file to csig map is only done when the count of children for the current node doesn't + match the previous count which is loaded from the sconsign. + - Fix issue # 3106 MSVC if using MSVC_BATCH and target dir had a space would fail due to quirk in + MSVC's handling of escaped targetdirs when batch compiling. + - Fix GH Issue #3141 unicode string in a TryAction() with python 2.7 crashes. + - Fix GH Issue #3212 - Use of Py3 and CacheDir + Configure's TryCompile (or likely and Python Value Nodes) + yielded trying to combine strings and bytes which threw exception. + - Fix GH Issue #3225 SCons.Util.Flatten() doesn't handle MappingView's produced by dictionary as return + values from dict().{items(), keys(), values()}. + - Fix GH Issue #3241 - Properly support versioned shared libraries for MacOS. We've also introduced two + new env variables APPLELINK_CURRENT_VERSION and APPLELINK_COMPATIBILITY_VERSION which will specify + what is passed to the linkers -current_version and -compatibility_version flags. If not specified + they will be derived from SHLIBVERSION as such: + - APPLELINK_CURRENT_VERSION = SHLIBVERSION + - APPLELINK_COMPATIBILITY_VERSION = all but the last digit in SHLIBVERSION with .0 appended. + Note that the values of the above will be validated. Valid format for either APPLELINK variable is + X[.Y[.Z]] where 0 <= X <= 65535, 0 <= Y <= 255, 0 <= Z <= 255. + The new variables have been added to the documents and should show up in user guide and manpage. + - Fix GH Issue #3136 no longer wrap io.{BufferedReader,BufferedWriter,BufferedRWPair,BufferedRandom,TextIOWrapper + with logic to set HANDLE_FLAG_INHERIT flag on the file handle. Python 3.4+ automatically sets this according + to Python docs: https://docs.python.org/3/library/os.html#fd-inheritance + + From Ray Donnelly: + - Fix the PATH created by scons.bat (and other .bat files) to provide a normalized + PATH. Some pythons in the 3.6 series are no longer able to handle paths which + have ".." in them and end up crashing. This is done by cd'ing into the directory + we want to add to the path and then using %CD% to give us the normalized directory + See bug filed under Python 3.6: https://bugs.python.org/issue32457. + Note: On Win32 PATH's which have not been normalized may cause undefined behavior + by other executables being run by SCons (or any subprocesses of executables being run by SCons). + Resolving this issue should eliminate that possibility going forward. + + From Andrew Featherstone + - Removed unused --warn options from the man page and source code. + + From Arda Fu + - Fix cpp scanner regex logic to treat ifndef for py3.5+. Previously it was + not properly differentiating between if, ifdef, and ifndef. + + From Philipp Maierhöfer + - Added a __hash__ method to the class SCons.Subst.Literal. Required when substituting Literal + objects when SCons runs with Python 3. + - Added missing FORTRANMODDIRPREFIX to the gfortran tool. + + From Matthew Marinets: + - Fixed an issue that caused the Java emitter to incorrectly parse arguments to constructors that + implemented a class. + + From Fredrik Medley: + - Fix exception when printing of EnviromentError messages. + Specifically, this fixes error reporting of the race condition when + initializing the cache which error previously was hidden. + + From Daniel Moody: + - Updated Jar builder to handle nodes and directories better + - Updated Jar builder to flatten source list which could contain embedded lists + - Removed some magic numbers from jar.py on behalf of Mats Wichmann (mats@linux.com) + - Set the pickling protocal back to highest which was causing issues + with variant dir tests. This will cause issues if reading sconsigns + pickled with the previous lower protocol. + - Updated swig to setup default paths for windows + - Updated gettext tools to setup default paths for windows with Cygwin/MinGW setups + - Add common location for default paths for cygwin and mingw in Platform modules + - Updated YACC tool to work on windows with Cygwin/MinGW setups + - Set the pickling protocal back to highest which was causing issues + with variant dir tests. This will cause issues if reading sconsigns + pickled with the previous lower protocol. + - Updated FS.py to handle removal of splitunc function from python 3.7 + - Updated the vc.py to ignore MSVS versions where no compiler could be found + + From Gary Oberbrunner: + - Fix bug when Installing multiple subdirs outside the source tree + - fix to_str to handle None without raising exception + - Fix -jN for python 3.7 + + From Jonathon Reinhart: + - Replace all instances of `int main()` in C code with `int main(void)`. + Specifically, this fixes the test cases use by Configure.CheckCC() which + would fail when using -Wstrict-prototypes. + + From Zachary Tessler: + - Fix calculation of signatures for FunctionActions that contain list (or set,...) + comprehensions whose expressions involve constant literals. Those constants had + been ignored in signatures, so changing them did not cause targets to be rebuilt. + + From Paweł Tomulik: + - In the testing framework, module TestCommon, fixed must_contain(), + must_not_contain(), and related methods of TestCommon class to work with + substrings located at zero offset. + - Added virtualenv support. A new function Virtualenv() determines whether + SCons runs in a virtualenv. The search PATH may also be extended to + prefer executables from the current virtualenv over the ones provided by + base environment. New option --enable-virtualenv provided to import some + virtualenv-related variables to SCons and extend every env['ENV']['PATH'] + automatically. New option --ignore-virtualenv disables this. Two + environment variables, SCONS_ENABLE_VIRTUALENV and + SCONS_IGNORE_VIRTUALENV are supported for the same purpose. + + From Richard West: + - Add SConstruct.py, Sconstruct.py, sconstruct.py to the search path for the root SConstruct file. + Allows easier debugging within Visual Studio + - Change setup.py to change the install directory (via pip, or setup.py install) from scons-#.#.# + to scons (Yielding /lib/scons/SCons/ instead of /lib/scons/SCons-#.#.#/). + This changes SCons to better comply with normal Python installation practices. + + From Mats Wichmann: + - Recognize new java 9, 10, 11 (as 9.0 and 10.0, 11.0) + - Updated manpage scons.xml to fix a nested list problem + - Updated doc terminiology: use prepend instead of append as appropriate + - XML validity fixes from SConstruct.py change + - Update wiki links to new github location + - Update bug links to new github location + - Make it easier for SConscript() call to fail on missing script. + It was possible to call SCons.Warnings.warningAsException + (not documented as a user API) to make all warnings fail. Now + SConscript can take an optional must_exist flag which if true fails + if the script does not exist. Not failing on missing script is + now considered deprecated, and the first instance will print a + deprecation message. It is now also possible to flip the scons + behavior (which still defaults to warn, not fail) by calling + SCons.Script.set_missing_sconscript_error, which is also not a + documented interface at the moment. + - Convert TestCmd.read to use with statement on open (quiets 17 py3 warnings) + - Quiet py3 warning in UtilTests.py + - Fix tests specifying octal constants for py3 + - Fix must_contain tests for py3 + - RPM package generation: + - Fix supplying a build architecture + - Disable auto debug package generation on certain rpmbuild versions + - Adjust some tests to only supply build-id file on certain rpmbuild versions + - Tests now use a file fixture for the repeated (trivial) main.c program. + - Document and comment cleanup. + - Added new Environment Value X_RPM_EXTRADEFS to supply custom settings + to the specfile without adding specific logic for each one to scons. + - The test for Python.h needed by swig tests is moved to get_python_platform + so it does not have to be repeated in every test; picks up one failure + which did not make the (previously needed) check. Windows version + of get_python_platform needed some rework in case running in virtualenv. + - If test opens os.devnull, register with atexit so file opens do not leak. + - Fix bugs in Win32 process spawn logic to handle OSError exception correctly. + - Use time.perf_counter instead of time.clock if it exists. + time.clock deprecated since py3.3, due to remove in 3.8. deprecation + warnings from py3.7 were failing a bunch of tests on Windows since they + mess up expected stderr. + - Prefer Py3's inspect.getfullargspec over deprecated inspect.getargspec. + Switched to "new" (standard in Py2.7) usage of receiving a namedtuple - + we were unpacking to a four-tuple, two of the items of which were unused; + getfullargspec returns a named tuple with seven elements so it is a + cleaner drop-in replacement using the namedtuple. + - Updated the test-framework.rst documentation. + - Remove obsoleted internal implementaiton of OrderedDict. + - Test for tar packaging fixups + - Stop using deprecated unittest asserts + - messages in strip-install-dir test now os-neutral + - Add xz compression format to packaging choices. + - Syntax cleanups - trailing blanks, use "is" to compare with None, etc. + Three uses of variables not defined are changed. + - Some script changes in trying to find scons engine + - Update (pep8) configure-cache script, add a --show option. + - Fix for a couple of "what if tool not found" exceptions in framework. + - Add Textfile/Substfile to default environment. (issue #3147) + - sconsign: a couple of python3 fixes; be more tolerant of implicit + entries which have no signatures; minor PEP8 changes. + - Fix a couple of type mistakes (list-> string, filter type -> list) + - Fix a couple of type mistakes in packaging tools: list-> string in msi, + filter type -> list in ipk + + From Bernhard M. Wiedemann: + - Update SCons' internal scons build logic to allow overriding build date + with SOURCE_DATE_EPOCH for SCons itself. + - Change the datestamps in SCons' docs and embedded in code use ISO 8601 format and UTC + + From Hao Wu + - Typo in customized decider example in user guide + - Replace usage of unittest.TestSuite with unittest.main() (fix #3113) diff --git a/Changelogs/Changes-3.0.3.txt b/Changelogs/Changes-3.0.3.txt new file mode 100644 index 0000000000..8a89380bdd --- /dev/null +++ b/Changelogs/Changes-3.0.3.txt @@ -0,0 +1,12 @@ +RELEASE 3.0.3 - Mon, 07 Jan 2019 20:05:22 -0400 + NOTE: 3.0.2 release was dropped because there was a packaging bug. Please consider all 3.0.2 + content. + + From William Deegan: + - Fixes to packaging logic. Ensuring the SCons.Tool.clangCommon module is added + to the release packages. + - Modify scons.bat script to check for scons python script without .py extension if no file + scons.py exists. This enables an all platform wheel to work. + + From Mats Wichmann: + - Update doc examples to work with Python 3.5+: map() now returns an iterable instead of a list. diff --git a/Changelogs/Changes-3.0.4.txt b/Changelogs/Changes-3.0.4.txt new file mode 100644 index 0000000000..93b4774aab --- /dev/null +++ b/Changelogs/Changes-3.0.4.txt @@ -0,0 +1,22 @@ +RELEASE 3.0.4 - Mon, 20 Jan 2019 22:49:27 +0000 + + From Mats Wichmann: + - Improve finding of Microsoft compiler: add a 'products' wildcard + in case 2017 Build Tools only is installed as it is considered a separate + product from the default Visual Studio + - Add TEMPFILESUFFIX to allow a customizable filename extension, as + described in the patch attached to issue #2431. + - scons.py and sconsign.py stopped working if script called as a symlink + to location in scons-local location. + - Fix issue running scons using a symlink to scons.py in an scons-local dir + - Doc updates around Default(), and the various *TARGETS variables. + + From Daniel Moody: + - Improved support for VC14.1 and Visual Studio 2017, as well as arm and arm64 targets. + Issues #3268 & Issue #3222 + - Initial support for ARM targets with Visual Studio 2017 - Issue #3182 (You must set TARGET_ARCH for this to work) + - Update TempFileMunge class to use PRINT_CMD_LINE_FUNC + + From Tobias Herzog + - Enhance cpp scanner regex logic to detect if/elif expressions without whitespaces but + parenthesis like "#if(defined FOO)" or "#elif!(BAR)" correctly. diff --git a/Changelogs/Changes-3.0.5.txt b/Changelogs/Changes-3.0.5.txt new file mode 100644 index 0000000000..bb01e89c3a --- /dev/null +++ b/Changelogs/Changes-3.0.5.txt @@ -0,0 +1,40 @@ +RELEASE 3.0.5 - Mon, 26 Mar 2019 15:04:42 -0700 + + From William Deegan: + + - Fix Issue #3283 - Handle using --config=force in combination with Decider('MD5-timestamp'). + 3.0.2 in fix for issue #2980 added that deciders can throw DeciderNeedsNode exception. + The Configure logic directly calls the decider when using --config=force but wasn't handling + that exception. This would yield minimally configure tests using TryLink() not running and + leaving TypeError Nonetype exception in config.log + - Fix Issue #3303 - Handle --config=force overwriting the Environment passed into Configure()'s + Decider and not clearing it when the configure context is completed. + - Add default paths for yacc tool on windows to include cygwin, mingw, and chocolatey + - Fix issue #2799 - Fix mingw tool to respect SHCCCOMSTR, SHLINKCOMSTR and LDMODULECOMSTR + - Fix Issue #3329 - Add support for MS SDK V10.0A (which is commonly installed with VS2017) + - Fix Issue #3333 - Add support for finding vswhere under 32 bit windows installs. + + From Maciej Kumorek: + - Update the MSVC tool to include the nologo flag by default in RCFLAGS + +From Daniel Moody: + - Change the default for AppendENVPath to delete_existing=0, so path + order will not be changed, unless explicitly set (Issue #3276) + - Fixed bug which threw error when running SCons on windows system with no MSVC installed. + - Update link tool to convert target to node before accessing node member + - Update mingw tool to remove MSVC like nologo CCFLAG + - Add default paths for lex tool on windows to include cygwin, mingw, and chocolatey + - Add lex construction variable LEXUNISTD for turning off unix headers on windows + - Update lex tool to use win_flex on windows if available + + From Mats Wichmann: + - Quiet open file ResourceWarnings on Python >= 3.6 caused by + not using a context manager around Popen.stdout + - Add the textfile tool to the default tool list + - Fix syntax on is/is not clauses: should not use with a literal + - Properly retrieve exit code when catching SystemExit + - scons-time now uses context managers around file opens + - Fix regex patterns that were not specified as raw strings + + From Bernhard M. Wiedemann: + - Do not store build host+user name if reproducible builds are wanted diff --git a/Changelogs/Changes-3.1.0.txt b/Changelogs/Changes-3.1.0.txt new file mode 100644 index 0000000000..8dcd5064df --- /dev/null +++ b/Changelogs/Changes-3.1.0.txt @@ -0,0 +1,98 @@ +RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700 + + From Joseph Brill: + - Code to supply correct version-specifier argument to vswhere for + VS version selection. + + From William Deegan: + - Enhanced --debug=explain output. Now the separate components of the dependency list are split up + as follows: + + scons: rebuilding `file3' because: + the dependency order changed: + ->Sources + Old:xxx New:zzz + Old:yyy New:yyy + Old:zzz New:xxx + ->Depends + ->Implicit + Old:/usr/bin/python New:/usr/bin/python + - Fix Issue #3350 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError. + - Fix spurious rebuilds on second build for cases where builder has > 1 target and the source file + is generated. This was causing the > 1th target to not have it's implicit list cleared when the source + file was actually built, leaving an implicit list similar to follows for 2nd and higher target + ['/usr/bin/python', 'xxx', 'yyy', 'zzz'] + This was getting persisted to SConsign and on rebuild it would be corrected to be similar to this + ['zzz', 'yyy', 'xxx', '/usr/bin/python'] + Which would trigger a rebuild because the order changed. + The fix involved added logic to mark all shared targets as peers and then ensure they're implicit + list is all cleared together. + - Fix Issue #3349 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError. + Renamed to SConsEnvironmentError + - Fix Issue #3350 - mslink failing when too many objects. This is resolved by adding TEMPFILEARGJOIN variable + which specifies what character to join all the argements output into the tempfile. The default remains a space + when mslink, msvc, or mslib tools are loaded they change the TEMPFILEARGJOIN to be a line separator (\r\n on win32) + - Fix performance degradation for MD5-timestamp decider. NOTE: This changes the Decider() function arguments. + From: + def my_decider(dependency, target, prev_ni): + To: + def my_decider(dependency, target, prev_ni, repo_node): + Where repo_node is the repository (or other) node to use to check if the node is out of date instead of dependency. + + From Peter Diener: + - Additional fix to issue #3135 - Also handle 'pure' and 'elemental' type bound procedures + - Fix issue #3135 - Handle Fortran submodules and type bound procedures + + From Adam Gross: + - Upgraded and improved Visual Studio solution/project generation code using the MSVSProject builder. + - Added support for Visual Studio 2017 and 2019. + - Added support for the following per-variant parameters to the builder: + - cpppaths: Provides per-variant include paths. + - cppdefines: Provides per-variant preprocessor definitions. + + From Michael Hartmann: + - Fix handling of Visual Studio Compilers to properly reject any unknown HOST_PLATFORM or TARGET_PLATFORM + + From Bert Huijben: + - Added support for Visual Studio 2019 toolset. + + From Mathew Robinson: + - Update cache debug output to include cache hit rate. + - No longer unintentionally hide exceptions in Action.py + - Allow builders and pseudo-builders to inherit from OverrideEnvironments + + From Leonard de Ruijter: + - Add logic to derive correct version argument to vswhere + + From Lukas Schrangl: + - Enable LaTeX scanner to find more than one include per line + + From Sergey Torokhov: + - Recognize jdk on Gentoo systems. + + From Mats Wichmann: + - scons-time takes more care closing files and uses safer mkdtemp to avoid + possible races on multi-job runs. + - Use importlib to dynamically load tool and platform modules instead of imp module + - sconsign: default to .sconsign.dblite if no filename is specified. + Be more informative in case of unsupported pickle protocol (py2 only). + - Fix issue #3336 - on Windows, paths were being added to PATH even if + tools were not found in those paths. + - More fixes for newer Java versions (since 9): handle new jdk directory + naming (jdk-X.Y instead of jdkX.Y) on Windows; handle two-digit major + version. Docstrings improved. + - Fixups for pylint: exception types, redefined functions, + globals, etc. Some old code removed to resolve issues (hashlib is + always present on modern Pythons; no longer need the code for + 2.5-and-earlier optparse). cmp is not a builtin function in Py3, + drop one (unused) use; replace one. Fix another instance of + renaming to SConsEnvironmentError. Trailing whitespace. + Consistently use not is/in (if not x is y -> if x is not y). + - Add a PY3-only function for setting up the cachedir that should be less + prone to races. Add a hack to the PY2 version (from Issue #3351) to + be less prone to a race in the check for old-style cache. + - Fix coding error in docbook tool only exercised when using python lxml + - Recognize two additional GNU compiler header directory options in + ParseFlags: -iquote and -idirafter. + - Fix more re patterns that contain \ but not specified as raw strings + (affects scanners for D, LaTeX, swig) diff --git a/Changelogs/Changes-3.1.1.txt b/Changelogs/Changes-3.1.1.txt new file mode 100644 index 0000000000..72f3d263c9 --- /dev/null +++ b/Changelogs/Changes-3.1.1.txt @@ -0,0 +1,18 @@ +RELEASE 3.1.1 - Mon, 07 Aug 2019 20:09:12 -0500 + + From William Deegan: + - Remove obsoleted references to DeciderNeedsNode which could cause crash when using --debug=explain + + From Jason Kenny + - Add Fix and test for crash in 3.1.0 when using Decider('MD5-timestamp') and --debug=explain + + From Ben Reed: + - Added -fmerge-all-constants to flags that get included in both CCFLAGS and LINKFLAGS. + + From Mathew Robinson: + - Fix issue #3415 - Update remaining usages of EnvironmentError to SConsEnvironmentError + this patch fixes issues introduced in 3.1.0 where any of the + following would cause SCons to error and exit: + - CacheDir not write-able + - JSON encoding errors for CacheDir config + - JSON decoding errors for CacheDir config diff --git a/Changelogs/Changes-3.1.2.txt b/Changelogs/Changes-3.1.2.txt new file mode 100644 index 0000000000..6e7fe85851 --- /dev/null +++ b/Changelogs/Changes-3.1.2.txt @@ -0,0 +1,65 @@ +RELEASE 3.1.2 - Mon, 17 Dec 2019 02:06:27 +0000 + + From Edoardo Bezzeccheri + - Added debug option "action_timestamps" which outputs to stdout the absolute start and end time for each target. + + From Rob Boehne + - Fix suncxx tool (Oracle Studio compiler) when using Python 3. Previously would throw an exception. + Resolved by properly handling tool version string output as unicode. + + From Tim Gates + - Resolved a typo in engine.SCons.Tool + + From Adam Gross: + - Resolved a race condition in multithreaded Windows builds with Python 2 + in the case where a child process is spawned while a Python action has a + file open. Original author: Ryan Beasley. + - Added memoization support for calls to Environment.Value() in order to + improve performance of repeated calls. + + + From Jason Kenny + - Update Command() function to accept target_scanner, source_factory, and target_factory arguments. + This makes Command act more like a one-off builder. + + From Ivan Kravets + - Added support for "-imacros" to ParseFlags + + From Jacek Kuczera: + - Fix CheckFunc detection code for Visual 2019. Some functions + (e.g. memmove) were incorrectly recognized as not available. + + From Jakub Kulik + - Fix stacktrace when using SCons with Python 3.5+ and SunOS/Solaris related tools. + + From Philipp Maierhöfer: + - Avoid crash with UnicodeDecodeError on Python 3 when a Latex log file in + non-UTF-8 encoding (e.g. containing umlauts in Latin-1 encoding when + the fontenc package is included with \usepackage[T1]{fontenc}) is read. + + From Mathew Robinson: + - Improved threading performance by ensuring NodeInfo is shared + across threads. Results in ~13% improvement for parallel builds + (-j# > 1) with many shared nodes. + - Improve performance of Entry.disambiguate() by making check for + most common case first, preventing unnecessary IO. + - Improved DAG walk performance by reducing unnecessary work when + there are no un-visited children. + + From Mats Wichmann + - Replace instances of string find method with "in" checks where + the index from find() was not used. + - CmdStringHolder fix from issue #3428 + - Turn previously deprecated debug options into failures: + --debug=tree, --debug=dtree, --debug=stree, --debug=nomemoizer. + - Experimental New Feature: Enable caching MSVC configuration + If SCONS_CACHE_MSVC_CONFIG shell environment variable is set, + SCons will cache the results of past calls to vcvarsall.bat to + a file; integrates with existing memoizing of such vars. + On vs2019 saves 5+ seconds per SCons invocation, which really + helps test suite runs. + - Remove deprecated SourceSignatures, TargetSignatures + - Remove deprecated Builder keywords: overrides and scanner + - Remove deprecated env.Copy + - Remove deprecated BuildDir plus SConscript keyword build_dir + - A number of documentation improvements. diff --git a/Changelogs/Changes-4.0.0.txt b/Changelogs/Changes-4.0.0.txt new file mode 100644 index 0000000000..41ea9cc5ee --- /dev/null +++ b/Changelogs/Changes-4.0.0.txt @@ -0,0 +1,203 @@ +RELEASE 4.0.0 - Sat, 04 Jul 2020 12:00:27 +0000 + + From Dirk Baechle: + - Updated documentation toolchain to work properly under Python3, also + removed libxslt support from the Docbook Tool. (issue #3580) + - Added Docker images for building and testing SCons. (issue #3585) + + + From James Benton: + - Improve Visual Studio solution/project generation code to add support + for a per-variant cppflags. Intellisense can be affected by cppflags, + this is especially important when it comes to /std:c++* which specifies + what C++ standard version to target. SCons will append /Zc:__cplusplus + to the project's cppflags when a /std:c++* flag is found as this is + required for intellisense to use the C++ standard version from cppflags. + + From Rob Boehne + - Specify UTF-8 encoding when opening Java source file as text. By default, encoding is the output + of locale.getpreferredencoding(False), and varies by platform. + + From Joseph Brill: + - MSVC updates: When there are multiple product installations (e.g, Community and + Build Tools) of MSVC 2017 or MSVC 2019, an Enterprise, Professional, + or Community installation will be selected before a Build Tools installation when + "14.1" or "14.2" is requested, respectively. (GH Issue #3699). + - MSVC updates: When there are multiple product installations of MSVC 2017 (e.g., + Community and Express), 2017 Express is no longer returned when "14.1" is + requested. Only 2017 Express will be returned when "14.1Exp" is requested. + (GH Issue #3699). + - MSVC updates: An MSVC 6.0 installation now appears in the installed versions list + when msvc debug output is enabled (GH Issue #3699). + - MSVS test updates: Tests for building a program using generated MSVS project and + solution files using MSVS 2015 and later now work as expected on x86 hosts. + - Test update: Reduce the number of "false negative" test failures for the interactive + configuration test (test/interactive/configure.py). + - MSVS update: Fix the development environment path for MSVS 7.0. + + From William Deegan: + - Fix broken clang + MSVC 2019 combination by using MSVC configuration logic to + propagate'VCINSTALLDIR' and 'VCToolsInstallDir' which clang tools use to locate + header files and libraries from MSVC install. (Fixes GH Issue #3480) + - Added C:\msys64\mingw64\bin to default mingw and clang windows PATH's. This + is a reasonable default and also aligns with changes in Appveyor's VS2019 image. + - Drop support for Python 2.7. SCons will be Python 3.5+ going forward. + - Change SCons.Node.ValueWithMemo to consider any name passed when memoizing Value() nodes + - Fix Github Issue #3550 - When using Substfile() with a value like Z:\mongo\build\install\bin + the implementation using re.sub() would end up interpreting the string and finding regex escape + characters where it should have been simply replacing existing text. Switched to use string.replace(). + - Fix Github Issue #2904 - Provide useful error message when more than one Configure Contexts are opened. + Only one open is allowed. You must call conf.Finish() to complete the currently open one before creating another + - Add msys2 installed mingw default path to PATH for mingw tool. + - C:\msys64\mingw64\bin + - Purge obsolete internal build and tooling scripts + - Allow user specified location for vswhere.exe specified by VSWHERE. + NOTE: This must be set at the time the 'msvc' 'msvs' and/or 'mslink' tool(s) are initialized to have any effect. + - Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py and packaging. Move script logic to entry points so + package can create scripts which use the correct version of Python. + - Resolve Issue #3248 - Removing '-Wl,-Bsymbolic' from SHLIBVERSIONFLAGS + NOTE: If your build depends on the above you must now add to your SHLIBVERSIONFLAGS + - Speedup bin/docs-update-generated by caching parsed docbook schema. (60x speedup) + - Reorganized source tree. Moved src/engine/SCons to SCons to be more in line with current Python source + tree organization practices. + - Renamed as.py to asm.py and left redirecting tool. 'as' is a reserved word and so + changing the name was required as we wanted to import symbols for use in compilation_db + tool. + - Add CompilationDatabase() builder in compilation_db tool. Contributed by MongoDB. + Setting COMPILATIONDB_USE_ABSPATH to True|False controls whether the files are absolute or relative + paths. Address Issue #3693 and #3694 found during development. + - Fixed Github Issue 3628 - Hardcoding pickle protocol to 4 (supports python 3.4+) + and skipping Python 3.8's new pickle protocol 5 whose main advantage is for out-of-band data buffers. + NOTE: If you used Python 3.8 with SCons 3.0.0 or above, you may get a a pickle protocol error. Remove your + .sconsign.dblite. You will end up with a full rebuild. + + From Andrii Doroshenko: + - Extended `Environment.Dump()` to select a format to serialize construction variables (pretty, json). + + From Jeremy Elson: + - Updated design doc to use the correct syntax for Depends() + + From Adam Gross: + - Added support for scanning multiple entries in an action string if + IMPLICIT_COMMAND_DEPENDENCIES is set to 2 or 'all'. This enables more thorough + action scanning where every item in each command line is scanned to determine + if it is a non-source and non-target path and added to the list of implicit dependencies + for the target. + - Added support for taking instances of the Value class as implicit + dependencies. + - Added new module SCons.Scanner.Python to allow scanning .py files. + - Added support for explicitly passing a name when creating Value() nodes. This may be useful + when the value can't be converted to a string or if having a name is otherwise desirable. + - Fixed usage of abspath and path for RootDir objects on Windows. Previously + env.fs.Dir("T:").abspath would return "T:\T:" and now it correctly returns "T:". + + From Ivan Kravets, PlatformIO + - New conditional C Scanner (`SCons.Scanner.C.CConditionalScanner()`) + which interprets C/C Preprocessor conditional syntax (#ifdef, #if, #else, + #elif, #define, etc.) + - Improvements for virtual C Pre-Processor: + * Handle UNSIGNED LONG and LONG numeric constants in DEC (keep support for HEX) + * Skip unrecognized directives, such as `#if( defined ...)` + * Ignore `#include DYNAMIC_INCLUDE` directive that depends on a dynamic + macro which is not located in a state TABLE. + * Cleanup CPP expressions before evaluating (strip comments, carriage returns) + + From Iosif Kurazs: + - Added a new flag called "linedraw" for the command line argument "--tree" + that instructs scons to use single line drawing characters to draw the dependency tree. + + From Daniel Moody: + - Add no_progress (-Q) option as a set-able option. However, setting it in the + SConstruct/SConscript will still cause "scons: Reading SConscript files ..." to be + printed, since the option is not set when the build scripts first get read. + - Added check for SONAME in environment to setup symlinks correctly (Github Issue #3246) + - User callable's called during substition expansion could possibly throw a TypeError + exception, however SCons was using TypeError to detect if the callable had a different + signature than expected, and would silently fail to report user's exceptions. Fixed to + use signature module to detect function signature instead of TypeError. (Github Issue #3654) + - Added storage of SConstructs and SConscripts nodes into global set for checking + if a given node is a SConstruct/SConscript. + Added new node function SCons.Node.is_sconscript(self) (Github Issue #3625) + + From Andrew Morrow: + - Fix Issue #3469 - Fixed improper reuse of temporary and compiled files by Configure when changing + the order and/or number of tests. This is done by using the hash of the generated temporary files + content and (For the target files) the hash of the action. + So where previously files would be named: + - config_1.c, config_1.o, config_1 + The will now be named (For example) + - conftest_68b375d16e812c43e6d72d6e93401e7c_0.c, + conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187.o + or + conftest_68b375d16e812c43e6d72d6e93401e7c_0.o + conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187 (for executable) + + From Mathew Robinson: + - Improve performance of Subst by preventing unnecessary frame + allocations by no longer defining the *Subber classes inside of their + respective function calls. + - Improve performance of Subst in some cases by preventing + unnecessary calls to eval when a token is surrounded in braces + but is not a function call. + - Improve performance of subst by removing unnecessary recursion. + - Cleanup dangling symlinks before running builders (Issue #3516) + + From Mats Wichmann: + - Remove deprecated SourceCode + - str.format syntax errors fixed + - a bunch of linter/checker syntax fixups + - Convert remaining uses of insecure/deprecated mktemp method. + - Clean up some duplications in manpage. Clarify portion of manpage on Dir and File nodes. + - Reduce needless list conversions. + - Fixed regex in Python scanner. + - Accommodate VS 2017 Express - it's got a more liberal license then VS + Community, so some people prefer it (from 2019, no more Express) + - vswhere call should also now work even if programs aren't on the C: drive. + - Add an alternate warning message if cl.exe is not found and msvc config + cache is in use (SCONS_CACHE_MSVC_CONFIG was given) - config cache + may be out of date. + - Fixed bug where changing TEXTFILESUFFIX would cause Substfile() to rebuild. (Github Issue #3540) + - Script/Main.py now uses importlib instead of imp module. + - Drop some Python 2-isms. + - MSVC updates: pass on VSCMD_DEBUG and VSCMD_SKIP_SENDTELEMETRY to msvc + tool setup if set in environment. Add Powershell to default env + (used to call telemetry script). + - Microsoft Visual Studio - switch to using uuid module to generate GUIDs rather than hand rolled + method using md5 directly. + NOTE: This change affects the following builders' output. If your build depends on the output of these builders + you will likely see a rebuild. + * Package() (with PACKAGETYPE='msi') + * MSVSSolution() + * MSVSProject() + - Docbook builder provides a fallback if lxml fails to generate + a document with tostring(). + - Fix description of ARCOMSTR constr. var. (issue 3636). Previously the text was a copy of ASCOMSTR which + has different function. + - Update xml files in SCons to reflect changed relative paths after + code restructuring (src/engine/SCons -> SCons) + - Preliminary Python 3.9 support - elimination of some warnings. + - Drop the with_metaclass jig which was designed to let class + definitions using a metaclass be written the same for Py2/Py3. + - Bump python_version_unsupported (and deprecated) to indicate 3.5 + is lowest supported Python. + - ParseFlags should not modify the user's passed in dict in case it's + a compound data structure (e.g. values are lists) (issue #3665) + - In Py3 classes no longer need to be listed as deriving from object. + - Remove deprecated check for Task subclasses needing a needs_execute + method - this is now enforced via an abstract base class, so the + check and test is no longer needed. + - Close various logfiles (trace, cache, taskmastertrace, configure) + when done using atexit calls. + - Rebase forked copy of shutil.copytree to Python 3.7 stlib version. + - Significant rework of documentation: API docs are now generated + using Sphinx; manpage and user guide now use more "standard" + markup elements (which could facilitate later conversion to a + different doc format, should that choice be made); significant + rewordings in manpage. Manpage Examples moved to an external + repository / website (scons-cookbook.readthedocs.io). + - Clean up test harness and tests' use of subdir, file_fixture and + dir_fixture. + - SubstitutionEnvironment and OverrideEnvironment now have keys() + and values() methods to better emulate a dict (already had items()). + - Rename internal Warning base class to SConsWarning to avoid any + possible confusion with Python's own Warning class. diff --git a/Changelogs/Changes-4.0.1.txt b/Changelogs/Changes-4.0.1.txt new file mode 100644 index 0000000000..96383b4518 --- /dev/null +++ b/Changelogs/Changes-4.0.1.txt @@ -0,0 +1,19 @@ +RELEASE 4.0.1 - Mon, 16 Jul 2020 16:06:40 -0700 + + From Rob Boehne: + - Fix fortran tools to set SHFORTRAN variables to $FORTRAN, similarly SHF77, SHF90, SHF95, + SHF03 and SHF08 will default to the variables $F77, $F90, $F95, $F03 and $F08 respectively. + If you were depending on changing the value of FORTRAN (or $F[0-9][0-9]) having no effect + on the value of SHFORTRAN, this change will break that. The values of FORTRAN, F77, F90, + F95, F03, F08 and SHFORTRAN, SHF77 (etc.) now are not overridden in generate if alredy set + by the user. + - Fix subprocess execution of 'lslpp' on AIX to produce text standard i/o. + - Re-do the fix for suncxx tool (Oracle Studio compiler) now that only Python 3 is supported, + to avoid decoding errors. + + From William Deegan: + - Added Environment() variable TEMPFILEDIR which allows setting the directory which temp + files createdby TEMPFILEMUNGE are created in. + + From Daniel Moody: + - Added method on Node to test if its node used in SConf. (Github Issue #3626) diff --git a/Changelogs/Changes-4.1.0.txt b/Changelogs/Changes-4.1.0.txt new file mode 100644 index 0000000000..50429f6165 --- /dev/null +++ b/Changelogs/Changes-4.1.0.txt @@ -0,0 +1,129 @@ +RELEASE 4.1.0 - Tues, 19 Jan 2021 15:04:42 -0700 + + From James Benton: + - Add COMPILATIONDB_PATH_FILTER env option for CompilationDatabase() builder which allows + filtering of entries based on the output file paths using glob style file matching (issue #3742). + + From Joseph Brill: + - Internal MSVC and test updates: Rework the msvc installed versions cache so that it + is not exposed externally and update external references accordingly. + - Modify the MSCommon internal-use only debug logging records to contain the correct relative + file path when the debug function is called from outside the MSCommon module. + + From William Deegan: + - Fix yacc tool, not respecting YACC set at time of tool initialization. + - Refactor SCons.Tool to move all common shared and loadable module linking logic to SCons.Tool.linkCommon + - Remove pywin32 imports from SCons.Script.Main. No longer needed. + - Switch to use ctypes instead of pywin32 (requiring an extra pip install) - Fixes Github Issue #2291 + - pywin32 no longer necessary for SCons install. (pip install SCons will no longer also require pywin32 on win32) + - Remove pywin32 usage from SCons.Util where it was used for accessing the registry. Python native winreg + library already includes this functionality. + - Remove using pywin32 to retrieve peak memory usage on Win32 for `--debug=memory` + - Fix Issue #3759 - include scons.1, sconsign.1, scons-time.1 manpages in sdist and wheel packages. + - Change SCons's build so the generated `SCons/__init__.py` is no longer removed by `scons -c` + - Completely rewrote versioned shared libraries logic. Added support for SOVERSION via dmoody's initial PR #3733 + - No longer automatically disable setting SONAME on shared libraries on OpenBSD. + - Fix race condition bug when initializing a scons cache directory at the + same time from multiple threads or processes. Problem described in PR #3114. + This is a simpler fix which should avoid some problems identified with the initial PR. + (Credit to Fredrik Medley for reporting the issue, the initial PR, and discussing and testing + this solution) + - Minor edits to User Guide and manpage's header with copyright, released date changed. + + From Michał Górny: + - Fix dvipdf test failure due to passing incorrect flag to dvipdf. + + From Adam Gross: + - Fix minor bug affecting SCons.Node.FS.File.get_csig()'s usage of the MD5 chunksize. + User-facing behavior does not change with this fix (GH Issue #3726). + - Fix occasional test failures caused by not being able to find a file or directory fixture + when running multiple tests with multiple jobs. + - Added support for a new command-line parameter `--hash-format` to override the default + hash format that SCons uses. It can also be set via `SetOption('hash_format')`. Supported + values are: `md5`, `sha1`, and `sha256`. For all hash formats other than + the default of `md5`, the SConsign database will include the name of the hash format. + For example, `--hash-format=sha256` will create a SConsign with name + `.sconsign_sha256.dblite.`. + - Fix incorrect cache hits and/or misses when running in interactive mode by having + SCons.Node.Node.clear() clear out all caching-related state. + - Change Environment.SideEffect() to not add duplicate side effects. + NOTE: The list of returned side effect Nodes will not include any duplicate side effect Nodes. + - Add support to the Python scanner for finding dynamically generated dependencies. + Previously the scanner only found imports if they existed on disk at scanning time. + + From David H: + - Add ZIP_OVERRIDE_TIMESTAMP env option to Zip builder which allows for overriding of the file + modification times in the archive. + - Fix Zip builder not rebuilding when ZIPROOT env option was changed. + + From Jason Kenny + - Fix python3 crash when Value node get_text_content when child content does not have decode() + NOTE: If you depend on Value node's get_text_content returning concatenated contents of it's + children. This may break your code. It now concatenates the csig() of all children. + + From Joachim Kuebart: + - Suppress missing SConscript deprecation warning if `must_exist=False` + is used. + + From Rocco Matano: + - Fix Zip tool to respect ZIPCOMSTR. Previously all zip builder calls would yield something + like zip(["test.zip"], ["zip_scons.py"]) and ignore ZIPCOMSTR if ZIPCOM and ZIPCOMSTR + weren't set after the Environment/Tool is initialized. (Explained in PR #3659) + + From Daniel Moody: + - Fix issue where java parsed a class incorrectly from lambdas used after a new. + + From Simon Tegelid + - Fix using TEMPFILE in multiple actions in an action list. Previously a builder, or command + with an action list like this: + ['${TEMPFILE("xxx.py -otempfile $SOURCE")}', '${TEMPFILE("yyy.py -o$TARGET tempfile")}'] + Could yield a single tempfile with the first TEMPFILE's contents, used by both steps + in the action list. + + From Mats Wichmann: + - Complete tests for Dictionary, env.keys() and env.values() for + OverrideEnvironment. Enable env.setdefault() method, add tests. + - Raise an error if an option (not otherwise consumed) is used which + looks like an abbreviation of one one added by AddOption. (#3653) + - Tool module not found will now raise a UserError to more clearly indicate this is + probably an SConscript problem, and to make the traceback more relevant. + - Fix three issues with MergeFlags: + - Signature/return did not match documentation or existing usage - the implementation + now no longer returns the passed env + - merging --param arguments did not work (issue #3107); + - passing a dict to merge where the values are strings failed (issue #2961). + - Include previously-excluded SideEffect section in User Guide. + - Clean up unneeded imports (autoflake tool). + - Make sure cProfile is used if profiling - SCons was expecting + the Util module to monkeypatch in cProfile as profile if available, + but this is no longer being done. + - Cleanup in SCons.Util.AddMethod. If called with an environment instance + as the object to modify, the method would not be correctly set up in + any Clone of that instance. Now tries to detect this and calls + MethodWrapper to set up the method the same way env.AddMethod does. + MethodWrapper moved to Util to avoid a circular import. Fixes #3028. + - Some Python 2 compatibility code dropped + - Rework runtest.py to use argparse for arg handling (was a mix + of hand-coded and optparse, with a stated intent to "gradually port"). + - Add options to runtest to generate/not generate a log of failed tests, + and to rerun such tests. Useful when an error cascades through several + tests, can quickly try if a change improves all the fails. Dropped + runtest test for fallback from qmtest, not needed; added new tests. + - Eliminate tex tool usage of "for foo in range(len(iterable))" + - Restore internal Trace function to functional state. + - Only try to initialize the wix tool by default (or when tool `default` is explicitly installed) + on Windows based systems. + - Pick a better "Topic" Trove classifier for SCons: SW Dev / Build Tools + - Use os.replace instead of os.rename in dblite so don't need to + special-case Windows here. dblite is the default storage engine for the SConsign file(s). + - Fix cut-n-paste error in msvc debug printout and make some debug output + in msvs and msvsTests.py be off until needed (uncomment to use) + - Fix Issue #3014 - Empty file and missing file have same csig + - Refactor env.Append/Prepend to remove Py 1.5 era need to nest + try blocks, can now "continue" at the appropriate places. + - Add /snap/bin to env['PATH'] on POSIX, although this is only + really useful for a subset of POSIX systems that use snaps. + Was needed for CI builds, which run on Ubuntu LTS images. + - Eliminate Py2-ism __nonzero__ (now __bool__). Work around issue #3860 + where a check for BuilderBase raising exc. on __bool__ was optimized out. + This issue was found due to a bug in Python 3.10.0a4. See issue #3860 for details. diff --git a/Changelogs/Changes-4.2.0.txt b/Changelogs/Changes-4.2.0.txt new file mode 100644 index 0000000000..e895bd7644 --- /dev/null +++ b/Changelogs/Changes-4.2.0.txt @@ -0,0 +1,130 @@ +RELEASE 4.2.0 - Sat, 31 Jul 2021 18:12:46 -0700 + + From Byron Platt: + - Fix Install() issue when copytree recursion gives bad arguments that can + lead to install side-effects including keeping dangling symlinks and + silently failing to copy directories (and their subdirectories) when the + directory already exists in the target. + + From Joseph Brill: + - Internal MSVS update: Remove unnecessary calls to find all installed versions of msvc + when constructing the installed visual studios list. + + From William Deegan: + - Improve Subst()'s logic to check for proper callable function or class's argument list. + It will now allow callables with expected args, and any extra args as long as they + have default arguments. Additionally functions with no defaults for extra arguments + as long as they are set using functools.partial to create a new callable which set them. + - Fix Issue #3035 - mingw with SHLIBVERSION set fails with either not a dll error or + "Multiple ways to build the same target were specified for:". Now mingw will disable + creating the symlinks (and adding version string to ) dlls. It sets SHLIBNOVERSIONSYMLINKS, + IMPLIBNOVERSIONSYMLINKS and LDMODULENOVERSIONSYMLINKS to True. + - Added --experimental flag, to enable various experimental features/tools. You can specify + 'all', 'none', or any combination of available experimental features. + - Fix Issue #3933 - Remove unguarded print of debug information in SharedLibrary logic when + SHLIBVERSION is specified. + - Fix versioned shared library naming for MacOS platform. (Previously was libxyz.dylib.1.2.3, + has been fixed to libxyz.1.2.3.dylib. Additionally the sonamed symlink had the same issue, + that is now resolved as well) + - Add experimental ninja builder. (Contributed by MongoDB, Daniel Moody and many others). + - Fix #3955 - _LIBDIRFLAGS leaving $( and $) in *COMSTR output. Added affect_signature flag to + _concat function. If set to False, it will prepend and append $( and $). That way the various + Environment variables can use that rather than "$( _concat(...) $)". + - Fix issue with exparimental ninja tool which would fail on windows or when ninja package wasn't + installed but --experimental=ninja was specified. + - As part of experimental ninja tool, allow SetOption() to set both disable_execute_ninja and + disable_ninja. + + From David H: + - Fix Issue #3906 - `IMPLICIT_COMMAND_DEPENDENCIES` was not properly disabled when + set to any string value (For example ['none','false','no','off']) + Also previously 'All' wouldn't have the desired affect. + + From Ivan Kravets: + - Provide a custom argument escape function for `TempFileMunge` using a new + `TEMPFILEARGESCFUNC` variable. Useful if you need to apply extra operations on + a command argument before writing to a temporary file (fix Windows slashes, + normalize paths, etc.) + + From Henrik Maier: + - DocbookXslt tool: The XSLT stylesheet file is now initialized to an env.File() Node, + such that dependencies work correctly in hierarchical builds (eg when using + DocbookXslt in SConscript('subdir/SConscript') context. + + From Daniel Moody: + - Update CacheDir to use uuid for tmpfile uniqueness instead of pid. + This fixes cases for shared cache where two systems write to the same + cache tmpfile at the same time because the happened to get the same pid. + - Added support for passing custom CacheDir derived classes to SCons. Moved + copy_from_cache attribute from the Environment class to CacheDir class. + Code contributed by MongoDB. + - Update BuildTask to pass all targets to the progress object fixing an issue + where multi-target build nodes only got the first target passed to the progress + object. + - Fix a potential race condition in shared cache environments where the permissions are + not writeable for a moment after the file has been renamed and other builds (users) will copy + it out of the cache. Small reorganization of logic to copy files from cachedir. Moved CacheDir + writeable permission code for copy to cache behind the atomic rename operation. + - Added marking of intermediate and and multi target nodes generated from SConf tests so that + is_conftest() is more accurate. + - Added test for configure check failing to ensure it didn't break generating and running ninja. + + + From Mats Wichmann: + - Initial support in tests for Python 3.10 - expected bytecode and + one changed expected exception message. Change some more regexes + to be specified as rawstrings in response to DeprecationWarnings. + - Add an example of adding an emitter to User Guide (concept + from Jeremy Elson) + - Add timing information for sconsign database dump when --debug=time + is selected. Also switch to generally using time.perf_counter, + which is the Python recommended way for timing short durations. + - Drop remaining definitions of dict-like has_key methods, since + Python 3 doesn't have a dictionary has_key (maintenance) + - Do not treat --site-dir=DIR and --no-site-dir as distinct options. + Allows a later instance to override an earlier one. + - Ignore empty cmdline arguments when computing targets (issue 2986) + - Remove long-deprecated construction variables PDFCOM, WIN32_INSERT_DEF, + WIN32DEFPREFIX, WIN32DEFSUFFIX, WIN32EXPPREFIX, WIN32EXPSUFFIX. + All have been replaced by other names since at least 1.0. + - Add a __iadd__ method to the CLVar class so that inplace adds + (+=) also work as expected (issue 2399) + - Remove local copy of CLVar in EnvironmentTests unittest file - + should be testing against the production version, and they + didn't really differ. + - Don't strip spaces in INSTALLSTR by using raw subst (issue 2018) + - Deprecate Python 3.5 as a supported version. + - CPPDEFINES now expands construction variable references (issue 2363) + - Restore behavior that Install()'d files are writable (issue 3927) + - Simplified Mkdir(), the internal mkdir_func no longer needs to handle + existing directories, it can now pass exist_ok=True to os.makedirs(). + - Avoid WhereIs exception if user set a tool name to empty (from issue 1742) + - Maintenance: remove obsolete __getslice__ definitions (Py3 never calls); + add Node.fs.scandir to call new (Py3.5) os.scandir; Node.fs.makedirs + now passes the exist_ok flag; Cachedir creation now uses this flag. + - Maintenance: remove unneeded imports and reorganize some. Fix uses + of warnings in some tools which instantiated the class but did nothing + with them, need to instead call SCons.Warnings.warn with the warn class. + - Drop overridden changed_since_last_build method in Value class. + - Resync the SetOption implementation and the manpage, making sure new + options are available and adding a notes column for misc information. + SetOption equivalents to --hash-chunksize, --implicit-deps-unchanged + and --implicit-deps-changed are enabled. + - Add tests for SetOption failing on disallowed options and value types. + - Maintenance: eliminate lots of checker complaints about Util.py. + - Maintenance: fix checker-spotted issues in Environment (apply_tools) + and EnvironmentTests (asserts comparing with self). + For consistency, env.Tool() now returns a tool object the same way + Tool() has done. + - Change SConscript() missing SConscript behavior - if must_exist=False, + the warning is suppressed. + - Make sure TEMPFILEPREFIX can be set to an empty string (issue 3964) + + From Dillan Mills: + - Add support for the (TARGET,SOURCE,TARGETS,SOURCES,CHANGED_TARGETS,CHANGED_SOURCES}.relpath property. + This will provide a path relative to the top of the build tree (where the SConstruct is located) + Fixes #396 + + From Andrew Morrow: + - Fix issue #3790: Generators in CPPDEFINES now have access to populated source + and target lists diff --git a/Changelogs/Changes-4.3.0.txt b/Changelogs/Changes-4.3.0.txt new file mode 100644 index 0000000000..d48b2f5c1a --- /dev/null +++ b/Changelogs/Changes-4.3.0.txt @@ -0,0 +1,101 @@ +RELEASE 4.3.0 - Tue, 16 Nov 2021 18:12:46 -0700 + + From Jacob Cassagnol: + - Default hash algorithm check updated for SCons FIPS compliance. Now checks for hash viability + first and then walks the tree to use the first viable hash as the default one. This typically + selects SHA1 on FIPS-enabled systems less than Python 3.9 as the new default instead of MD5, + unless SHA1 has also been disabled by security policy, at which point SCons selects SHA256 + as the default. For systems running Python 3.9 and later, the hashlib bug has been fixed, + and SCons will once again default to MD5 as the preferred algorithm. + + From Joseph Brill: + - Fix MSVS tests (vs-N.N-exec.py) for MSVS 6.0, 7.0, and 7.1 (import missing module). + - Add support for Visual Studio 2022. + + From William Deegan: + - Fix reproducible builds. Restore logic respecting SOURCE_DATE_EPOCH when set. + - Fix version tests to work with updated scons --version output. (Date format changed) + - Fix issue #4021. Change the way subst() is used in Textfile() to not evaluate '$$(' -> '$', + but instead it should yield '$('. + - Change SCons.Platform.win32.get_architecture() to return platform.platform() when run in an + environment where neither: PROCESSOR_ARCHITEW6432 nor PROCESSOR_ARCHITECTURE is set. + This should fix platform tests which started failing when HOST_OS/HOST_ARCH changes + introduced by Aaron Franke (listed below) were merged. + - Further PCH updates. It's now recommended that env['PCH'] should always be a File node. + Either via return value from env.PCH() or by explicitly using File('StdAfx.pch'). + - Added --no-ignore-skips to runtest.py. Changed default to ignore skips when setting + runtest.py's exit status. Previously would exit 2 if any tests were skipped. + Now will only exit 2 if user specifies --no-ignore-skips and some tests were skipped. + + From Ryan Egesdahl: + - Small fix to ensure CLVar default value is an empty list. + See MongoDB bug report: https://jira.mongodb.org/browse/SERVER-59656 + Code contributed by MongoDB. + - Ninja - Fixed an issue where if you control-c and/or killed ninja while it was running scons to + regenerate build.ninja you would end up with no build.ninja file and have to rerun scons from scratch. + Code contributed by MongoDB. + + From Aaron Franke: + - Define HOST_OS and HOST_ARCH in the environment for all platforms. + Before this change, these were only defined for Win32 and OS/2. + + From Daniel Moody: + - Fix ninja tool to never use for_sig substitution because ninja does not use signatures. This + issue affected CommandGeneratorAction function actions specifically. + - Expanded ninja Mkdir to also support Mkdir actions. + - Added support for the PCH environment variable to support subst generators. + - Fix command line escaping for ninja dollar sign escape. Without escaping ninja properly, + the ninja file scons regenerate and callback invocations will lose the $ characters used in + the scons command line which ninja uses itself for escaping. For Example: + scons BUILD=xyz OTHERVAR=$BUILD + Prior to this fix, it would cause ninja to fail to escape the dollar sign, leading to the + single dollar sign being used as a ninja escape character in the ninja file. + + From Daniel Moody: + - Added ninja API 'NINJA_FORCE_SCONS_BUILD' to force a node to callback to scons. + + From Mats Wichmann: + - Two small Python 3.10 fixes: one more docstring turned into raw + because it contained an escape; updated "helpful" syntax error message + from 3.10 was not expected by SubstTests.py and test/Subst/Syntax.py + - EmitterProxy rich comparison set is completed (checker warning). + Added __le__, __gt__, __ge__. + - Fix gcc/g++ tool failing if "gcc --version" returns text which fails + to_String conversion (i.e., not UTF-8) - failure happens when tool + initialization checks version. For gcc, the initial version string is + not translated, for the rest, don't convert, just consume raw and discard. + - Maintenance and doc: modernize some usage in Scanner package, + calling super(), switching some imitialization to comprehensions, + and code formatting. Docstring for scanner Base moved from + init-method to class-level so it's picked up by Sphinx. + Added new sconsign filenames to skip_entry_list in Scanner/Dir.py + - Change SCons.Scanner.Base to ScannerBase. Old name kept as an alias + but is now unused in SCons itself. + - Call Variables option converter consistently - the converter should + have access to the env if it needs to (issue #2064). + - Fixed the variables Add() method to accept a tuple for the variable + name the same way AddVariables() does (issue #3869). + - The premade validator PathIsDirCreate for for PathVariable now catches + the case where the directory could not be created due to permission + problems, allowing a more helpful error to be emitted (issue #2828) + - Maintenance: Python thread.setDaemon is deprecated in favor of + directly updating daemon attribute - update SCons to do this. + - Make sure when subst'ing a callable, the callable is called with + the correct for_signature value, previously it would be true even + if doing SUBST_RAW (issue #4037) + - Update Util/NodeList implementation to get rid of a workaround for + early Python 3 slicing issue that is no longer a problem. + - Rework some Java tests to skip rather than fail on CI systems, where + the working java is > v9, but a 1.8 or 9 was also found. + - Java updates: on Windows, detect more default JDK install locations. + On all platforms, more Java versions (up to 17.0 now). Add more information + on version selection to docs. + Update docs on JavaH tool in light of javah command dropped since 10.0. + Try to be better about preserving user's passed-in JAVA* construction vars. + - Start the deprecation of the qt tool, which refers to Qt3 (usupported + since around 2006). There's a deprecation warning added, initially + defaulting to disabled. + + From Brian Quistorff: + - Fix crash when scons is run from a python environement where a signal + is set from outside Python. diff --git a/Changelogs/Changes-4.4.0.txt b/Changelogs/Changes-4.4.0.txt new file mode 100644 index 0000000000..403c616638 --- /dev/null +++ b/Changelogs/Changes-4.4.0.txt @@ -0,0 +1,266 @@ +RELEASE 4.4.0 - Sat, 30 Jul 2022 14:08:29 -0700 + + From Joseph Brill: + - Verify that a user specified msvc script (via MSVC_USE_SCRIPT) exists and raise an exception + when the user specified msvc script does not exist. + - Fix issue where if you only had mingw installed on a Windows system and no MSVC compiler, and + did not explicitly request the mingw tool, mingw tool initialization would fail and set the + default compiler to MSVC which wasn't installed, yielding broken build. + Updated mingw tool so that the generate and exists methods use the same mingw search paths + (issue #4134). + - Update the debug output written to stdout for MSVC initialization which is enabled by setting + SCONS_MSCOMMON_DEBUG=- to use the logging module. Also changed the debug output format + written to stdout to include more information about the source for each message of MSVC + initialization debugging output. A single space was added before the message for all + debugging output records written to stdout and to files. + - Refactor the data definitions for msvc configurations to allow derived data structures to be + constructed during initialization that removes the need for special case handling during + runtime execution. Special case handling of host/target combinations is eliminated and + replaced with pre-computed search lists that implicitly handle the differences between full + versions and express versions of msvc. This fixes an issue where Express versions of the MSVC + compiler were not detected due to differences in initial msvc detection and msvc batch file + determination when configuring the build environment. This could lead to build failures when + only an MSVC Express instance is installed and the MSVC version is not explicitly specified + (issue #2668 and issue #2697). + - Added MSVC_USE_SETTINGS construction variable to pass a dictionary to configure the msvc compiler + system environment as an alternative to bypassing Visual Studio autodetection entirely. + - Added MSVC_SDK_VERSION construction variable which allows building with a specific Microsoft + SDK version. This variable is used with the msvc batch file determined via autodetection subject + to validation constraints. Refer to the documentation for additional requirements and validation + details. + - Added MSVC_TOOLSET_VERSION construction variable which allows building with a specific toolset + version. This variable is used with the msvc batch file determined via autodetection subject to + validation constraints. This variable does not affect the autodetection and selection of msvc + instances. The toolset version is applied after an msvc instance is selected. This could be the + default version of msvc. Refer to the documentation for additional requirements and validation + details. Addresses issue #3265, issue #3664, and pull request #4149. + - Added MSVC_SPECTRE_LIBS construction variable which allows building with spectre-mitigated + Visual C++ libraries. This variable is used with the msvc batch file determined via autodetection + subject to validation constraints. Refer to the documentation for additional requirements and + validation details. + - Added MSVC_SCRIPT_ARGS construction variable which specifies command line arguments that are + passed to the msvc batch file determined via autodetection subject to validation constraints. + Refer to the documentation for additional requirements and validation details. Addresses + enhancement issue #4106. + - An exception is raised when MSVC_UWP_APP is enabled for Visual Studio 2013 and earlier. + Previous behavior was to silently ignore MSVC_UWP_APP when enabled for Visual Studio 2013 + and earlier. Refer to the documentation for additional requirements and validation details. + MSVC_UWP_APP was extended to accept True, False, and None in addition to '1' and '0'. + - The imported system environment variable names for MSVC 7.0 and 6.0 have been changed to the + names set by their respective installers. Prior to this change, bypassing MSVC detection by + specifying the MSVC 7.0 batch file directly would fail due to using an erroneous environment + variable name. Arguments are no longer passed to the MSVC 6.0 to 7.1 batch files as no + arguments are required and could improve the effectiveness of the internal MSVC cache. + - Propagate the OS and windir environment variables from the system environment to the msvc + environment. The OS and windir environment variables are used in the MSVC 6.0 batch file + and the SDK 6.0-7.1 SetEnv.cmd batch files. Inclusion of the OS and windir environment + variables eliminates some partial paths and warnings generated by the MSVC 6.0 and SDK + 6.0-7.1 batch files when the variables are not defined. + Note: Attempting to run the SDK 6.0-7.1 batch files directly via MSVC_USE_SCRIPT can lead to + build failures and/or incomplete build environments. The SDK 6.0-7.1 batch files + require delayed expansion to be enabled which is currently not supported and is + typically not enabled by default on the host system. The batch files may also require + environment variables that are not included by default in the msvc environment. + - Suppress issuing a warning when there are no installed Visual Studio instances for the default + tools configuration (issue #2813). When msvc is the default compiler because there are no + compilers installed, a build may fail due to the cl.exe command not being recognized. At + present, there is no easy way to detect during msvc initialization if the default environment + will be used later to build a program and/or library. There is no error/warning issued for the + default tools as there are legitimate SCons uses that do not require a c compiler. + - Added a global policy setting and an environment construction variable for specifying the + action to be taken when an msvc request cannot be satisfied. The available options are "error", + "exception", "warning", "warn", "ignore", and "suppress". The global policy variable may be + set and retrieved via the functions msvc_set_notfound_policy and msvc_get_notfound_policy, + respectively. These two methods may be imported from SCons.Tool.MSCommon. The environment + construction variable is MSVC_NOTFOUND_POLICY. When defined, the environment construction + variable overrides the global policy setting for a given environment. When the active policy + is "error" or "exception", an MSVCVersionNotFound exception is raised. When the active policy + is "warning" or "warn", a VisualCMissingWarning warning is issued and the constructed + environment is likely incomplete. When the active policy is "ignore" or "suppress", no action + is taken and the constructed environment is likely incomplete. As implemented, the default + global policy is "warning". The ability to set the global policy via an SCons command-line + option may be added in a future enhancement. + - Added a global policy setting and an environment construction variable for specifying the + action to be taken when msvc script errors are detected. The available options are "error", + "exception", "warning", "warn", "ignore", and "suppress". The global policy variable may be + set and retrieved via the functions msvc_set_scripterror_policy and msvc_get_scripterror_policy, + respectively. These two methods may be imported from SCons.Tool.MSCommon. The environment + construction variable is MSVC_SCRIPTERROR_POLICY. When defined, the environment construction + variable overrides the global policy setting for a given environment. When the active policy + is "error" or "exception", an MSVCScriptExecutionError exception is raised when msvc batch file + errors are detected. When the active policy is "warning" or "warn", an MSVCScriptExecutionWarning + warning is issued when msvc batch file errors are detected. When the active policy is "ignore" or + "suppress", msvc batch error messages are suppressed. As implemented, the default global policy + is "ignore". The ability to set the global policy via an SCons command-line option may be added + in a future enhancement. + - Added experimental function msvc_query_version_toolset to SCons.Tool.MSCommon. Given a version + specification, this function will return an msvc version and an msvc toolset version. The msvc + toolset version may be None. The msvc version and msvc toolset version can be used in the + environment construction variables MSVC_VERSION and MSVC_TOOLSET_VERSION, respectively. The + version specification may be an msvc version or an msvc toolset version. This is a proxy for + using an msvc toolset version to select an msvc instance. This function may be removed when an + msvc toolset version is used during msvc instance selection. + - Modify the MSCommon logger configuration to be independent of the root logger. This fixes an issue + when multiple loggers are created and the MSCommon logger added computed fields to the root logger + that are not present in other logging instances. + - Modify the MSVC_USE_SCRIPT_ARGS test fixture to disable the msvc cache. This fixes an issue where + the MSVC_USE_SCRIPT_ARGS test for success relied on a debug log message that was not produced when + the msvc cache file exists and the test keys are already in the cache as the msvc script invocation + was bypassed. + + From William Deegan: + - Fix check for unsupported Python version. It was broken. Also now the error message + will include what is the minimum supported version of Python + - Fix ActionTests to work with python 3.10.1 (and higher) + NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher), you may + see unexpected rebuilds. This is due to Python internals changing which changed + the signature of a Python Action Function. + - Fix a number of Python ResourceWarnings which are issued when running SCons and/or it's tests + with python 3.9 (or higher) + - Action._subproc() can now be used as a python context manager to ensure that the + POpen object is properly closed. + (Thanks to Mats Wichmann for catching that DummyPopen needed additional logic) + - Added project_url for mailing lists and Discord + - Updated project url in steup.cfg to be https instead of http + - Updated setup.cfg to remove Python 3.5 and add Python 3.10 + - Added default values for source and target arguments to _defines() function. This + is used to expand CPPDEFINES (and others). Previous change added those arguments + with no defaults, so old usage where _defines() was called without source and target + arguments would yield an exception. This issue was found via qt4 and qt5 tools in + scons-contrib https://github.com/SCons/scons-contrib/issues/45 + + From David H: + - Add JavaScanner to include JAVACLASSPATH as a dependency when using the Java tool. + - Fix incorrect Java classpath generation when a NodeList is used as part of any JAVA*PATH variables. + + From Daniel Moody: + - Add cache-debug messages for push failures. + - Ninja: Changed generated build.ninja file to run SCons only build Actions via + a SCons Deamon. Added logic for starting and connecting to SCons daemon (currently + only used for ninja) + - Ninja: Fix issue where Configure files weren't being properly processed when build run + via ninja. + - Ninja: Added ninja mingw support and improved ninja CommandGeneratorAction support. + - Ninja: Update ninja file generation to only create response files for build commands + which exceed MAXLINELENGTH + - Ninja: Added NINJA_GENERATED_SOURCE_ALIAS_NAME which allows user to specify an + Alias() which the ninja tool can use to determine which files are generated sources. + If this is not set by the user then the ninja tool will still dynamically determine + which files are generated sources based on NINJA_GENERATED_SOURCE_SUFFIXES, and create + a phony target _ninja_generated_sources. Generated sources will be built first by + ninja. This is needed because ninja cannot determine which generated sources are + required by other build targets. Code contributed by MongoDB + The downstream commit is here: + https://github.com/mongodb/mongo/commit/2fef432fa6e7cf3fd4f22ba3b193222c2887f14f + - Ninja: Added special case for ninja scons daemon to work in win32 python3.6 environments. + This particular environment does a bad job managing popen standard file handles, so + some special workarounds are needed. + - Ninja:Added user configurable setting of ninja depfile format via NINJA_DEPFILE_PARSE_FORMAT. + Now setting NINJA_DEPFILE_PARSE_FORMAT to [msvc,gcc,clang] can force the ninja expected + format. Compiler tools will also configure the variable automatically. + - Ninja: Made ninja tool force the ninja file as the only target. + - Ninja: Improved the default targets setup and made sure there is always a default target for + the ninja file, which excludes targets that start and stop the daemon. + - Ninja: Update ninja tool so targets passed to SCons are propagated to ninja when scons + automatically executes ninja. + - Small refactor of scons daemons using a shared StateInfo class for communication + between the scons interactive thread and the http server thread. Added error handling + for scons interactive failing to startup. + - Ninja: Updated ninja scons daemon scripts to output errors to stderr as well as the daemon log. + - Ninja: Fix typo in ninja scons daemon startup which causes ConnectionRefusedError to not retry + - Added SHELL_ENV_GENERATORS construction variable. This variable should be set to a list + (or an iterable) which contains functions to be called in order + when constructing the execution environment (Generally this is the shell environment + variables). This allows the user to customize how (for example) PATH is constructed. + Note that these are called for every build command run by SCons. It could have considerable + performance impact if not used carefully. + to connect to the server during start up. + - lex: Fixed an issue with the lex tool where file arguments specified to either "--header-file=" + or "--tables-file=" which included a space in the path to the file would be processed incorrectly + - Ninja: added option "--skip-ninja-regen" to enable skipping regeneration of the ninja file + if scons can determine the ninja file doesnot need to be regenerated, which will also + skip restarting the scons daemon. Note this option is could result in incorrect rebuilds + if scons Glob or scons generated files are used in ninja build target's command lines. + - Ninja: Added new alias "shutdown-ninja-scons-daemon" to allow ninja to shutdown the daemon. + Also added cleanup to test framework to kill ninja scons daemons and clean ip daemon logs. + NOTE: Test for this requires python psutil module. It will be skipped if not present. + - Ninja: Added command line variable NINJA_CMD_ARGS that allows to pass through ninja command line args. + This can also be set in your Environment(). + + From Mats Wichmann: + - Tweak the way default site_scons paths on Windows are expressed to + conform to conventions (what they actually resolve to is unchanged), + drop a Py2 workaround, and pick a better "system" path, old one + remains supported (%AllUsersProfile%\scons\site_scons vs old + %AllUsersProfile%\Application Data\scons\site_scons). + - Fix testsuite to work on Windows systems where there is no usable + association for running .py files directly. There are a few tests where + we need to do this for internal reasons, those are skipped in that case. + Bad association could mean some other tool took it over (Visual + Studio Code is known to do this), or no association at all. + - Updated debug code in MSVC and MSVS tools to conform to the + suggested "lazy interpolation" use of the Python logging module. + Calls now look like 'debug("template %s", text)' rather than + 'debug("template %s" % text)' so the logging system does the + interpolation only when/if needed (was a pylint warning). + - Update Help (-H) output a bit. Drop "ignored for compat" entry. + Pass window size to formatter so it formats for wider displays too. + - runtest.py now accepts -j 0 to auto-detect number of usable + processors for testing threads. + - Fixed crash in C scanner's dictify_CPPDEFINES() function which happens if + AppendUnique is called on CPPPATH. (Issue #4108). + - The MSVC script_env_cache now contains a sanity check: if the retrieved + tools path does not exist, the entry is invalidated so it will + be recomputed, in an attempt to avoid scons failing when certain + compiler version bumps have taken place. The dictionary key (uses + the name of a batch file and any arguments which may have been + passes), is now computed a bit differently: the dashes are left + off if there are no arguments. The default cachefile is changed + to have a .json suffix, for better recognition on Windows since + the contents are json. + - As "code modernization" all of SCons now uses the current super() + zero-argument syntax instead of direct calls to a parent class method + or the super() two-argument syntax. + - Renamed ParseFlag's internal data structure to "mapping" instead of + "dict" (avoid redefining builtin) + - Fix an old use-before-set bug in tex tool (issue #2888) + - Fix a test harness exception returning stderr if a wait_for timed out. + - ParseConfig now correctly passes the *unique* flag to a user-supplied + flag-merging function. + - Restore the ability of the content-timestamp decider to see that a + a source which is a symlink has changed if the file-system target of + that link has been modified (issue #3880) + - Modernize a few tests that use now-deprecated unittest.getTestCaseNames + and unittest.makeSuite - Python itself suggests the replacements. + - SCons.Tool.find_program_path now takes an optional add_path argument + to add a path to the execution environment if it was discovered in + default_paths. Previously, the routine, called by many tool modules, + never altered the execution environment, leaving it to the tools. + - A new construction variable FORTRANCOMMONFLAGS is added which is + applied to all Fortran dialects, in case someone needs to set some + flags globally. FORTRANFLAGS looked like it was intended for that, + but was not applied to other dialects, and e2e tests explicitly checked + that FORTRANFLAGS did not propagate outside the FORTRAN dialect, + so the conclusion is that behavior is intentional (issue #2257) + - SCons programmatic importing (tool modules and platform modules) + no longer uses the deprecated (since Py 3.10) importlib.load_module + routine, shifting to the preferred exec_module. Old Python 2 compatible + import fallback (using the imp module) in tool module loading is dropped. + Tool module loading no longer special-cases Jython, which is a dead + project as far as SCons (no timeline in sight for Python 3 support). + - Improvements to lex and yacc tools: better documentation of + extra-file options, add test for extra-file behavior. + - Two new construction variables are introduced for lex (LEX_HEADER_FILE + and LEX_TABLES_FILE) as the preferred way of specifying these extra-file + options. + - Two new construction variables are introduced for yacc + (YACC_HEADER_FILE and YACC_GRAPH_FILE) as the preferred way of + specifying these extra-file options. + + + From Zhichang Yu: + - Added MSVC_USE_SCRIPT_ARGS variable to pass arguments to MSVC_USE_SCRIPT. + - Added Configure.CheckMember() checker to check if struct/class has the specified member. + + From Ivan Kravets, PlatformIO: + - Conditional C/C++ Preprocessor: Strip shell's backslashes from the computed include (-DFOO_H=\"foo.h\") diff --git a/Changelogs/Changes-4.5.0.txt b/Changelogs/Changes-4.5.0.txt new file mode 100644 index 0000000000..19482a8af4 --- /dev/null +++ b/Changelogs/Changes-4.5.0.txt @@ -0,0 +1,141 @@ +RELEASE 4.5.0 - Sun, 05 Mar 2023 14:08:29 -0700 + + From Anatoli Babenia: + - Do not initialize DefaultEnvironment when calling EnsureSConsVersion(), + EnsurePythonVersion(), Exit(), GetLaunchDir() and SConscriptChdir(). + - Remove unused private method SConsEnvironment._exceeds_version(). + + From William Deegan: + - Added ValidateOptions() which will check that all command line options are in either + those specified by SCons itself, or by AddOption() in SConstruct/SConscript. It should + not be called until all AddOption() calls are completed. Resolves Issue #4187 + - Refactored SCons/Taskmaster into a package. Moved SCons/Jobs.py into that package. + NOTE: If you hook into SCons.Jobs, you'll have to change that to use SCons.Taskmaster.Jobs + - Changed the Taskmaster trace logic to use python's logging module. The output formatting + should remain (mostly) the same. Minor update to unittest for this to adjust for 1 less newline. + - Migrated logging logic for --taskmastertrace to use Python's logging module. Added logging + to NewParallel Job class (Andrew Morrow's new parallel job implementation) + - Ninja: Fix execution environment sanitation for launching ninja. Previously if you set an + execution environment variable set to a python list it would crash. Now it + will create a string joining the list with os.pathsep + - Move execution environment sanitation from Action._subproc() to + SCons.Util.sanitize_shell_env(ENV) + - Moved rpm and debian directories under packaging + - Added logic to help packagers enable reproducible builds into packaging/etc/. Please + read packaging/etc/README.txt if you are interested. + - Added --experimental=tm_v2, which enables Andrew Morrow's new NewParallel Job implementation. + This should scale much better for highly parallel builds. You can also enable this via SetOption(). + - Fixed command line argument --diskcheck: previously a value of 'none' was ignored. + SetOption('diskcheck','none') is unaffected, as it did not have the problem. + - Added overrides argument to SCons.Subst.scons_subst(), subst_list(), subst(), and Action's process(), + strfunction(). This allows passing a dictionary of envvars to override when evaluating subst()'d strings/lists + - Fixed Issue #4275 - when outputting compilation db and TEMPFILE was in use, the compilation db would have + command lines using the generated tempfile for long command lines, instead of the full command line for + the compilation step for the source/target pair. + - Renamed the qt tools to qt3 since the logic in that tool is only for QT version 3. Renamed all env vars + which affect qt3 from QT_ to QT3_. If you are still using SCons to build QT 3 code, you'll need to update + your SConscripts. Note that using 'qt' tool has been deprecated for some time. + + From David H: + - Added JAVAPROCESSORPATH construction variable which populates -processorpath. + - Updated JavaScanner to scan JAVAPROCESSORPATH. + + From Nickolai Korshunov + - Added FILE_ENCODING, to allow explicitly setting the text encoding for files + written by the Textfile() and Substfile() builders. If not specified, Textfile() and Substfile() builders + will write files as UTF-8. Fixed Issue #4302. + + From Dan Mezhiborsky: + - Add newline to end of compilation db (compile_commands.json). + + From Daniel Moody: + - Added error message to handle the case when SCons attempts to retrieve all the targets + for a specified builder from the CacheDir, fails to do so, and then runs into an error + when deleting the files which were retrieved. Previously if this happened there was no + errors or warnings. + - Fix issue #2757, where Configure checks that perform a check which reads a modified source + (including program, source or header file(s)) would incorrectly mark that file "up to date" so the + actual build would not see the file as modified. Leading to incorrect incremental builds. + Now configure checks now clear node info for non conftest nodes, so they will be re-evaluated for + the real taskmaster run when the build commences. + + From Andrew Morrow + - Avoid returning UniqueList for `children` and other `Executor` APIs. This type + iterates more slowly than the builtin types. Also simplify uniquer_hashables to + use an faster implementation under the assumption of ordered dictionaries. + + From Ryan Saunders: + - Fixed runtest.py failure on Windows caused by excessive escaping of the path to python.exe. + + From Lukas Schrangl: + - Run LaTeX after biber/bibtex only if necessary + + From Flaviu Tamas: + - Added -fsanitize support to ParseFlags(). This will propagate to CCFLAGS and LINKFLAGS. + + From Mats Wichmann: + - A list argument as the source to the Copy() action function is now + correctly handled by converting elements to string. Copy errors out + if asked to copy a list to an existing non-directory destination. + Both the implementation and the strfunction which prints the progress + message were adjusted. Fixes #3009. + - doc: EnsureSConsVersion, EnsurePythonVersion, Exit, GetLaunchDir and + SConscriptChdir are now listed as Global functions only; the + Environment versions still work but are not documented. + - The Java scanner processing of JAVACLASSPATH for dependencies was + changed to split on os.pathsep instead of space, to match usage of + passing a path string like "xxx:yyy:zzz". This is not portable - + passing a POSIX-style path string (with ':') won't work on Windows + (';') - which is now documented with a hint to use a list instead + to be portable. Splitting on space broke paths with embedded spaces. + Fixes #4243. + - Cleanup: make sure BoolVariable usage in tests and examples uses Python + boolean values instead of 0/1. + - Stop telling people to run "python setup.py install" in the User Guide. + Adds new content on using virtualenvs to be able to have multiple + different SCons versions available on one system. + - Added the "DefaultEnvironment(tools=[])" stanza to a number of tests + that are known to be particularly slow. It's still just a tiny + speedup, but the Windows CI had been occasionally timing out, + so maybe this helps a bit. + - Remove an extra existence check in one ninja test that caused it + to be skipped on some otherwise-valid Windows installations. + - test framework tests now pass on Linux and Windows (the latter can + still run into problems on some configurations), and automated + tests are now run on changes in this area so future problems can + be spotted. + - The single-file Util module was split into a package with a few + functional areas getting their own files - Util.py had grown to + over 2100 lines. + - Add a zipapp package of scons-local: can use SCons from a local + file which does not need unpacking. + - Additional explanations for MSVSProject and MSVSSolution builders. + - Fix a problem (present in 4.4.0 only) where a Java inner class could + not be cached because the emitted filename contained a '$' and when + looked up through a node ended up generating a Python SyntaxError + because it was passed through scons_subst(). + - Have the gfortran tool do a better job of honoring user preferences + for the dialect tools (F77, F90, F03 and F09, as well as the shared-library + equivalents SHF77, SHF90, SHF03, SHF09). Previously these were + unconditionally overwritten to 'gfortran'; the change should be more + in line with expectations of how these variables should work. + Also cleaned a few Fortran tests - test behavior does not change. + - Updated MSVC documentation - adds "version added" annotations on recently + added construction variables and provides a version-mapping table. + - Add Python 3.12 support, and indicate 3.11/3.12 support in package. + 3.12 is in alpha for this SCons release, the bytecode sequences + embedded in SCons/ActionTests.py may need to change later, but + based on what is known now, 3.12 itself should work with this release. + - Add "append" keyword argument to Configure context's CheckLib and + CheckLibWithHeader to control whether to append or prepend (issue #2767) + Also added "unique" keyword, to control whether a library is added + or not if it is already in the $LIBS construction var in the + configure context. (issue #2768). + - Completely refactored the CPPDEFINES logic in Append/AppendUnique/Prepend/PrependUnique + This change fixes the following GH Issues: + - GH Issue #3876 - Append() and AppendUnique() will handle CPPDEFINES the same + - GH Issue #4254 - Make handling tuples in CPPDEFINES consistent. + - We no longer sort the keys added to CPPDEFINES by their dictionary keys. + We take advantage that their order is now stable based on insertion order + in Python 3.5+ + - Added/modifed unit and system tests to verify these changes. diff --git a/Changelogs/Changes-4.5.1.txt b/Changelogs/Changes-4.5.1.txt new file mode 100644 index 0000000000..9e14d8533b --- /dev/null +++ b/Changelogs/Changes-4.5.1.txt @@ -0,0 +1,12 @@ +RELEASE 4.5.1 - Mon, 06 Mar 2023 14:08:29 -0700 + + From Mats Wichmann + - Fix a problem in 4.5.0 where using something like the following code + will cause a Clone()'d environment to share the CPPDEFINES with the + original Environment() which was cloned. Causing leakage of changes + to CPPDEFINES when they should be completely independent after the Clone. + env=Environment(CPPDEFINES=['a']) + env.Append(CPPDEFINES=['b']) (or AppendUnique,Prepend,PrependUnique) + env1=env.Clone() + env1.Append(CPPDEFINES=['c']) (or any other modification, but not overwriting CPPDEFINES + Now env['CPPDEFINES'] will contain 'c' when it should not. diff --git a/Changelogs/Changes-4.5.2.txt b/Changelogs/Changes-4.5.2.txt new file mode 100644 index 0000000000..eb8e68b354 --- /dev/null +++ b/Changelogs/Changes-4.5.2.txt @@ -0,0 +1,14 @@ +RELEASE 4.5.2 - Sun, 21 Mar 2023 14:08:29 -0700 + + From Michał Górny: + - Remove the redundant `wheel` dependency from `pyproject.toml`, + as it is added automatically by the setuptools PEP517 backend. + + From Mats Wichmann + - Fix a problem (#4321) in 4.5.0/4.5.1 where ParseConfig could cause an + exception in MergeFlags when the result would be to add preprocessor + defines to existing CPPDEFINES. The following code illustrates the + circumstances that could trigger this: + env=Environment(CPPDEFINES=['a']) + env.Append(CPPDEFINES=['b']) + env.MergeFlags({'CPPDEFINES': 'c'}) diff --git a/Changelogs/Changes-4.6.0.txt b/Changelogs/Changes-4.6.0.txt new file mode 100644 index 0000000000..bb41b46595 --- /dev/null +++ b/Changelogs/Changes-4.6.0.txt @@ -0,0 +1,212 @@ +RELEASE 4.6.0 - Sun, 19 Nov 2023 17:22:20 -0700 + + From Max Bachmann: + - Add missing directories to searched paths for mingw installs + + From Joseph Brill: + - Fix issue #4312: the cached installed msvc list had an indirect dependency + on the target architecture in the environment dictionary. The first call + to construct the installed msvc list now forces the target architecture to be + undefined, constructs the installed msvc list, and then restores the original + target architecture. + Note: an indirect dependency on the VSWHERE construction variable in the + environment remains. + - Fix issue #4312: explicitly guard against an empty regular expression list + when msvc is not installed. + - When trying to find a valid msvc batch file, check that the compiler executable + (cl.exe) exists for VS6 to VS2015 to avoid executing the msvc batch file. Always + check that the compiler executable is found on the msvc script environment path + after running the msvc batch file. Only use the sdk batch files when all of the + msvc script host/target combinations have been exhausted and a valid script was + not found. + - Add ARM64 host configurations for windows and msvc. + Note: VS2013 and earlier has not been tested on ARM64. + - If necessary, automatically define VSCMD_SKIP_SENDTELEMETRY for VS2019 and later + on ARM64 hosts when using an arm32 build of python to prevent a powershell dll + not found error pop-up window. + - Fix an issue where test SConfTests.py would fail when mscommon debugging + was enabled. The mscommon debug filter class registered with the logging + module was refactored. + - Add arm64 to the MSVS supported architectures list for VS2017 and later to be + consistent with the current documentation of MSVS_ARCH. + - Fix an issue with an unhandled MissingConfiguration exception due to an msvc + registry query that returns a path that does not exist. Multiple invocation + paths were not prepared to handle the MissingConfiguration exception. The + MissingConfiguration exception type was removed. + - The MSCommon module import was changed from a relative import to a top-level + absolute import in the following Microsoft tools: midl, mslib, mslink, mssdk, msvc, + msvs. Moving any of these tools that used relative imports to the scons site tools + folder would fail on import (i.e., the relative import paths become invalid when + moved). + - The detection of the msvc compiler executable (cl.exe) has been modified: + * The host os environment path is no longer evaluated for the existence of the + msvc compiler executable when searching the detection dictionary. + * The existence of the msvc compiler executable is checked in the detection + dictionary and the scons ENV path before the detection dictionary is merged + into the scons ENV. + * Different warnings are produced when the msvc compiler is not detected in the + detection dictionary based on whether or not an msvc compiler was detected in + the scons ENV path (i.e., a msvc compiler executable already exists in the + user's ENV path prior to detection). + * The warning message issued when a msvc compiler executable is not found in the + detection dictionary was modified by adding the word "requested": + Old warning: "Could not find MSVC compiler 'cl'." + New warning: "Could not find requested MSVC compiler 'cl'.". + * An additonal sentence is appended to the warning message issued when an msvc + compiler executable is not found in the msvc detection dictionary and is found + in the user's ENV path prior to detection: + " A 'cl' was found on the scons ENV path which may be erroneous." + + From Vitaly Cheptsov: + - Fix race condition in `Mkdir` which can happen when two `SConscript` + are processed simultaneously by two separate build commands. + + From William Deegan: + - The --debug flag now has a 'json' option which will write information + generated by --debug={count, memory, time, action-timestamps} and about + the build. + - Obsoleted YACCVCGFILESUFFIX, being replaced by YACC_GRAPH_FILE_SUFFIX. + If YACC_GRAPH_FILE_SUFFIX is not set, it will respect YACCVCGFILESUFFIX. + + From Sten Grüner + - The newly added --debug=sconscript option (new) will output notices when + entering an exiting each SConscript as they are processed. + + From Philipp Maierhöfer: + - Fix gfortran tool initialization. Defaults to using binary named gfortran + as would be expected, and properly set's SHFORTRAN flags to include -fPIC + where previously it was only doing so for the other fortran versions (F77,..) + + From Jonathon Reinhart: + - Fix another instance of `int main()` in CheckLib() causing failures + when using -Wstrict-prototypes. + + From Mats Wichmann + - C scanner's dictifyCPPDEFINES routine did not understand the possible + combinations of CPPDEFINES - not aware of a "name=value" string either + embedded in a sequence, or by itself. The conditional C scanner thus + did not always properly apply the defines. The regular C scanner does + not use these, so was not affected. [fixes #4193] + - Minor cleanup for ValidateOptions - docs and docstring tweaked, + add missed versionadded indicator. + - Added some typing annotations generated by a tool, to eliminate manual + work in future on things which are safe for the tool to produce. + Then manually fixed up some things related to bool that the tool did + not handly ideally. For example, simple functions which just did + "return 1" were interpreted by the tool as returning int, when bool + was really the intent. Functions/methods named like "is_*", "has_*", + "exists" are now pretty consistently marked as "-> bool". + - Simplify some code due to pylint observation: "C2801: Unnecessarily + calls dunder method __call__. Invoke instance directly." + - Python 3.9 dropped the alias base64.decodestring, deprecated since 3.1. + Only used in msvs.py. Use base64.decodebytes instead. + - When debugging (--debug=pdb), the filenames SConstruct and SConscript + are now recognized when manipulating breakpoints. Previously, + only a full pathname to an sconscript file worked, as pdb requires + a .py extension to open a file that is not an absolute path. + - SCons test runner now uses pathlib to normalize and compare paths + to test files. + - D compilers : added support for generation of .di interface files. + New variables DI_FILE_DIR, DI_FILE_DIR_PREFIX, DI_FILE_DIR_SUFFIX, + DI_FILE_SUFFIX. + - Fixed: when using the mingw tool, if an msys2 Python is used (os.sep + is '/' rather than the Windows default '\'), certain Configure checks + could fail due to the construction of the path to run the compiled check. + - Added effort to find mingw if it comes from Chocolatey install of msys2. + - Minor doc fixes: signature of Alias() now matches implementation + to avoid problem if kwargs used; case of Alias with no targets is + mentioned in text (was already shown in example); now mention that + Action([item]) does not return a ListAction - previously implied + that if arg was a list, a ListAction was *always* returned; mention + default Decider and sort the names of available decider functions, + and add a version marking. Minor fiddling with Alias.py docstrings. + - Python 3.12 support: new bytecodes for ActionTests.py, adapt to + changes to pathlib module in runtest.py (PosixPath no longer + converts slashes if given a Windows-style path). Also switch to + using `subTest` in `ActionTests`, so that we can see all 21 fails + due to bytecode changes (previously testcases aborted on the first + assert fail so we only saw seven), and use unittest asserts to + simplify complex printing stanzas. + - Added copyright headers to files in test/ that didn't have them. + - Drop three unused methods from the Environment Base class: + get_src_sig_type and get_tgt_sig_type, as well as "private" + _changed_source. These were orphaned when the long-deprecated + Source Signatures and Target Signatures were removed, these were + missed at that time. + - Remove dead code: some mocked classes in unit tests had methods + which have been removed from the Node class they're mocking, + there's no need to shadow those any more as there are no callers. + The methods are depends_on (base functionality removed in 2005) + and is_pseudeo_derived (base functionality removed in 2006). There + may well be more! + - Added pass_test() call to test/MSVC/MSVC_BATCH-spaces-targetdir.py. + It looked it was missing a more detailed check, but it should be + sufficient just to check the build worked. Renamed the fixture + dir to follow naming convention in test/MSVC overall, and added + a sconstest.skip file, also to follow convention. + - Marked some scanner methods as @staticmethod. + - Class ActionBase is now an abstract base class to more accurately + reflect its usage. Derived _ActionAction inherits the ABC, so it + now declares (actually raises NotImplementedError) two methods it + doesn't use so it can be instantiated by unittests and others. + - The yacc tool now understands the bison behavior of --header, + --defines and --graph being called without option-argument as being + synonyms for -d (first two) and -g. -H also recognized as a synonym + for -d. Default value for $YACC_GRAPH_FILE_SUFFIX changed to '.gv' + to match current bison default (since bison 3.8). Set this variable + to '.dot' if using byacc. The graph file name (-g) is now generated + relative to the requested target file name, not to the source file + name, to match actual current behavior (only affects if target + explicitly requested with a different base name + than source). Docs updated. Fixes #4326 and #4327. + - Cleaned up dblite module (checker warnings, etc.). + - Some cleanup in the FortranCommon tool. + - Rewrite the internal _subproc routine - a new scons_subproc_run() now + makes use of Python's subprocess.run in a more natural way, getting + around some of the issues with attempted context manager use, fetching + output, etc. - we let the subprocess module do the hard work, + since it's well debugged and supported. _subproc is no longer + called by internal code, but remains in place in case there are builds + which call to it (even though it was never "published API"). + - Changed the message about scons -H to clarify it shows built-in options. + - Improve CacheDir() Documentation. + - Release-building setup tweaked. (most of) the targets listed in + SCons' own "scons --help" now work again. + - Fix platform unit test on Windows for Py 3.12+. Fixes #4376. + - More tweaking of test framework overview (which is duplicated onto + the website, but not in the regular documentation section). + - Extend range of recognized Java versions to 20. + - Builder calls now accept PathLike objects in source lists. Fixes #4398. + - The Help() function now takes an additional keyword argument + keep_local: when starting to build a help message, you can now + retain help from AddOption calls, but omit help for SCons' own + command-line options with "Help(newtext, append=True, local_only=True)". + - A little more code "modernization", done via "pypgrade" tool set + to "3.6 and above" setting. + - Finish the change to make calling SConscript() with a nonexistent + file an error. It has issued a warning since 3.0, with "warn instead + of fail" deprecated since 3.1. Fixes #3958. + - Minor (non-functional) cleanup of some tests, particuarly test/MSVC. + - Added more error handling while reading msvc config cache. + (Enabled/specified by SCONS_CACHE_MSVC_CONFIG). + The existing cache will be discarded if there's a decode error reading it. + It's possible there's a race condition creating this issue in certain CI + builds. Also add a simple filesystem-based locking protocol to try to + avoid the problem occuring. + - Update the first two chapters on building with SCons in the User Guide. + - Update docs on Export/Import - make sure mutable/immutable status has + been mentioned. + - Some cleanup to the Util package, including renaming SCons.Util.types + to SCons.Util.sctypes to avoid any possible confusion with the + Python stdlib types module. + - TeX tests: skip tests that use makeindex or epstopdf not installed, or + if `kpsewhich glossaries.sty` fails. + - Added a .note.GNU-stack section to the test assembler files to + avoid the GNU linker issuing warnings for its absence. + - Eliminate more http: references (mostly in comments/docstrings where + they really weren't harmful). A few links labeled dead with no alt. + - Add JDK 21 LTS support + - Add a LIBLITERALPREFIX variable which can be set to the linker's + prefix for considering a library argument unmodified (e.g. for the + GNU linker, the ':' in '-l:libfoo.a'). Fixes Github issue #3951. + - Update PCH builder docs with some usage notes. diff --git a/Changelogs/Changes-4.7.0.txt b/Changelogs/Changes-4.7.0.txt new file mode 100644 index 0000000000..2aa31eda8c --- /dev/null +++ b/Changelogs/Changes-4.7.0.txt @@ -0,0 +1,107 @@ +RELEASE 4.7.0 - Sun, 17 Mar 2024 17:22:20 -0700 + + From Ataf Fazledin Ahamed: + - Use of NotImplemented instead of NotImplementedError for special methods + of _ListVariable class + + From Joseph Brill: + - Fix issue #2755: the msvs tool no longer writes the OS environment SCONS_HOME + value into the SCons environment when the SCONS_HOME variable already exists + in the SCons environment. Prior to this change, a valid user-defined SCons + environment value for SCONS_HOME would be overwritten with the OS environment + value of SCONS_HOME which could be None (i.e., undefined). + - Update the windows registry keys for detection of Visual Studio 2015 Express + ('14.0Exp'): the VS2015 registry key ('WDExpress') appears to be different + than the registry key ('VCExpress') for earlier Visual Studio express + versions. The registry key value is relative to the installation root rather + than the VC folder and requires additional path components during evaluation. + - Fix the vs-6.0-exec.py test script: the msvs generated project is 'foo.dsp' + and the command-line invocation of the Visual Studio development environment + program was attempting to build 'test.dsp'. The command-line invocation was + changed to build 'foo.dsp'. + - Update the msvs project generation test scripts: the msvs project execution + tests could produce a "false positive" test result when the test executable is + correctly built via the SConstruct env.Program() call and the command-line + invocation of the Visual Studio development environment program fails. The + test passes due to the existence of the test executable from the initial + build. The tests were modified to delete the test executable, object file, + and sconsign file prior to the command-line invocation of the VS development + binary. + - Method unlink_files was added to the TestCmd class that unlinks a list of + files from a specified directory. An attempt to unlink a file is made only + when the file exists; otherwise, the file is ignored. + - Fix issue #4320: add an optional argument list string to configure's CheckFunc + method so that the generated function argument list matches the function's + prototype when including a header file. + + From Thaddeus Crews: + - Explicitly wrap non-serializable values in json dump + - Implemented SCons.Util.sctyping as a safe means of hinting complex types. Currently + only implemented for `Executor` as a proof-of-concept. + + From William Deegan: + - Fix sphinx config to handle SCons versions with post such as: 4.6.0.post1 + + From Michał Górny: + - Remove unnecessary dependencies on pypi packages from setup.cfg + + From Sten Grüner: + - Fix of the --debug=sconscript option to return exist statements when using return + statement with stop flag enabled + + From Prabhu S. Khalsa: + - Fix typo in user documentation (issue #4458) + + From Andrew Morrow: + - The NewParallel scheduler is now the default, the `tm_v2` flag is removed, + and the old scheduler is opt-in under `--experimental=legacy_sched`. Additionally, + the new scheduler is now used for -j1 builds as well. + - A python interpreter with support for the `threading` package is now required, + and this is enforced on startup. SCons currently sets its minimum supported + Python to 3.6, and it was not until Python 3.7 where `threading` became + default supported. In practice, we expect most real world Python 3.6 deployments + will have `threading` support enabled, so this will not be an issue. + - CacheDir writes no longer happen within the taskmaster critical section, + and therefore can run in parallel with both other CacheDir writes and the + taskmaster DAG walk. + - The NewParallel scheduler now only adds threads as new work requiring execution + is discovered, up to the limit set by -j. This should reduce resource utilization + when the achievable parallelism in the DAG is less than the -j limit. + + From Mats Wichmann: + - Add support for Python 3.13 (as of alpha 2). So far only affects + expected bytecodes in ActionTests.py. + - sconsign cleanup - remove some dead code, minor manpage tweaks. + - Be more cautious about encodings fetching command output on Windows. + Problem occurs in piped-spawn scenario, used by Configure tests. + Fixes #3529. + - Clarify/fix documentation of Scanners in User Guide and Manpage. + Fixes #4468. + - Fix bad typing in Action.py: process() and strfunction(). + - Add Pseudo() to global functions, had been omitted. Fixes #4474. + - Improve handling of file data that SCons itself processes - try + harder to decode non-UTF-8 text. SCons.Util.to_Text now exists + to convert a byte stream, such as "raw" file data. Fixes #3569, #4462. + The Pseudo manpage entry was updated to provide more clarity. + - Clarify how SCons finds the project top directory, and what that is used for. + - The internal routine which implements the PyPackageDir function + would fail with an exception if called with a module which is + not found. It will now return None. Updated manpage entry and + docstring.. + - Doc update: standardized on the use of a new entity &MSVC; to + describe the Microsoft C++ compiler. Update the version table slightly. + Amplified the usage of MSVC_VERSION. + - Improve SharedLibrary docs a bit. + - More consistent use of &Python; in the manpage. A few links added. + A warning about overwriting env['ENV'] and one about Configure + checks possibly not running in in no-exec mode also added. + - Update warnings module: adds docstrings, drop three unused warnings + (DeprecatedSourceCodeWarning, TaskmasterNeedsExecuteWarning, + DeprecatedMissingSConscriptWarning) add two warnings to manpage + (cache-cleanup-error, future-reserved-variable), improve unittest, tweak + Sphinx build. + - Add locking around creation of CacheDir config file. Fixes #4489. + - Clarify MergeFlags usage of a dict argument. + - SCons documentation build can now be controlled through SKIP_DOC + variable - rather than just true/false can now specify + skip none, skip all, skip pdf docs, skip api docs.