Back out post-2.0 code changes from trunk: r4643, r4642 r4640, r4637.
[scons.git] / src / CHANGES.txt
1 # __COPYRIGHT__
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 1.2.0.d20100117 - Sun, 17 Jan 2010 14:26:59 -0800  
12
13   From Luca Falavigna:
14
15     - Fix typos in the man page.
16
17
18
19 RELEASE X.X.X - XXX
20
21   From Jim Randall:
22     - Fixed temp filename race condition on Windows with long cmd lines.
23
24   From David Cournapeau:
25     - Fixed tryRun when sconf directory is in a variant dir.
26     - Do not add -fPIC for ifort tool on non-posix platforms (darwin and
27       windows).
28     - Fix bug 2294 (spurious CheckCC failures).
29     - Fix scons bootstrap process on windows 64 (wrong wininst name)
30
31   From William Deegan:
32     - Final merge from vs_revamp branch to main
33
34     - Added definition and usage of HOST_OS, HOST_ARCH, TARGET_OS, 
35       TARGET_ARCH, currently only defined/used by Visual Studio
36       Compilers. This will be rolled out to other platforms/tools
37       in the future.
38
39     - Add check for python >= 3.0.0 and exit gracefully.
40       For 1.3 python >= 1.5.2 and < 3.0.0 are supported
41
42     - Fix bug 1944 - Handle non-existent .i file in swig emitter, previously
43       it would crash with an IOError exception. Now it will try to make an
44       educated guess on the module name based on the filename.
45
46   From Lukas Erlinghagen:
47
48     - Have AddOption() remove variables from the list of
49       seen-but-unknown variables (which are reported later).
50
51     - An option name and aliases can now be specified as a tuple.
52
53   From Hartmut Goebel:
54
55     - Textfile builder.
56
57   From Jared Grubb:
58
59     - use "is/is not" in comparisons with None instead of "==" or "!=".
60
61   From Jim Hunziker:
62
63     - Avoid adding -gphobos to a command line multiple times
64       when initializing use of the DMD compiler.
65   
66   From Jason Kenney:
67
68     - Sugguested HOST/TARGET OS/ARCH separation.
69
70   From Steven Knight:
71
72     - Fix the -n option when used with VariantDir(duplicate=1)
73       and the variant directory doesn't already exist.
74
75     - Fix scanning of Unicode files for both UTF-16 endian flavors.
76
77     - Fix a TypeError on #include of file names with Unicode characters.
78
79     - Fix an exception if a null command-line argument is passed in.
80
81     - Evaluate Requires() prerequisites before a Node's direct children
82       (sources and dependencies).
83
84   From Greg Noel:
85
86     - Remove redundant __metaclass__ initializations in Environment.py.
87
88     - Correct the documentation of text returned by sconf.Result().
89
90     - Document that filenames with '.' as the first character are
91       ignored by Glob() by default (matching UNIX glob semantics).
92
93     - Fix SWIG testing infrastructure to work on Mac OS X.
94
95     - Restructure a test that occasionally hung so that the test would
96       detect when it was stuck and fail instead.
97
98     - Substfile builder.
99
100   From Gary Oberbrunner:
101
102     - When reporting a target that SCons doesn't know how to make,
103       specify whether it's a File, Dir, etc.
104
105   From Ben Webb:
106
107     - Fix use of $SWIGOUTDIR when generating Python wrappers.
108
109     - Add $SWIGDIRECTORSUFFIX and $SWIGVERSION construction variables.
110
111   From Rob Managan:
112
113     - Add -recorder flag to Latex commands and updated internals to
114       use the output to find files TeX creates. This allows the MiKTeX
115       installations to find the created files
116
117     - Notify user of Latex errors that would get buried in the 
118       Latex output
119
120     - Remove LATEXSUFFIXES from environments that don't initialize Tex.
121
122     - Add support for the glosaaries package for glossaries and acronyms
123
124     - Fix problem that pdftex, latex, and pdflatex tools by themselves did
125       not create the actions for bibtex, makeindex,... by creating them 
126       and other environment settings in one routine called by all four 
127       tex tools.
128
129     - Fix problem with filenames of sideeffects when the user changes
130       the name of the output file from the latex default
131
132     - Add scanning of files included in Latex by means of \lstinputlisting{}
133       Patch from Stefan Hepp.
134
135     - Change command line for epstopdf to use --outfile= instead of -o
136       since this works on all platforms.
137       Patch from Stefan Hepp.
138
139     - Change scanner to properly search for included file from the
140       directory of the main file instead of the file it is included from.
141       Also update the emitter to add the .aux file associated with
142       \include{filename} commands. This makes sure the required directories
143       if any are created for variantdir cases.
144       Half of the patch from Stefan Hepp.
145
146 RELEASE 1.2.0.d20090223 - Mon, 23 Feb 2009 08:41:06 -0800
147
148   From Stanislav Baranov:
149
150     - Make suffix-matching for scanners case-insensitive on Windows.
151
152   From David Cournapeau:
153
154     - Change the way SCons finds versions of Visual C/C++ and Visual
155       Studio to find and use the Microsoft v*vars.bat files.
156
157   From Robert P. J. Day:
158
159     - User's Guide updates.
160
161   From Dan Eaton:
162
163     - Fix generation of Visual Studio 8 project files on x64 platforms.
164
165   From Allan Erskine:
166
167     - Set IncludeSearchPath and PreprocessorDefinitions in generated
168       Visual Studio 8 project files, to help IntelliSense work.
169
170   From Mateusz Gruca:
171
172     - Fix deletion of broken symlinks by the --clean option.
173
174   From Steven Knight:
175
176     - Fix the error message when use of a non-existent drive on Windows
177       is detected.
178
179     - Add sources for files whose targets don't exist in $CHANGED_SOURCES.
180
181     - Detect implicit dependencies on commands even when the command is
182       quoted.
183
184     - Fix interaction of $CHANGED_SOURCES with the --config=force option.
185
186     - Fix finding #include files when the string contains escaped
187       backslashes like "C:\\some\\include.h".
188
189     - Pass $CCFLAGS to Visual C/C++ precompiled header compilation.
190
191     - Remove unnecessary nested $( $) around $_LIBDIRFLAGS on link lines
192       for the Microsoft linker, the OS/2 ilink linker and the Phar Lap
193       linkloc linker.
194
195     - Spell the Windows environment variables consistently "SystemDrive"
196       and "SystemRoot" instead of "SYSTEMDRIVE" and "SYSTEMROOT".
197
198
199
200 RELEASE 1.2.0.d20090113 - Tue, 13 Jan 2009 02:50:30 -0800
201
202   From Stanislav Baranov, Ted Johnson and Steven Knight:
203
204     - Add support for batch compilation of Visual Studio C/C++ source
205       files, controlled by a new $MSVC_BATCH construction variable.
206
207   From Steven Knight:
208
209     - Print the message, "scons: Build interrupted." on error output,
210       not standard output.
211
212     - Add a --warn=future-deprecated option for advance warnings about
213       deprecated features that still have warnings hidden by default.
214
215     - Fix use of $SOURCE and $SOURCES attributes when there are no
216       sources specified in the Builder call.
217
218     - Add support for new $CHANGED_SOURCES, $CHANGED_TARGETS,
219       $UNCHANGED_SOURCES and $UNCHANGED_TARGETS variables.
220
221     - Add general support for batch builds through new batch_key= and
222       targets= keywords to Action object creation.
223
224   From Arve Knudsen:
225
226     - Make linker tools differentiate properly between SharedLibrary
227       and LoadableModule.
228
229     - Document TestCommon.shobj_prefix variable.
230
231     - Support $SWIGOUTDIR values with spaces.
232
233   From Rob Managan:
234
235     - Don't automatically try to build .pdf graphics files for
236       .eps files in \includegraphics{} calls in TeX/LaTeX files
237       when building with the PDF builder (and thus using pdflatex).
238
239   From Gary Oberbrunner:
240
241     - Allow AppendENVPath() and PrependENVPath() to interpret '#'
242       for paths relative to the top-level SConstruct directory.
243
244     - Use the Borland ilink -e option to specify the output file name.
245
246     - Document that the msvc Tool module uses $PCH, $PCHSTOP and $PDB.
247
248     - Allow WINDOWS_INSERT_DEF=0 to disable --output-def when linking
249       under MinGW.
250
251   From Zia Sobhani:
252
253     - Fix typos in the User's Guide.
254
255   From Greg Spencer:
256
257     - Support implicit dependency scanning of files encoded in utf-8
258       and utf-16.
259
260   From Roberto de Vecchi:
261
262     - Remove $CCFLAGS from the the default definitions of $CXXFLAGS for
263       Visual C/C++ and MIPSpro C++ on SGI so, they match other tools
264       and avoid flag duplication on C++ command lines.
265
266   From Ben Webb:
267
268     - Handle quoted module names in SWIG source files.
269
270     - Emit *_wrap.h when SWIG generates header file for directors
271
272   From Matthew Wesley:
273
274     - Copy file attributes so we identify, and can link a shared library
275       from, shared object files in a Repository.
276
277
278
279 RELEASE 1.2.0 - Sat, 20 Dec 2008 22:47:29 -0800
280
281   From Steven Knight:
282
283     - Don't fail if can't import a _subprocess module on Windows.
284
285     - Add warnings for use of the deprecated Options object.
286
287
288
289 RELEASE 1.1.0.d20081207 - Sun, 07 Dec 2008 19:17:23 -0800
290
291   From Benoit Belley:
292
293     - Improve the robustness of GetBuildFailures() by refactoring
294       SCons exception handling (especially BuildError exceptions).
295
296     - Have the --taskmastertrace= option print information about
297       individual Task methods, not just the Taskmaster control flow.
298
299     - Eliminate some spurious dependency cycles by being more aggressive
300       about pruning pending children from the Taskmaster walk.
301
302     - Suppress mistaken reports of a dependency cycle when a child
303       left on the pending list is a single Node in EXECUTED state.
304
305   From David Cournapeau:
306
307     - Fix $FORTRANMODDIRPREFIX for the ifort (Intel Fortran) tool.
308
309   From Brad Fitzpatrick:
310
311     - Don't pre-generate an exception message (which will likely be
312       ignored anyway) when an EntryProxy re-raises an AttributeError.
313
314   From Jared Grubb:
315
316     - Clean up coding style and white space in Node/FS.py.
317
318     - Fix a typo in the documentation for $_CPPDEFFLAGS.
319
320     - Issue 2401: Fix usage of comparisons with None.
321
322   From Ludwig Hähne:
323
324     - Handle Java inner classes declared within a method.
325
326   From Steven Knight:
327
328     - Fix label placement by the "scons-time.py func" subcommand
329       when a profile value was close to (or equal to) 0.0.
330
331     - Fix env.Append() and env.Prepend()'s ability to add a string to
332       list-like variables like $CCFLAGS under Python 2.6.
333
334     - Other Python2.6 portability:  don't use "as" (a Python 2.6 keyword).
335       Don't use the deprecated Exception.message attribute.
336
337     - Support using the -f option to search for a different top-level
338       file name when walking up with the -D, -U or -u options.
339
340     - Fix use of VariantDir when the -n option is used and doesn't,
341       therefore, actually create the variant directory.
342
343     - Fix a stack trace from the --debug=includes option when passed a
344       static or shared library as an argument.
345
346     - Speed up the internal find_file() function (used for searching
347       CPPPATH, LIBPATH, etc.).
348
349     - Add support for using the Python "in" keyword on construction
350       environments (for example, if "CPPPATH" in env: ...).
351
352     - Fix use of Glob() when a repository or source directory contains
353       an in-memory Node without a corresponding on-disk file or directory.
354
355     - Add a warning about future reservation of $CHANGED_SOURCES,
356       $CHANGED_TARGETS, $UNCHANGED_SOURCES and $UNCHANGED_TARGETS.
357
358     - Enable by default the existing warnings about setting the resource
359       $SOURCE, $SOURCES, $TARGET and $TARGETS variable.
360
361   From Rob Managan:
362
363     - Scan for TeX files in the paths specified in the $TEXINPUTS
364       construction variable and the $TEXINPUTS environment variable.
365
366     - Configure the PDF() and PostScript() Builders as single_source so
367       they know each source file generates a separate target file.
368
369     - Add $EPSTOPDF, $EPSTOPDFFLAGS and $EPSTOPDFCOM
370
371     - Add .tex as a valid extension for the PDF() builder.
372
373     - Add regular expressions to find \input, \include and
374       \includegraphics.
375
376     - Support generating a .pdf file from a .eps source.
377
378     - Recursive scan included input TeX files.
379
380     - Handle requiring searched-for TeX input graphics files to have
381       extensions (to avoid trying to build a .eps from itself, e.g.).
382
383   From Greg Noel:
384
385     - Make the Action() function handle positional parameters consistently.
386
387     - Clarify use of Configure.CheckType().
388
389     - Make the File.{Dir,Entry,File}() methods create their entries
390       relative to the calling File's directory, not the SConscript
391       directory.
392
393     - Use the Python os.devnull variable to discard error output when
394       looking for the $CC or $CXX version.
395
396     - Mention LoadableModule() in the SharedLibrary() documentation.
397
398   From Gary Oberbrunner:
399
400     - Update the User's Guide to clarify use of the site_scons/
401       directory and the site_init.py module.
402
403     - Make env.AppendUnique() and env.PrependUnique remove duplicates
404       within a passed-in list being added, too.
405
406   From Randall Spangler:
407
408     - Fix Glob() so an on-disk file or directory beginning with '#'
409       doesn't throw an exception.
410
411
412
413 RELEASE 1.1.0 - Thu, 09 Oct 2008 08:33:47 -0700
414
415   From Chris AtLee
416
417     - Use the specified environment when checking for the GCC compiler
418       version.
419
420   From Ian P. Cardenas:
421
422     - Fix Glob() polluting LIBPATH by returning copy of list
423
424   From David Cournapeau:
425
426     - Add CheckCC, CheckCXX, CheckSHCC and CheckSHCXX tests to
427       configuration contexts.
428
429     - Have the --profile= argument use the much faster cProfile module 
430       (if it's available in the running Python version).
431
432     - Reorder MSVC compilation arguments so the /Fo is first.
433
434   From Bill Deegan:
435
436     - Add scanning Windows resource (.rc) files for implicit dependencies.
437
438   From John Gozde:
439
440     - When scanning for a #include file, don't use a directory that
441       has the same name as the file.
442
443   From Ralf W. Grosse-Kunstleve
444
445     - Suppress error output when checking for the GCC compiler version.
446
447   From Jared Grubb:
448
449     - Fix VariantDir duplication of #included files in subdirectories.
450
451   From Ludwig Hähne:
452
453     - Reduce memory usage when a directory is used as a dependency of
454       another Node (such as an Alias) by returning a concatenation
455       of the children's signatures + names, not the children's contents,
456       as the directory contents.
457
458     - Raise AttributeError, not KeyError, when a Builder can't be found.
459
460     - Invalidate cached Node information (such as the contenst returned
461       by the get_contents() method) when calling actions with Execute().
462
463     - Avoid object reference cycles from frame objects.
464
465     - Reduce memory usage from Null Executor objects.
466
467     - Compute MD5 checksums of large files without reading the entire
468       file contents into memory.  Add a new --md5-chunksize option to
469       control the size of each chunk read into memory.
470
471   From Steven Knight:
472
473     - Fix the ability of the add_src_builder() method to add a new
474       source builder to any other builder.
475
476     - Avoid an infinite loop on non-Windows systems trying to find the
477       SCons library directory if the Python library directory does not
478       begin with the string "python".
479
480     - Search for the SCons library directory in "scons-local" (with
481       no version number) after "scons-local-{VERSION}".
482
483   From Rob Managan:
484
485     - Fix the user's ability to interrupt the TeX build chain.
486
487     - Fix the TeX builder's allowing the user to specify the target name,
488       instead of always using its default output name based on the source.
489
490     - Iterate building TeX output files until all warning are gone
491       and the auxiliary files stop changing, or until we reach the
492       (configurable) maximum number of retries.
493
494     - Add TeX scanner support for:  glossaries, nomenclatures, lists of
495       figures, lists of tables, hyperref and beamer.
496
497     - Use the $BIBINPUTS, $BSTINPUTS, $TEXINPUTS and $TEXPICTS construction
498       variables as search paths for the relevant types of input file.
499
500     - Fix building TeX with VariantDir(duplicate=0) in effect.
501
502     - Fix the LaTeX scanner to search for graphics on the TEXINPUTS path.
503
504     - Have the PDFLaTeX scanner search for .gif files as well.
505
506   From Greg Noel:
507
508     - Fix typos and format bugs in the man page.
509
510     - Add a first draft of a wrapper module for Python's subprocess
511       module.
512
513     - Refactor use of the SCons.compat module so other modules don't
514       have to import it individually.
515
516     - Add .sx as a suffix for assembly language files that use the
517       C preprocessor.
518
519   From Gary Oberbrunner:
520
521     - Make Glob() sort the returned list of Files or Nodes
522       to prevent spurious rebuilds.
523
524     - Add a delete_existing keyword argument to the AppendENVPath()
525       and PrependENVPath() Environment methods.
526
527     - Add ability to use "$SOURCE" when specifying a target to a builder
528
529   From Damyan Pepper:
530
531     - Add a test case to verify that SConsignFile() files can be
532       created in previously non-existent subdirectories.
533
534   From Jim Randall:
535
536     - Make the subdirectory in which the SConsignFile() file will
537       live, if the subdirectory doesn't already exist.
538
539   From Ali Tofigh:
540
541     - Add a test to verify duplication of files in VariantDir subdirectories.
542
543
544
545 RELEASE 1.0.1 - Sat, 06 Sep 2008 07:29:34 -0700
546
547   From Greg Noel:
548
549     - Add a FindFile() section to the User's Guide.
550
551     - Fix the FindFile() documentation in the man page.
552
553     - Fix formatting errors in the Package() description in the man page.
554
555     - Escape parentheses that appear within variable names when spawning
556       command lines using os.system().
557
558
559
560 RELEASE 1.0.0 - XXX
561
562   From Jared Grubb:
563
564     - Clear the Node state when turning a generic Entry into a Dir.
565
566   From Ludwig Hähne:
567
568     - Fix sporadic output-order failures in test/GetBuildFailures/parallel.py.
569
570     - Document the ParseDepends() function in the User's Guide.
571
572   From khomenko:
573
574     - Create a separate description and long_description for RPM packages.
575
576   From Steven Knight:
577
578     - Document the GetLaunchDir() function in the User's Guide.
579
580     - Have the env.Execute() method print an error message if the
581       executed command fails.
582
583     - Add a script for creating a standard SCons development system on
584       Ubuntu Hardy.  Rewrite subsidiary scripts for install Python and
585       SCons versions in Python (from shell).
586
587   From Greg Noel:
588
589     - Handle yacc/bison on newer Mac OS X versions creating file.hpp,
590       not file.cpp.h.
591
592     - In RPCGEN tests, ignore stderr messages from older versions of
593       rpcgen on some versions of Mac OS X.
594    
595     - Fix typos in man page descriptions of Tag() and Package(), and in
596       the scons-time man page.
597
598     - Fix documentation of SConf.CheckLibWithHeader and other SConf methods.
599
600     - Update documentation of SConscript(variant_dir) usage.
601
602     - Fix SWIG tests for (some versions of) Mac OS X.
603
604   From Jonas Olsson:
605
606     - Print the warning about -j on Windows being potentially unreliable if
607       the pywin32 extensions are unavailable or lack file handle operations.
608
609   From Jim Randall:
610
611     - Fix the env.WhereIs() method to expand construction variables.
612
613   From Rogier Schouten:
614
615     - Enable building of shared libraries with the Bordand ilink32 linker.
616
617
618
619 RELEASE 1.0.0 - Sat, 09 Aug 2008 12:19:44 -0700
620
621   From Luca Falavigna:
622
623     - Fix SCons man page indentation under Debian's man page macros.
624
625   From Steven Knight:
626
627     - Clarify the man page description of the SConscript(src_dir) argument.
628
629     - User's Guide updates:
630
631        -  Document the BUILD_TARGETS, COMMAND_LINE_TARGETS and
632           DEFAULT_TARGETS variables.
633
634        -  Document the AddOption(), GetOption() and SetOption() functions.
635
636        -  Document the Requires() function; convert to the Variables
637           object, its UnknownOptions() method, and its associated
638           BoolVariable(), EnumVariable(), ListVariable(), PackageVariable()
639           and PathVariable() functions.
640           
641        -  Document the Progress() function.
642
643        -  Reorganize the chapter and sections describing the different
644           types of environments and how they interact.  Document the
645           SetDefault() method.  Document the PrependENVPath() and
646           AppendENVPath() functions.
647
648        -  Reorganize the command-line arguments chapter.  Document the
649           ARGLIST variable.
650
651        -  Collect some miscellaneous sections into a chapter about
652           configuring build output.
653
654     - Man page updates:
655
656        -  Document suggested use of the Visual C/C++ /FC option to fix
657           the ability to double-click on file names in compilation error
658           messages.
659
660        -  Document the need to use Clean() for any SideEffect() files that
661           must be explicitly removed when their targets are removed.
662
663        -  Explicitly document use of Node lists as input to Dependency().
664
665   From Greg Noel:
666
667     - Document MergeFlags(), ParseConfig(), ParseFlags() and SideEffect()
668       in the User's Guide.
669
670   From Gary Oberbrunner:
671
672     - Document use of the GetBuildFailures() function in the User's Guide.
673
674   From Adam Simpkins:
675
676     - Add man page text clarifying the behavior of AddPreAction() and
677       AddPostAction() when called with multiple targets.
678
679   From Alexey Zezukin:
680
681     - Fix incorrectly swapped man page descriptions of the --warn= options
682       for duplicate-environment and missing-sconscript.
683
684
685
686 RELEASE 0.98.5 - Sat, 07 Jun 2008 08:20:35 -0700
687
688   From Benoit Belley:
689
690   - Fix the Intel C++ compiler ABI specification for EMT64 processors.
691
692   From David Cournapeau:
693
694   - Issue a (suppressable) warning, not an error, when trying to link
695     C++ and Fortran object files into the same executable.
696
697   From Steven Knight:
698
699   - Update the scons.bat file so that it returns the real exit status
700     from SCons, even though it uses setlocal + endlocal.
701
702   - Fix the --interactive post-build messages so it doesn't get stuck
703     mistakenly reporting failures after any individual build fails.
704
705   - Fix calling File() as a File object method in some circumstances.
706
707   - Fix setup.py installation on Mac OS X so SCons gets installed
708     under /usr/lcoal by default, not in the Mac OS X Python framework.
709
710
711
712 RELEASE 0.98.4 - Sat, 17 May 2008 22:14:46 -0700
713
714   From Benoit Belley:
715
716   - Fix calculation of signatures for Python function actions with
717     closures in Python versions before 2.5.
718
719   From David Cournapeau:
720
721   - Fix the initialization of $SHF77FLAGS so it includes $F77FLAGS.
722
723   From Jonas Olsson:
724
725   - Fix a syntax error in the Intel C compiler support on Windows.
726
727   From Steven Knight:
728
729   - Change how we represent Python Value Nodes when printing and when
730     stored in .sconsign files (to avoid blowing out memory by storing
731     huge strings in .sconsign files after multiple runs using Configure
732     contexts cause the Value strings to be re-escaped each time).
733
734   - Fix a regression in not executing configuration checks after failure
735     of any configuration check that used the same compiler or other tool.
736
737   - Handle multiple destinations in Visual Studio 8 settings for the
738     analogues to the INCLUDE, LIBRARY and PATH variables.
739
740   From Greg Noel:
741
742   - Update man page text for VariantDir().
743
744
745
746 RELEASE 0.98.3 - Tue, 29 Apr 2008 22:40:12 -0700
747
748   From Greg Noel:
749
750   - Fix use of $CXXFLAGS when building C++ shared object files.
751
752   From Steven Knight:
753
754   - Fix a regression when a Builder's source_scanner doesn't select
755     a more specific scanner for the suffix of a specified source file.
756
757   - Fix the Options object backwards compatibility so people can still
758     "import SCons.Options.{Bool,Enum,List,Package,Path}Option" submodules.
759
760   - Fix searching for implicit dependencies when an Entry Node shows up
761     in the search path list.
762
763   From Stefano:
764
765   - Fix expansion of $FORTRANMODDIR in the default Fortran command line(s)
766     when it's set to something like ${TARGET.dir}.
767
768
769
770 RELEASE 0.98.2 - Sun, 20 Apr 2008 23:38:56 -0700
771
772   From Steven Knight:
773
774   - Fix a bug in Fortran suffix computation that would cause SCons to
775     run out of memory on Windows systems.
776
777   - Fix being able to specify --interactive mode command lines with
778     \ (backslash) path name separators on Windows.
779
780   From Gary Oberbrunner:
781
782   - Document Glob() in the User's Guide.
783
784
785
786 RELEASE 0.98.1 - Fri, 18 Apr 2008 19:11:58 -0700
787
788   From Benoit Belley:
789
790   - Speed up the SCons.Util.to_string*() functions.
791
792   - Optimize various Node intialization and calculations.
793
794   - Optimize Executor scanning code.
795
796   - Optimize Taskmaster execution, including dependency-cycle checking.
797
798   - Fix the --debug=stree option so it prints its tree once, not twice.
799
800   From Johan BoulÃ:
801
802   - Fix the ability to use LoadableModule() under MinGW.
803
804   From David Cournapeau:
805
806   - Various missing Fortran-related construction variables have been added.
807
808   - SCons now uses the program specified in the $FORTRAN construction
809     variable to link Fortran object files.
810
811   - Fortran compilers on Linux (Intel, g77 and gfortran) now add the -fPIC
812     option by default when compilling shared objects.
813
814   - New 'sunf77', 'sunf90' and 'sunf95' Tool modules have been added to
815     support Sun Fortran compilers.  On Solaris, the Sun Fortran compilers
816     are used in preference to other compilers by default.
817
818   - Fortran support now uses gfortran in preference to g77.
819
820   - Fortran file suffixes are now configurable through the
821     $F77FILESUFFIXES, $F90FILESUFFIXES, $F95FILESUFFIXES and
822     $FORTRANFILESUFFIXES variables.
823
824   From Steven Knight:
825
826   - Make the -d, -e, -w and --no-print-directory options "Ignored for
827     compatibility."  (We're not going to implement them.)
828
829   - Fix a serious inefficiency in how SCons checks for whether any source
830     files are missing when a Builder call creates many targets from many
831     input source files.
832
833   - In Java projects, make the target .class files depend only on the
834     specific source .java files where the individual classes are defined.
835
836   - Don't store duplicate source file entries  in the .sconsign file so
837     we don't endlessly rebuild the target(s) for no reason.
838
839   - Add a Variables object as the first step towards deprecating the
840     Options object name.  Similarly, add BoolVariable(), EnumVariable(),
841     ListVariable(), PackageVariable() and PathVariable() functions
842     as first steps towards replacing BoolOption(), EnumOption(),
843     ListOption(), PackageOption() and PathOption().
844
845   - Change the options= keyword argument to the Environment() function
846     to variables=, to avoid confusion with SCons command-line options.
847     Continue supporting the options= keyword for backwards compatibility.
848
849   - When $SWIGFLAGS contains the -python flag, expect the generated .py
850     file to be in the same (sub)directory as the target.
851
852   - When compiling C++ files, allow $CCFLAGS settings to show up on the
853     command line even when $CXXFLAGS has been redefined.
854
855   - Fix --interactive with -u/-U/-D when a VariantDir() is used.
856
857   From Anatoly Techtonik:
858
859   - Have the scons.bat file add the script execution directory to its
860     local %PATH% on Windows, so the Python executable can be found.
861
862   From Mike Wake:
863
864   - Fix passing variable names as a list to the Return() function.
865
866   From Matthew Wesley:
867
868   - Add support for the GDC 'D' language compiler.
869
870
871
872 RELEASE 0.98 - Sun, 30 Mar 2008 23:33:05 -0700
873
874   From Benoit Belley:
875
876   - Fix the --keep-going flag so it builds all possible targets even when
877     a later top-level target depends on a child that failed its build.
878
879   - Fix being able to use $PDB and $WINDWOWS_INSERT_MANIFEST together.
880
881   - Don't crash if un-installing the Intel C compiler leaves left-over,
882     dangling entries in the Windows registry.
883
884   - Improve support for non-standard library prefixes and suffixes by
885     stripping all prefixes/suffixes from file name string as appropriate.
886
887   - Reduce the default stack size for -j worker threads to 256 Kbytes.
888     Provide user control over this value by adding --stack-size and
889     --warn=stack-size options, and a SetOption('stack_size') function.
890
891   - Fix a crash on Linux systems when trying to use the Intel C compiler
892     and no /opt/intel_cc_* directories are found.
893
894   - Improve using Python functions as actions by incorporating into
895     a FunctionAction's signature:
896       - literal values referenced by the byte code.
897       - values of default arguments
898       - code of nested functions
899       - values of variables captured by closures
900       - names of referenced global variables and functions
901
902   - Fix the closing message when --clean and --keep-going are both
903     used and no errors occur.
904
905   - Add support for the Intel C compiler on Mac OS X.
906
907   - Speed up reading SConscript files by about 20% (for some
908     configurations) by:  1) optimizing the SCons.Util.is_*() and
909     SCons.Util.flatten() functions; 2) avoiding unnecessary os.stat()
910     calls by using a File's .suffix attribute directly instead of
911     stringifying it.
912
913   From Jérôme Berger:
914
915   - Have the D language scanner search for .di files as well as .d files.
916
917   - Add a find_include_names() method to the Scanner.Classic class to
918     abstract out how included names can be generated by subclasses.
919
920   - Allow the D language scanner to detect multiple modules imported by
921     a single statement.
922
923   From Konstantin Bozhikov:
924
925   - Support expansion of construction variables that contain or refer
926     to lists of other variables or Nodes within expansions like $CPPPATH.
927
928   - Change variable substitution (the env.subst() method) so that an
929     input sequence (list or tuple) is preserved as a list in the output.
930
931   From David Cournapeau:
932
933   - Add a CheckDeclaration() call to configure contexts.
934
935   - Improve the CheckTypeSize() code.
936
937   - Add a Define() call to configure contexts, to add arbitrary #define
938     lines to a generated configure header file.
939
940   - Add a "gfortran" Tool module for the GNU F95/F2003 compiler.
941
942   - Avoid use of -rpath with the Mac OS X linker.
943
944   - Add comment lines to the generated config.h file to describe what
945     the various #define/#undef lines are doing.
946
947   From Steven Knight:
948
949   - Support the ability to subclass the new-style "str" class as input
950     to Builders.
951
952   - Improve the performance of our type-checking by using isinstance()
953     with new-style classes.
954
955   - Fix #include (and other $*PATH variables searches) of files with
956     absolute path names.  Don't die if they don't exist (due to being
957     #ifdef'ed out or the like).
958
959   - Fix --interactive mode when Default(None) is used.
960
961   - Fix --debug=memoizer to work around a bug in base Python 2.2 metaclass
962     initialization (by just not allowing Memoization in Python versions
963     that have the bug).
964
965   - Have the "scons-time time" subcommand handle empty log files, and
966     log files that contain no results specified by the --which option.
967
968   - Fix the max Y of vertical bars drawn by "scons-time --fmt=gnuplot".
969
970   - On Mac OS X, account for the fact that the header file generated
971     from a C++ file will be named (e.g.) file.cpp.h, not file.hpp.
972
973   - Fix floating-point numbers confusing the Java parser about
974     generated .class file names in some configurations.
975
976   - Document (nearly) all the values you can now fetch with GetOption().
977
978   - Fix use of file names containing strings of multiple spaces when
979     using ActionFactory instances like the Copy() or Move() function.
980
981   - Fix a 0.97 regression when using a variable expansion (like
982     $OBJSUFFIX) in a source file name to a builder with attached source
983     builders that match suffix (like Program()+Object()).
984
985   - Have the Java parser recognize generics (surrounded by angle brackets)
986     so they don't interfere with identifying anonymous inner classes.
987
988   - Avoid an infinite loop when trying to use saved copies of the
989     env.Install() or env.InstallAs() after replacing the method
990     attributes.
991
992   - Improve the performance of setting construction variables.
993
994   - When cloning a construction environment, avoid over-writing an
995     attribute for an added method if the user explicitly replaced it.
996
997   - Add a warning about deprecated support for Python 1.5, 2.0 and 2.1.
998
999   - Fix being able to SetOption('warn', ...) in SConscript files.
1000
1001   - Add a warning about env.Copy() being deprecated.
1002
1003   - Add warnings about the --debug={dtree,stree,tree} options
1004     being deprecated.
1005
1006   - Add VariantDir() as the first step towards deprecating BuildDir().
1007     Add the keyword argument "variant_dir" as the replacement for
1008     "build_dir".
1009
1010   - Add warnings about the {Target,Source}Signatures() methods and
1011     functions being deprecated.
1012
1013   From Rob Managan:
1014
1015   - Enhance TeX and LaTeX support to work with BuildDir(duplicate=0).
1016
1017   - Re-run LaTeX when it issues a package warning that it must be re-run.
1018
1019   From Leanid Nazdrynau:
1020
1021   - Have the Copy() action factory preserve file modes and times
1022     when copying individual files.
1023
1024   From Jan Nijtmans:
1025
1026   - If $JARCHDIR isn't set explicitly, use the .java_classdir attribute
1027     that was set when the Java() Builder built the .class files.
1028
1029   From Greg Noel:
1030
1031   - Document the Dir(), File() and Entry() methods of Dir and File Nodes.
1032
1033   - Add the parse_flags option when creating Environments
1034
1035   From Gary Oberbrunner:
1036
1037   - Make File(), Dir() and Entry() return a list of Nodes when passed
1038     a list of names, instead of trying to make a string from the name
1039     list and making a Node from that string.
1040
1041   - Fix the ability to build an Alias in --interactive mode.
1042
1043   - Fix the ability to hash the contents of actions for nested Python
1044     functions on Python versions where the inability to pickle them
1045     returns a TypeError (instead of the documented PicklingError).
1046
1047   From Jonas Olsson:
1048
1049   - Fix use of the Intel C compiler when the top compiler directory,
1050     but not the compiler version, is specified.
1051
1052   - Handle Intel C compiler network license files (port@system).
1053
1054   From Jim Randall:
1055
1056   - Fix how Python Value Nodes are printed in --debug=explain output.
1057
1058   From Adam Simpkins:
1059
1060   - Add a --interactive option that starts a session for building (or
1061     cleaning) targets without re-reading the SConscript files every time.
1062
1063   - Fix use of readline command-line editing in --interactive mode.
1064
1065   - Have the --interactive mode "build" command with no arguments
1066     build the specified Default() targets.
1067
1068   - Fix the Chmod(), Delete(), Mkdir() and Touch() Action factories to
1069     take a list (of Nodes or strings) as arguments.
1070
1071   From Vaclav Smilauer:
1072
1073   - Fix saving and restoring an Options value of 'all' on Python
1074     versions where all() is a builtin function.
1075
1076   From Daniel Svensson:
1077
1078   - Code correction in SCons.Util.is_List().
1079
1080   From Ben Webb:
1081
1082   - Support the SWIG %module statement with following modifiers in
1083     parenthese (e.g., '%module(directors="1")').
1084
1085
1086
1087 RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600
1088
1089   From Benoit Belley:
1090
1091   - Fix occasional spurious rebuilds and inefficiency when using
1092     --implicit-cache and Builders that produce multiple targets.
1093
1094   - Allow SCons to not have to know about the builders of generated
1095     files when BuildDir(duplicate=0) is used, potentially allowing some
1096     SConscript files to be ignored for smaller builds.
1097
1098   From David Cournapeau:
1099
1100   - Add a CheckTypeSize() call to configure contexts.
1101
1102   From Ken Deeter:
1103
1104   - Make the "contents" of Alias Nodes a concatenation of the children's
1105     content signatures (MD5 checksums), not a concatenation of the
1106     children's contents, to avoid using large amounts of memory during
1107     signature calculation.
1108
1109   From Malte Helmert:
1110
1111   - Fix a lot of typos in the man page and User's Guide.
1112
1113   From Geoffrey Irving:
1114
1115   - Speed up conversion of paths in .sconsign files to File or Dir Nodes.
1116
1117   From Steven Knight:
1118
1119   - Add an Options.UnknownOptions() method that returns any settings
1120     (from the command line, or whatever dictionary was passed in)
1121     that aren't known to the Options object.
1122
1123   - Add a Glob() function.
1124
1125   - When removing targets with the -c option, use the absolute path (to
1126     avoid problems interpreting BuildDir() when the top-level directory
1127     is the source directory).
1128
1129   - Fix problems with Install() and InstallAs() when called through a
1130     clone (of a clone, ...) of a cloned construction environment.
1131
1132   - When executing a file containing Options() settings, add the file's
1133     directory to sys.path (so modules can be imported from there) and
1134     explicity set __name__ to the name of the file so the statement's
1135     in the file can deduce the location if they need to.
1136
1137   - Fix an O(n^2) performance problem when adding sources to a target
1138     through calls to a multi Builder (including Aliases).
1139
1140   - Redefine the $WINDOWSPROGMANIFESTSUFFIX and
1141     $WINDOWSSHLIBMANIFESTSUFFIX variables so they pick up changes to
1142     the underlying $SHLIBSUFFIX and $PROGSUFFIX variables.
1143
1144   - Add a GetBuildFailures() function that can be called from functions
1145     registered with the Python atexit module to print summary information
1146     about any failures encountered while building.
1147
1148   - Return a NodeList object, not a Python list, when a single_source
1149     Builder like Object() is called with more than one file.
1150
1151   - When searching for implicit dependency files in the directories
1152     in a $*PATH list, don't create Dir Nodes for directories that
1153     don't actually exist on-disk.
1154
1155   - Add a Requires() function to allow the specification of order-only
1156     prerequisites, which will be updated before specified "downstream"
1157     targets but which don't actually cause the target to be rebuilt.
1158
1159   - Restore the FS.{Dir,File,Entry}.rel_path() method.
1160
1161   - Make the default behavior of {Source,Target}Signatures('timestamp')
1162     be equivalent to 'timestamp-match', not 'timestamp-newer'.
1163
1164   - Fix use of CacheDir with Decider('timestamp-newer') by updating
1165     the modification time when copying files from the cache.
1166
1167   - Fix random issues with parallel (-j) builds on Windows when Python
1168     holds open file handles (especially for SCons temporary files,
1169     or targets built by Python function actions) across process creation.
1170
1171   From Maxim Kartashev:
1172
1173   - Fix test scripts when run on Solaris.
1174
1175   From Gary Oberbrunner:
1176
1177   - Fix Glob() when a pattern is in an explicitly-named subdirectory.
1178
1179   From Philipp Scholl:
1180
1181   - Fix setting up targets if multiple Package builders are specified
1182     at once.
1183
1184
1185
1186 RELEASE 0.97.0d20070918 - Tue, 18 Sep 2007 10:51:27 -0500
1187
1188   From Steven Knight:
1189
1190   - Fix the wix Tool module to handle null entries in $PATH variables.
1191
1192   - Move the documentation of Install() and InstallAs() from the list
1193     of functions to the list of Builders (now that they're implemented
1194     as such).
1195
1196   - Allow env.CacheDir() to be set per construction environment.  The
1197     global CacheDir() function now sets an overridable global default.
1198
1199   - Add an env.Decider() method and a Node.Decider() method that allow
1200     flexible specification of an arbitrary function to decide if a given
1201     dependency has changed since the last time a target was built.
1202
1203   - Don't execute Configure actions (while reading SConscript files)
1204     when cleaning (-c) or getting help (-h or -H).
1205
1206   - Add to each target an implicit dependency on the external command(s)
1207     used to build the target, as found by searching env['ENV']['PATH']
1208     for the first argument on each executed command line.
1209
1210   - Add support for a $IMPLICIT_COMMAND_DEPENDENCIES construction
1211     variabe that can be used to disable the automatic implicit
1212     dependency on executed commands.
1213
1214   - Add an "ensure_suffix" keyword to Builder() definitions that, when
1215     true, will add the configured suffix to the targets even if it looks
1216     like they already have a different suffix.
1217
1218   - Add a Progress() function that allows for calling a function or string
1219     (or list of strings) to display progress while walking the DAG.
1220
1221   - Allow ParseConfig(), MergeFlags() and ParseFlags() to handle output
1222     from a *config command with quoted path names that contain spaces.
1223
1224   - Make the Return() function stop processing the SConscript file and
1225     return immediately.  Add a "stop=" keyword argument that can be set
1226     to False to preserve the old behavior.
1227
1228   - Fix use of exitstatfunc on an Action.
1229
1230   - Introduce all man page function examples with "Example:" or "Examples:".
1231
1232   - When a file gets added to a directory, make sure the directory gets
1233     re-scanned for the new implicit dependency.
1234
1235   - Fix handling a file that's specified multiple times in a target
1236     list so that it doesn't cause dependent Nodes to "disappear" from
1237     the dependency graph walk.
1238
1239   From Carsten Koch:
1240
1241   - Avoid race conditions with same-named files and directory creation
1242     when pushing copies of files to CacheDir().
1243
1244   From Tzvetan Mikov:
1245
1246   - Handle $ in Java class names.
1247
1248   From Gary Oberbrunner:
1249
1250   - Add support for the Intel C compiler on Windows64.
1251
1252   - On SGI IRIX, have $SHCXX use $CXX by default (like other platforms).
1253
1254   From Sohail Somani:
1255
1256   - When Cloning a construction environment, set any variables before
1257     applying tools (so the tool module can access the configured settings)
1258     and re-set them after (so they end up matching what the user set).
1259
1260   From Matthias Troffaes:
1261
1262   - Make sure extra auxiliary files generated by some LaTeX packages
1263     and not ending in .aux also get deleted by scons -c.
1264
1265   From Greg Ward:
1266
1267   - Add a $JAVABOOTCLASSPATH variable for directories to be passed to the
1268     javac -bootclasspath option.
1269
1270   From Christoph Wiedemann:
1271
1272   - Add implicit dependencies on the commands used to build a target.
1273
1274
1275
1276
1277 RELEASE 0.97.0d20070809 - Fri, 10 Aug 2007 10:51:27 -0500
1278
1279   From Lars Albertsson:
1280
1281   - Don't error if a #include line happens to match a directory
1282     somewhere on a path (like $CPPPATH, $FORTRANPATH, etc.).
1283
1284   From Mark Bertoglio:
1285
1286   - Fix listing multiple projects in Visual Studio 7.[01] solution files,
1287     including generating individual project GUIDs instead of re-using
1288     the solution GUID.
1289
1290   From Jean Brouwers:
1291
1292   - Add /opt/SUNWspro/bin to the default execution PATH on Solaris.
1293
1294   From Allan Erskine:
1295
1296   - Only expect the Microsoft IDL compiler to emit *_p.c and *_data.c
1297     files if the /proxy and /dlldata switches are used (respectively).
1298
1299   From Steven Knight:
1300
1301   - Have --debug=explain report if a target is being rebuilt because
1302     AlwaysBuild() is specified (instead of "unknown reasons").
1303
1304   - Support {Get,Set}Option('help') to make it easier for SConscript
1305     files to tell if a help option (-h, --help, etc.) has been specified.
1306
1307   - Support {Get,Set}Option('random') so random-dependency interaction
1308     with CacheDir() is controllable from SConscript files.
1309
1310   - Add a new AddOption() function to support user-defined command-
1311     line flags (like --prefix=, --force, etc.).
1312
1313   - Push and retrieve built symlinks to/from a CacheDir() as actual
1314     symlinks, not by copying the file contents.
1315
1316   - Fix how the Action module handles stringifying the shared library
1317     generator in the Tool/mingw.py module.
1318
1319   - When generating a config.h file, print "#define HAVE_{FEATURE} 1"
1320     instad of just "#define HAVE_{FEATURE}", for more compatibility
1321     with Autoconf-style projects.
1322
1323   - Fix expansion of $TARGET, $TARGETS, $SOURCE and $SOURCES keywords in
1324     Visual C/C++ PDB file names.
1325     
1326   - Fix locating Visual C/C++ PDB files in build directories.
1327
1328   - Support an env.AddMethod() method and an AddMethod() global function
1329     for adding a new method, respectively, to a construction environment
1330     or an arbitrary object (such as a class).
1331
1332   - Fix the --debug=time option when the -j option is specified and all
1333     files are up to date.
1334
1335   - Add a $SWIGOUTDIR variable to allow setting the swig -outdir option,
1336     and use it to identify files created by the swig -java option.
1337
1338   - Add a $SWIGPATH variable that specifies the path to be searched
1339     for included SWIG files, Also add related $SWIGINCPREFIX and
1340     $SWIGINCSUFFIX variables that specify the prefix and suffix to
1341     be be added to each $SWIGPATH directory when expanded on the SWIG
1342     command line.
1343
1344   - More efficient copying of construction environments (mostly borrowed
1345     from copy.deepcopy() in the standard Python library).
1346
1347   - When printing --tree=prune output, don't print [brackets] around
1348     source files, only do so for built targets with children.
1349
1350   - Fix interpretation of Builder source arguments when the Builder has
1351     a src_suffix *and* a source_builder and the argument has no suffix.
1352
1353   - Fix use of expansions like ${TARGET.dir} or ${SOURCE.dir} in the
1354     following construction variables:  $FORTRANMODDIR, $JARCHDIR,
1355     $JARFLAGS, $LEXFLAGS, $SWIGFLAGS, $SWIGOUTDIR and $YACCFLAGS.
1356
1357   - Fix dependencies on Java files generated by SWIG so they can be
1358     detected and built in one pass.
1359
1360   - Fix SWIG when used with a BuildDir().
1361
1362   From Leanid Nazdrynau:
1363
1364   - When applying Tool modules after a construction environment has
1365     already been created, don't overwrite existing $CFILESUFFIX and
1366     $CXXFILESUFFIX value.
1367
1368   - Support passing the Java() builder a list of explicit .java files
1369     (not only a list of directories to be scanned for .java files).
1370
1371   - Support passing .java files to the Jar() and JavaH() builders, which
1372     then use the builder underlying the Java() builder to turn them into
1373     .class files.  (That is, the Jar()-Java() chain of builders become
1374     multi-step, like the Program()-Object()-CFile() builders.)
1375
1376   - Support passing SWIG .i files to the Java builders (Java(),
1377     Jar(), JavaH()), to cause intermediate .java files to be created
1378     automatically.
1379
1380   - Add $JAVACLASSPATH and $JAVASOURCEPATH variables, that get added to
1381     the javac "-classpath" and "-sourcepath" options.  (Note that SCons
1382     does *not* currently search these paths for implicit dependencies.)
1383
1384   - Commonize initialization of Java-related builders.
1385
1386   From Jan Nijtmans:
1387
1388   - Find Java anonymous classes when the next token after the name is
1389     an open parenthesis.
1390
1391   From Gary Oberbrunner:
1392
1393   - Fix a code example in the man page.
1394
1395   From Tilo Prutz:
1396
1397   - Add support for the file names that Java 1.5 (and 1.6) generates for
1398     nested anonymous inner classes, which are different from Java 1.4.
1399
1400   From Adam Simpkins:
1401
1402   - Allow worker threads to terminate gracefully when all jobs are
1403     finished.
1404
1405   From Sohail Somani:
1406
1407   - Add LaTeX scanner support for finding dependencies specified with
1408     the \usepackage{} directive.
1409
1410
1411
1412 RELEASE 0.97 - Thu, 17 May 2007 08:59:41 -0500
1413
1414   From Steven Knight:
1415
1416   - Fix a bug that would make parallel builds stop in their tracks if
1417     Nodes that depended on lists that contained some Nodes built together
1418     caused the reference count to drop below 0 if the Nodes were visited
1419     and commands finished in the wrong order.
1420
1421   - Make sure the DirEntryScanner doesn't choke if it's handed something
1422     that's not a directory (Node.FS.Dir) Node.
1423
1424
1425
1426 RELEASE 0.96.96 - Thu, 12 Apr 2007 12:36:25 -0500
1427
1428   NOTE:  This is (Yet) a(nother) pre-release of 0.97 for testing purposes.
1429
1430   From Joe Bloggs:
1431
1432   - Man page fix:  remove cut-and-paste sentence in NoCache() description.
1433
1434   From Dmitry Grigorenko and Gary Oberbrunner:
1435
1436   - Use the Intel C++ compiler, not $CC, to link C++ source.
1437
1438   From Helmut Grohne:
1439
1440   - Fix the man page example of propagating a user's external environment.
1441
1442   From Steven Knight:
1443
1444   - Back out (most of) the Windows registry installer patch, which
1445     seems to not work on some versions of Windows.
1446
1447   - Don't treat Java ".class" attributes as defining an inner class.
1448
1449   - Fix detecting an erroneous Java anonymous class when the first
1450     non-skipped token after a "new" keyword is a closing brace.
1451
1452   - Fix a regression when a CPPDEFINES list contains a tuple, the second
1453     item of which (the option value) is a construction variable expansion
1454     (e.g. $VALUE) and the value of the variable isn't a string.
1455
1456   - Improve the error message if an IOError (like trying to read a
1457     directory as a file) occurs while deciding if a node is up-to-date.
1458
1459   - Fix "maximum recursion" / "unhashable type" errors in $CPPPATH
1460     PathList expansion if a subsidiary expansion yields a stringable,
1461     non-Node object.
1462
1463   - Generate API documentation from the docstrings (using epydoc).
1464
1465   - Fix use of --debug=presub with Actions for out-of-the-box Builders.
1466
1467   - Fix handling nested lists within $CPPPATH, $LIBPATH, etc.
1468
1469   - Fix a "builders_used" AttributeError that real-world Qt initialization
1470     triggered in the refactored suffix handling for Builders.
1471
1472   - Make the reported --debug=time timings meaningful when used with -j.
1473     Better documentation of what the times mean.
1474
1475   - User Guide updates: --random, AlwaysBuild(), --tree=,
1476     --debug=findlibs, --debug=presub, --debug=stacktrace,
1477     --taskmastertrace.
1478
1479   - Document (in both man page and User's Guide) that --implicit-cache
1480     ignores changes in $CPPPATH, $LIBPATH, etc.
1481
1482   From Jean-Baptiste Lab:
1483
1484   - Remove hard-coded dependency on Python 2.2 from Debian packaging files.
1485
1486   From Jeff Mahovsky:
1487
1488   - Handle spaces in the build target name in Visual Studio project files.
1489
1490   From Rob Managan:
1491
1492   - Re-run LaTeX after BibTeX has been re-run in response to a changed
1493     .bib file.
1494
1495   From Joel B. Mohler:
1496
1497   - Make additional TeX auxiliary files (.toc, .idx and .bbl files)
1498     Precious so their removal doesn't affect whether the necessary
1499     sections are included in output PDF or PostScript files.
1500
1501   From Gary Oberbrunner:
1502
1503   - Fix the ability to import modules in the site_scons directory from
1504     a subdirectory.
1505
1506   From Adam Simpkins:
1507
1508   - Make sure parallel (-j) builds all targets even if they show up
1509     multiple times in the child list (as a source and a dependency).
1510
1511   From Matthias Troffaes:
1512
1513   - Don't re-run TeX if the triggering strings (\makeindex, \bibliography
1514     \tableofcontents) are commented out.
1515
1516   From Richard Viney:
1517
1518   - Fix use of custom include and lib paths with Visual Studio 8.
1519
1520   - Select the default .NET Framework SDK Dir based on the version of
1521     Visual Studio being used.
1522
1523
1524
1525 RELEASE 0.96.95 - Mon, 12 Feb 2007 20:25:16 -0600
1526
1527   From Anatoly:
1528
1529   - Add the scons.org URL and a package description to the setup.py
1530     arguments.
1531
1532   - Have the Windows installer add a registry entry for scons.bat in the
1533     "App Paths" key, so scons.bat can be executed without adding the
1534     directory to the %PATH%.  (Python itself works this way.)
1535
1536   From Anonymous:
1537
1538   - Fix looking for default paths in Visual Studio 8.0 (and later).
1539
1540   - Add -lm to the list of default D libraries for linking.
1541
1542   From Matt Doar:
1543
1544   - Provide a more complete write-your-own-Scanner example in the man page.
1545
1546   From Ralf W. Grosse-Kunstleve:
1547
1548   - Contributed upstream Python change to our copied subprocess.py module
1549     for more efficient standard input processing.
1550
1551   From Steven Knight:
1552
1553   - Fix the Node.FS.Base.rel_path() method when the two nodes are on
1554     different drive letters.  (This caused an infinite loop when
1555     trying to write .sconsign files.)
1556
1557   - Fully support Scanners that use a dictionary to map file suffixes
1558     to other scanners.
1559
1560   - Support delayed evaluation of the $SPAWN variable to allow selection
1561     of a function via ${} string expansions.
1562
1563   - Add --srcdir as a synonym for -Y/--repository.
1564
1565   - Document limitations of #include "file.h" with Repository().
1566
1567   - Fix use of a toolpath under the source directory of a BuildDir().
1568
1569   - Fix env.Install() with a file name portion that begins with '#'.
1570
1571   - Fix ParseConfig()'s handling of multiple options in a string that's
1572     replaced a *FLAGS construction variable.
1573
1574   - Have the C++ tools initialize common C compilation variables ($CCFLAGS,
1575     $SHCCFLAGS and $_CCCOMCOM) even if the 'cc' Tool isn't loaded.
1576
1577   From Leanid Nazdrynau:
1578
1579   - Fix detection of Java anonymous classes if a newline precedes the
1580     opening brace.
1581
1582   From Gary Oberbrunner:
1583
1584   - Document use of ${} to execute arbitrary Python code.
1585
1586   - Add support for:
1587     1) automatically adding a site_scons subdirectory (in the top-level
1588        SConstruct directory) to sys.path (PYTHONPATH);
1589     2) automatically importing site_scons/site_init.py;
1590     3) automatically adding site_scons/site_tools to the toolpath.
1591
1592   From John Pye:
1593
1594   - Change ParseConfig() to preserve white space in arguments passed in
1595     as a list.
1596
1597   From a smith:
1598
1599   - Fix adding explicitly-named Java inner class files (and any
1600     other file names that may contain a '$') to Jar files.
1601
1602   From David Vitek:
1603
1604   - Add a NoCache() function to mark targets as unsuitable for propagating
1605     to (or retrieving from) a CacheDir().
1606
1607   From Ben Webb:
1608
1609   - If the swig -noproxy option is used, it won't generate a .py file,
1610     so don't emit it as a target that we expect to be built.
1611
1612
1613
1614 RELEASE 0.96.94 - Sun, 07 Jan 2007 18:36:20 -0600
1615
1616   NOTE:  This is a pre-release of 0.97 for testing purposes.
1617
1618   From Anonymous:
1619
1620   - Allow arbitrary white space after a SWIG %module declaration.
1621
1622   From Paul:
1623
1624   - When compiling resources under MinGW, make sure there's a space 
1625     between the --include-dir option and its argument.
1626
1627   From Jay Kint:
1628
1629   - Alleviate long command line issues on Windows by executing command
1630     lines directly via os.spawnv() if the command line doesn't need
1631     shell interpretation (has no pipes, redirection, etc.).
1632
1633   From Walter Franzini:
1634
1635   - Exclude additional Debian packaging files from the copyright check.
1636
1637   From Fawad Halim:
1638
1639   - Handle the conflict between the impending Python 2.6 'as' keyword
1640     and our Tool/as.py module name.
1641
1642   From Steven Knight:
1643
1644   - Speed up the Node.FS.Dir.rel_path() method used to generate path names
1645     that get put into the .sconsign* file(s).
1646
1647   - Optimize Node.FS.Base.get_suffix() by computing the suffix once, up
1648     front, when we set the Node's name.  (Duh...)
1649
1650   - Reduce the Memoizer's responsibilities to simply counting hits and
1651     misses when the --debug=memoizer option is used, not to actually
1652     handling the key calculation and memoization itself.  This speeds
1653     up some configurations significantly, and should cause no functional
1654     differences.
1655
1656   - Add a new scons-time script with subcommands for generating
1657     consistent timing output from SCons configurations, extracting
1658     various information from those timings, and displaying them in
1659     different formats.
1660
1661   - Reduce some unnecessary stat() calls from on-disk entry type checks.
1662
1663   - Fix SideEffect() when used with -j, which was badly broken in 0.96.93.
1664
1665   - Propagate TypeError exceptions when evaluating construction variable
1666     expansions up the stack, so users can see what's going on.
1667
1668   - When disambiguating a Node.FS.Entry into a Dir or File, don't look
1669     in the on-disk source directory until we've confirmed there's no
1670     on-disk entry locally and there *is* one in the srcdir.  This avoids
1671     creating a phantom Node that can interfere with dependencies on
1672     directory contents.
1673
1674   - Add an AllowSubstExceptions() function that gives the SConscript
1675     files control over what exceptions cause a string to expand to ''
1676     vs. terminating processing with an error.
1677
1678   - Allow the f90.py and f95.py Tool modules to compile earlier source
1679     source files of earlier Fortran version.
1680
1681   - Fix storing signatures of files retrieved from CacheDir() so they're
1682     correctly identified as up-to-date next invocation.
1683
1684   - Make sure lists of computed source suffixes cached by Builder objects
1685     don't persist across changes to the list of source Builders (so the
1686     addition of suffixes like .ui by the qt.py Tool module take effect).
1687
1688   - Enhance the bootstrap.py script to allow it to be used to execute
1689     SCons more easily from a checked-out source tree.
1690
1691   From Ben Leslie:
1692
1693   - Fix post-Memoizer value caching misspellings in Node.FS._doLookup().
1694
1695   From Rob Managan, Dmitry Mikhin and Joel B. Mohler:
1696
1697   - Handle TeX/LaTeX files in subdirectories by changing directory
1698     before invoking TeX/LaTeX.
1699
1700   - Scan LaTeX files for \bibliography lines.
1701
1702   - Support multiple file names in a "\bibliography{file1,file2}" string.
1703
1704   - Handle TeX warnings about undefined citations.
1705
1706   - Support re-running LaTeX if necessary due to a Table of Contents.
1707
1708   From Dmitry Mikhin:
1709
1710   - Return LaTeX if "Rerun to get citations correct" shows up on the next
1711     line after the "Warning:" string.
1712
1713   From Gary Oberbrunner:
1714
1715   - Add #include lines to fix portability issues in two tests.
1716
1717   - Eliminate some unnecessary os.path.normpath() calls.
1718
1719   - Add a $CFLAGS variable for C-specific options, leaving $CCFLAGS
1720     for options common to C and C++.
1721
1722   From Tom Parker:
1723
1724   - Have the error message print the missing file that Qt can't find.
1725
1726   From John Pye:
1727
1728   - Fix env.MergeFlags() appending to construction variable value of None.
1729
1730   From Steve Robbins:
1731
1732   - Fix the "sconsign" script when the .sconsign.dblite file is explicitly
1733     specified on the command line (and not intuited from the old way of
1734     calling it with just ".sconsign").
1735
1736   From Jose Pablo Ezequiel "Pupeno" Fernandez Silva:
1737
1738   - Give the 'lex' tool knowledge of the additional target files produced
1739     by the flex "--header-file=" and "--tables-file=" options.
1740
1741   - Give the 'yacc' tool knowledge of the additional target files produced
1742     by the bison "-g", "--defines=" and "--graph=" options.
1743
1744   - Generate intermediate files with Objective C file suffixes (.m) when
1745     the lex and yacc source files have appropriate suffixes (.lm and .ym).
1746
1747   From Sohail Somain:
1748
1749   - Have the mslink.py Tool only look for a 'link' executable on Windows
1750     systems.
1751
1752   From Vaclav Smilauer:
1753
1754   - Add support for a "srcdir" keyword argument when calling a Builder,
1755     which will add a srcdir prefix to all non-relative string sources.
1756
1757   From Jonathan Ultis:
1758
1759   - Allow Options converters to take the construction environment as
1760     an optional argument.
1761
1762
1763
1764 RELEASE 0.96.93 - Mon, 06 Nov 2006 00:44:11 -0600
1765
1766   NOTE:  This is a pre-release of 0.97 for testing purposes.
1767
1768   From Anonymous:
1769
1770   - Allow Python Value Nodes to be Builder targets.
1771
1772   From Matthias:
1773
1774   - Only filter Visual Studio common filename prefixes on complete
1775     directory names.
1776
1777   From Chad Austin:
1778
1779   - Fix the build of the SCons documentation on systems that don't
1780     have "python" in the $PATH.
1781
1782   From Ken Boortz:
1783
1784   - Enhance ParseConfig() to recognize options that begin with '+'.
1785
1786   From John Calcote, Elliot Murphy:
1787
1788   - Document ways to override the CCPDBFLAGS variable to use the
1789     Microsoft linker's /Zi option instead of the default /Z7.
1790
1791   From Christopher Drexler:
1792
1793   - Make SCons aware bibtex must be called if any \include files
1794     cause creation of a bibliography.
1795
1796   - Make SCons aware that "\bilbiography" in TeX source files means
1797     that related .bbl and .blg bibliography files will be created.
1798     (NOTE:  This still needs to search for the string in \include files.)
1799
1800   From David Gruener:
1801
1802   - Fix inconsistent handling of Action strfunction arguments.
1803
1804   - Preserve white space in display Action strfunction strings.
1805
1806   From James Y. Knight and Gerard Patel:
1807
1808   - Support creation of shared object files from assembly language.
1809
1810   From Steven Knight:
1811
1812   - Speed up the Taskmaster significantly by avoiding unnecessary
1813     re-scans of Nodes to find out if there's work to be done, having it
1814     track the currently-executed top-level target directly and not
1815     through its presence on the target list, and eliminating some other
1816     minor list(s), method(s) and manipulation.
1817
1818   - Fix the expansion of $TARGET and $SOURCE in the expansion of
1819     $INSTALLSTR displayed for non-environment calls to InstallAs().
1820
1821   - Fix the ability to have an Alias() call refer to a directory
1822     name that's not identified as a directory until later.
1823
1824   - Enhance runtest.py with an option to use QMTest as the harness.
1825     This will become the default behavior as we add more functionality
1826     to the QMTest side.
1827
1828   - Let linking on mingw use the default function that chooses $CC (gcc)
1829     or $CXX (g++) depending on whether there are any C++ source files.
1830
1831   - Work around a bug in early versions of the Python 2.4 profile module
1832     that caused the --profile= option to fail.
1833
1834   - Only call Options validators and converters once when initializing a
1835     construction environment.
1836
1837   - Fix the ability of env.Append() and env.Prepend(), in all known Python
1838     versions, to handle different input value types when the construction
1839     variable being updated is a dictionary.
1840
1841   - Add a --cache-debug option for information about what files it's
1842     looking for in a CacheDir().
1843
1844   - Document the difference in construction variable expansion between
1845     {Action,Builder}() and env.{Action,Builder}().
1846
1847   - Change the name of env.Copy() to env.Clone(), keeping the old name
1848     around for backwards compatibility (with the intention of eventually
1849     phasing it out to avoid confusion with the Copy() Action factory).
1850
1851   From Arve Knudsen:
1852
1853   - Support cleaning and scanning SWIG-generated files.
1854
1855   From Carsten Koch:
1856
1857   - Allow selection of Visual Studio version by setting $MSVS_VERSION
1858     after construction environment initialization.
1859
1860   From Jean-Baptiste Lab:
1861
1862   - Try using zipimport if we can't import Tool or Platform modules
1863     using the normal "imp" module.  This allows SCons to be packaged
1864     using py2exe's all-in-one-zip-file approach.
1865
1866   From Ben Liblit:
1867
1868   - Do not re-scan files if the scanner returns no implicit dependencies.
1869
1870   From Sanjoy Mahajan:
1871
1872   - Change use of $SOURCES to $SOURCE in all TeX-related Tool modules.
1873
1874   From Joel B. Mohler:
1875
1876   - Make SCons aware that "\makeindex" in TeX source files means that
1877     related .ilg, .ind and .idx index files will be created.
1878     (NOTE:  This still needs to search for the string in \include files.)
1879
1880   - Prevent scanning the TeX .aux file for additional files from
1881     trying to remove it twice when the -c option is used.
1882
1883   From Leanid Nazdrynau:
1884
1885   - Give the MSVC RES (resource) Builder a src_builder list and a .rc
1886     src_suffix so other builders can generate .rc files.
1887
1888   From Matthew A. Nicholson:
1889
1890   - Enhance Install() and InstallAs() to handle directory trees as sources.
1891
1892   From Jan Nijtmans:
1893
1894   - Don't use the -fPIC flag when using gcc on Windows (e.g. MinGW).
1895
1896   From Greg Noel:
1897
1898   - Add an env.ParseFlags() method that provides separate logic for
1899     parsing GNU tool chain flags into a dictionary.
1900     
1901   - Add an env.MergeFlags() method to apply an arbitrary dictionary
1902     of flags to a construction environment's variables.
1903
1904   From Gary Oberbrunner:
1905
1906   - Fix parsing tripartite Intel C compiler version numbers on Linux.
1907
1908   - Extend the ParseConfig() function to recognize -arch and
1909     -isysroot options.
1910
1911   - Have the error message list the known suffixes when a Builder call
1912     can't build a source file with an unknown suffix.
1913
1914   From Karol Pietrzak:
1915
1916   - Avoid recursive calls to main() in the program snippet used by the
1917     SConf subsystem to test linking against libraries.  This changes the
1918     default behavior of CheckLib() and CheckLibWithHeader() to print
1919     "Checking for C library foo..." instead of "Checking for main()
1920     in C library foo...".
1921
1922   From John Pye:
1923
1924   - Throw an exception if a command called by ParseConfig() or
1925     ParseFlags() returns an error.
1926
1927   From Stefan Seefeld:
1928
1929   - Initial infrastructure for running SCons tests under QMTest.
1930
1931   From Sohail Somani:
1932
1933   - Fix tests that fail due to gcc warnings.
1934
1935   From Dobes Vandermeer:
1936
1937   - In stack traces, print the full paths of SConscript files.
1938
1939   From Atul Varma:
1940
1941   - Fix detection of Visual C++ Express Edition.
1942
1943   From Dobes Vandermeer:
1944
1945   - Let the src_dir option to the SConscript() function affect all the 
1946     the source file paths, instead of treating all source files paths
1947     as relative to the SConscript directory itself.
1948
1949   From Nicolas Vigier:
1950
1951   - Fix finding Fortran modules in build directories.
1952
1953   - Fix use of BuildDir() when the source file in the source directory
1954     is a symlink with a relative path.
1955
1956   From Edward Wang:
1957
1958   - Fix the Memoizer when the SCons Python modules are executed from
1959     .pyo files at different locations from where they were compiled.
1960
1961   From Johan Zander:
1962
1963   - Fix missing os.path.join() when constructing the $FRAMEWORKSDKDIR/bin.
1964
1965
1966
1967 RELEASE 0.96.92 - Mon, 10 Apr 2006 21:08:22 -0400
1968
1969   NOTE:  This was a pre-release of 0.97 for testing purposes.
1970
1971   From Anonymous:
1972
1973   - Fix the intelc.py Tool module to not throw an exception if the
1974     only installed version is something other than ia32.
1975
1976   - Set $CCVERSION when using gcc.
1977
1978   From Matthias:
1979
1980   - Support generating project and solution files for Microsoft
1981     Visual Studio version 8.
1982
1983   - Support generating more than one project file for a Microsoft
1984     Visual Studio solution file.
1985
1986   - Add support for a support "runfile" parameter to Microsoft
1987     Visual Studio project file creation.
1988
1989   - Put the project GUID, not the solution GUID, in the right spot
1990     in the solution file.
1991
1992   From Erling Andersen:
1993
1994   - Fix interpretation of Node.FS objects wrapped in Proxy instances,
1995     allowing expansion of things like ${File(TARGET)} in command lines.
1996
1997   From Stanislav Baranov:
1998
1999   - Add a separate MSVSSolution() Builder, with support for the
2000     following new construction variables: $MSVSBUILDCOM, $MSVSCLEANCOM,
2001     $MSVSENCODING, $MSVSREBUILDCOM, $MSVSSCONS, $MSVSSCONSCOM,
2002     $MSVSSCONSFLAGS, $MSVSSCONSCRIPT and $MSVSSOLUTIONCOM.
2003
2004   From Ralph W. Grosse-Kunstleve and Patrick Mezard:
2005
2006   - Remove unneceesary (and incorrect) SCons.Util strings on some function
2007     calls in SCons.Util.
2008
2009   From Bob Halley:
2010
2011   - Fix C/C++ compiler selection on AIX to not always use the external $CC
2012     environment variable.
2013
2014   From August Hörandl:
2015
2016   - Add a scanner for \include and \import files, with support for
2017     searching a directory list in $TEXINPUTS (imported from the external
2018     environment).
2019
2020   - Support $MAKEINDEX, $MAKEINDEXCOM, $MAKEINDEXCOMSTR and
2021     $MAKEINDEXFLAGS for generating indices from .idx files.
2022
2023   From Steven Johnson:
2024
2025   - Add a NoClean() Environment method and function to override removal
2026     of targets during a -c clean, including documentation and tests.
2027
2028   From Steven Knight:
2029
2030   - Check for whether files exist on disk by listing the directory
2031     contents, not calling os.path.exists() file by file.  This is
2032     somewhat more efficient in general, and may be significantly
2033     more efficient on Windows.
2034
2035   - Minor speedups in the internal is_Dict(), is_List() and is_String()
2036     functions.
2037
2038   - Fix a signature refactoring bug that caused Qt header files to
2039     get re-generated every time.
2040
2041   - Don't fail when writing signatures if the .sconsign.dblite file is
2042     owned by a different user (e.g. root) from a previous run.
2043
2044   - When deleting variables from stacked OverrideEnvironments, don't
2045     throw a KeyError if we were able to delte the variable from any
2046     Environment in the stack.
2047
2048   - Get rid of the last indentation tabs in the SCons source files and
2049     add -tt to the Python invocations in the packaging build and the
2050     tests so they don't creep back in.
2051
2052   - In Visual Studio project files, put quotes around the -C directory
2053     so everything works even if the path has spaces in it.
2054
2055   - The Intel Fortran compiler uses -object:$TARGET, not "-o $TARGET",
2056     when building object files on Windows.  Have the the ifort Tool
2057     modify the default command lines appropriately.
2058
2059   - Document the --debug=explain option in the man page.  (How did we
2060     miss this?)
2061
2062   - Add a $LATEXRETRIES variable to allow configuration of the number of
2063     times LaTex can be re-called to try to resolve undefined references.
2064
2065   - Change the order of the arguments to Configure.Checklib() to match
2066     the documentation.
2067
2068   - Handle signature calculation properly when the Python function used
2069     for a FunctionAction is an object method.
2070
2071   - On Windows, assume that absolute path names without a drive letter
2072     refer to the drive on which the SConstruct file lives.
2073
2074   - Add /usr/ccs/bin to the end of the the default external execution
2075     PATH on Solaris.
2076
2077   - Add $PKGCHK and $PKGINFO variables for use on Solaris when searching
2078     for the SunPRO C++ compiler.  Make the default value for $PKGCHK
2079     be /usr/sbin/pgkchk (since /usr/sbin isn't usually on the external
2080     execution $PATH).
2081
2082   - Fix a man page example of overriding variables when calling
2083     SharedLibrary() to also set the $LIBSUFFIXES variable.
2084
2085   - Add a --taskmastertrace=FILE option to give some insight on how
2086     the taskmaster decides what Node to build next.
2087
2088   - Changed the names of the old $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
2089     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX construction variables to
2090     new $WINDOWSDEFPREFIX, $WINDOWSDEFSUFFIX, $WINDOWSDLLPREFIX and
2091     $WINDOWSIMPLIBPREFIX construction variables.  The old names are now
2092     deprecated, but preserved for backwards compatibility.
2093
2094   - Fix (?) a runtest.py hang on Windows when the --xml option is used.
2095
2096   - Change the message when an error occurs trying to interact with the
2097     file system to report the target(s) in square brackets (as before) and
2098     the actual file or directory that encountered the error afterwards.
2099
2100   From Chen Lee:
2101
2102   - Add x64 support for Microsoft Visual Studio 8.
2103
2104   From Baptiste Lepilleur:
2105
2106   - Support the --debug=memory option on Windows when the Python version
2107     has the win32process and win32api modules.
2108
2109   - Add support for Visual Studio 2005 Pro.
2110
2111   - Fix portability issues in various tests: test/Case.py,
2112     Test/Java/{JAR,JARCHDIR,JARFLAGS,JAVAC,JAVACFLAGS,JAVAH,RMIC}.py,
2113     test/MSVS/vs-{6.0,7.0,7.1,8.0}-exec.py,
2114     test/Repository/{Java,JavaH,RMIC}.py,
2115     test/QT/{generated-ui,installed,up-to-date,warnings}.py,
2116     test/ZIP/ZIP.py.
2117
2118   - Ignore pkgchk errors on Solaris when searching for the C++ compiler.
2119
2120   - Speed up the SCons/EnvironmentTests.py unit tests.
2121
2122   - Add a --verbose= option to runtest.py to print executed commands
2123     and their output at various levels.
2124
2125   From Christian Maaser:
2126
2127   - Add support for Visual Studio Express Editions.
2128
2129   - Add support for Visual Studio 8 *.manifest files, includng
2130     new $WINDOWS_INSERT_MANIFEST, $WINDOWSPROGMANIFESTSUFFIX,
2131     $WINDOWSPROGMANIFESTPREFIX, $WINDOWSPROGMANIFESTSUFFIX,
2132     $WINDOWSSHLIBMANIFESTPREFIX and $WINDOWSSHLIBMANIFESTSUFFIX
2133     construction variables.
2134
2135   From Adam MacBeth:
2136
2137   - Fix detection of additional Java inner classes following use of a
2138     "new" keyword inside an inner class.
2139
2140   From Sanjoy Mahajan:
2141
2142   - Correct TeX-related command lines to just $SOURCE, not $SOURCES
2143
2144   From Patrick Mezard:
2145
2146   - Execute build commands for a command-line target if any of the
2147     files built along with the target is out of date or non-existent,
2148     not just if the command-line target itself is out of date.
2149
2150   - Fix the -n option when used with -c to print all of the targets
2151     that will be removed for a multi-target Builder call.
2152
2153   - If there's no file in the source directory, make sure there isn't
2154     one in the build directory, too, to avoid dangling files left
2155     over from previous runs when a source file is removed.
2156
2157   - Allow AppendUnique() and PrependUnique() to append strings (and
2158     other atomic objects) to lists.
2159
2160   From Joel B. Mohler:
2161
2162   - Extend latex.py, pdflatex.py, pdftex.py and tex.py so that building
2163     from both TeX and LaTeX files uses the same logic to call $BIBTEX
2164     when it's necessary, to call $MAKEINDEX when it's necessary, and to
2165     call $TEX or $LATEX multiple times to handle undefined references.
2166
2167   - Add an emitter to the various TeX builders so that the generated
2168     .aux and .log files also get deleted by the -c option.
2169
2170   From Leanid Nazdrynau:
2171
2172   - Fix the Qt UIC scanner to work with generated .ui files (by using
2173     the FindFile() function instead of checking by-hand for the file).
2174
2175   From Jan Nieuwenhuizen:
2176
2177   - Fix a problem with interpreting quoted argument lists on command lines.
2178
2179   From Greg Noel:
2180
2181   - Add /sw/bin to the default execution PATH on Mac OS X.
2182
2183   From Kian Win Ong:
2184
2185   - When building a .jar file and there is a $JARCHDIR, put the -C
2186     in front of each .class file on the command line.
2187
2188   - Recognize the Java 1.5 enum keyword.
2189
2190   From Asfand Yar Qazi:
2191
2192   - Add /opt/bin to the default execution PATH on all POSIX platforms
2193     (between /usr/local/bin and /bin).
2194
2195   From Jon Rafkind:
2196
2197   - Fix the use of Configure() contexts from nested subsidiary
2198     SConscript files.
2199
2200   From Christoph Schulz:
2201
2202   - Add support for $CONFIGUREDIR and $CONFIGURELOG variables to control
2203     the directory and logs for configuration tests.
2204
2205   - Add support for a $INSTALLSTR variable.
2206
2207   - Add support for $RANLIBCOM and $RANLIBCOMSTR variables (which fixes
2208     a bug when setting $ARCOMSTR).
2209
2210   From Amir Szekely:
2211
2212   - Add use of $CPPDEFINES to $RCCOM (resource file compilation) on MinGW.
2213
2214   From Erick Tryzelaar:
2215
2216   - Fix the error message when trying to report that a given option is
2217     not gettable/settable from an SConscript file.
2218
2219   From Dobes Vandermeer:
2220
2221   - Add support for SCC and other settings in Microsoft Visual
2222     Studio project and solution files:  $MSVS_PROJECT_BASE_PATH,
2223     $MSVS_PROJECT_GUID, $MSVS_SCC_AUX_PATH, $MSVS_SCC_LOCAL_PATH,
2224     $MSVS_SCC_PROJECT_NAME, $MSVS_SCC_PROVIDER,
2225
2226   - Add support for using a $SCONS_HOME variable (imported from the
2227     external environment, or settable internally) to put a shortened
2228     SCons execution line in the Visual Studio project file.
2229
2230   From David J. Van Maren:
2231
2232   - Only filter common prefixes from source files names in Visual Studio
2233     project files if the prefix is a complete (sub)directory name.
2234
2235   From Thad Ward:
2236
2237   - If $MSVSVERSIONS is already set, don't overwrite it with
2238     information from the registry.
2239
2240
2241
2242 RELEASE 0.96.91 - Thu, 08 Sep 2005 07:18:23 -0400
2243
2244   NOTE:  This was a pre-release of 0.97 for testing purposes.
2245
2246   From Chad Austin:
2247
2248   - Have the environment store the toolpath and re-use it to find Tools
2249     modules during later Copy() or Tool() calls (unless overridden).
2250
2251   - Normalize the directory path names in SConsignFile() database
2252     files so the same signature file can interoperate on Windows and
2253     non-Windows systems.
2254
2255   - Make --debug=stacktrace print a stacktrace when a UserError is thrown.
2256
2257   - Remove an old, erroneous cut-and-paste comment in Scanner/Dir.py.
2258
2259   From Stanislav Baranov:
2260
2261   - Make it possible to support with custom Alias (sub-)classes.
2262
2263   - Allow Builders to take empty source lists when called.
2264
2265   - Allow access to both TARGET and SOURCE in $*PATH expansions.
2266
2267   - Allow SConscript files to modify BUILD_TARGETS.
2268
2269   From Timothee Besset:
2270
2271   - Add support for Objective C/C++ .m and .mm file suffixes (for
2272     Mac OS X).
2273
2274   From Charles Crain
2275
2276   - Fix the PharLap linkloc.py module to use target+source arguments
2277     when calling env.subst().
2278
2279   From Bjorn Eriksson:
2280
2281   - Fix an incorrect Command() keyword argument in the man page.
2282
2283   - Add a $TEMPFILEPREFIX variable to control the prefix or flag used
2284     to pass a long-command-line-execution tempfile to a command.
2285
2286   From Steven Knight:
2287
2288   - Enhanced the SCons setup.py script to install man pages on
2289     UNIX/Linux systems.
2290
2291   - Add support for an Options.FormatOptionHelpText() method that can
2292     be overridden to customize the format of Options help text.
2293
2294   - Add a global name for the Entry class (which had already been
2295     documented).
2296
2297   - Fix re-scanning of generated source files for implicit dependencies
2298     when the -j option is used.
2299
2300   - Fix a dependency problem that caused $LIBS scans to not be added
2301     to all of the targets in a multiple-target builder call, which
2302     could cause out-of-order builds when the -j option is used.
2303
2304   - Store the paths of source files and dependencies in the .sconsign*
2305     file(s) relative to the target's directory, not relative to the
2306     top-level SConstruct directory.  This starts to make it possible to
2307     subdivide the dependency tree arbitrarily by putting an SConstruct
2308     file in every directory and using content signatures.
2309
2310   - Add support for $YACCHFILESUFFIX and $YACCHXXFILESUFFIX variables
2311     that accomodate parser generators that write header files to a
2312     different suffix than the hard-coded .hpp when the -d option is used.
2313
2314   - The default behavior is now to store signature information in a
2315     single .sconsign.dblite file in the top-level SConstruct directory.
2316     The old behavior of a separate .sconsign file in each directory can
2317     be specified by calling SConsignFile(None).
2318
2319   - Remove line number byte codes within the signature calculation
2320     of Python function actions, so that changing the location of an
2321     otherwise unmodified Python function doesn't cause rebuilds.
2322
2323   - Fix AddPreAction() and AddPostAction() when an action has more than
2324     one target file:  attach the actions to the Executor, not the Node.
2325
2326   - Allow the source directory of a BuildDir / build_dir to be outside
2327     of the top-level SConstruct directory tree.
2328
2329   - Add a --debug=nomemoizer option that disables the Memoizer for clearer
2330     looks at the counts and profiles of the underlying function calls,
2331     not the Memoizer wrappers.
2332
2333   - Print various --debug= stats even if we exit early (e.g. using -h).
2334
2335   - Really only use the cached content signature value if the file
2336     is older than --max-drift, not just if --max-drift is set.
2337
2338   - Remove support for conversion from old (pre 0.96) .sconsign formats.
2339
2340   - Add support for a --diskcheck option to enable or disable various
2341     on-disk checks:  that File and Dir nodes match on-disk entries;
2342     whether an RCS file exists for a missing source file; whether an
2343     SCCS file exists for a missing source file.
2344
2345   - Add a --raw argument to the sconsign script, so it can print a
2346     raw representation of each entry's NodeInfo dictionary.
2347
2348   - Add the 'f90' and 'f95' tools to the list of Fortran compilers
2349     searched for by default.
2350
2351   - Add the +Z option by default when compiling shared objects on
2352     HP-UX.
2353
2354   From Chen Lee:
2355
2356   - Handle Visual Studio project and solution files in Unicode.
2357
2358   From Sanjoy Mahajan:
2359
2360   - Fix a bad use of Copy() in an example in the man page, and a
2361     bad regular expression example in the man page and User's Guide.
2362
2363   From Shannon Mann:
2364
2365   - Have the Visual Studio project file(s) echo "Starting SCons" before
2366     executing SCons, mainly to work around a quote-stripping bug in
2367     (some versions of?) the Windows cmd command executor.
2368
2369   From Georg Mischler:
2370
2371   - Remove the space after the -o option when invoking the Borland
2372     BCC compiler; some versions apparently require that the file name
2373     argument be concatenated with the option.
2374
2375   From Leanid Nazdrynau:
2376
2377   - Fix the Java parser's handling of backslashes in strings.
2378
2379   From Greg Noel:
2380
2381   - Add construction variables to support frameworks on Mac OS X:
2382     $FRAMEWORKS, $FRAMEWORKPREFIX, $FRAMEWORKPATH, $FRAMEWORKPATHPREFIX.
2383
2384   - Re-order link lines so the -o option always comes right after the
2385     command name.
2386
2387   From Gary Oberbrunner:
2388
2389   - Add support for Intel C++ beta 9.0 (both 32 and 64 bit versions).
2390
2391   - Document the new $FRAMEWORK* variables for Mac OS X.
2392
2393   From Karol Pietrzak:
2394
2395   - Add $RPATH (-R) support to the Sun linker Tool (sunlink).
2396
2397   - Add a description of env.subst() to the man page.
2398
2399   From Chris Prince:
2400
2401   - Look in the right directory, not always the local directory, for a
2402     same-named file or directory conflict on disk.
2403
2404   - On Windows, preserve the external environment's %SYSTEMDRIVE%
2405     variable, too.
2406
2407   From Craig Scott:
2408
2409   - Have the Fortran module emitter look for Fortan modules to be created
2410     relative to $FORTRANMODDIR, not the top-level directory.
2411
2412   - When saving Options to a file, run default values through the
2413     converter before comparing them with the set values.  This correctly
2414     suppresses Boolean Option values from getting written to the saved
2415     file when they're one of the many synonyms for a default True or
2416     False value.
2417
2418   - Fix the Fortran Scanner's ability to handle a module being used
2419     in the same file in which it is defined.
2420
2421   From Steve-o:
2422
2423   - Add the -KPIC option by default when compiling shared objects on
2424     Solaris.
2425
2426   - Change the default suffix for Solaris objects to .o, to conform to
2427     Sun WorkShop's expectations.  Change the profix to so_ so they can
2428     still be differentiated from static objects in the same directory.
2429
2430   From Amir Szekely:
2431
2432   - When calling the resource compiler on MinGW, add --include-dir and
2433     the source directory so it finds the source file.
2434
2435   - Update EnsureSConsVersion() to support revision numbers.
2436
2437   From Greg Ward:
2438
2439   - Fix a misplaced line in the man page.
2440
2441
2442
2443 RELEASE 0.96.90 - Tue, 15 Feb 2005 21:21:12 +0000
2444
2445   NOTE:  This was a pre-release of 0.97 for testing purposes.
2446
2447   From Anonymous:
2448
2449   - Fix Java parsing to avoid erroneously identifying a new array
2450     of class instances as an anonymous inner class.
2451
2452   - Fix a typo in the man page description of PathIsDirCreate.
2453
2454   From Chad Austin:
2455
2456   - Allow Help() to be called multiple times, appending to the help
2457     text each call.
2458
2459   - Allow Tools found on a toolpath to import Python modules from
2460     their local directory.
2461
2462   From Steve Christensen:
2463
2464   - Handle exceptions from Python functions as build actions.
2465
2466   - Add a set of canned PathOption validators:  PathExists (the default),
2467     PathIsFile, PathIsDir and PathIsDirCreate.
2468
2469   From Matthew Doar:
2470
2471   - Add support for .lex and .yacc file suffixes for Lex and Yacc files.
2472
2473   From Eric Frias:
2474
2475   - Huge performance improvement:  wrap the tuples representing an
2476     include path in an object, so that the time it takes to hash the
2477     path doesn't grow porportionally to the length of the path.
2478
2479   From Gottfried Ganssauge:
2480
2481   - Fix SCons on SuSE/AMD-64 Linux by having the wrapper script also
2482     check for the build engine in the parent directory of the Python
2483     library directory (/usr/lib64 instead of /usr/lib).
2484
2485   From Stephen Kennedy:
2486
2487   - Speed up writing the .sconsign file at the end of a run by only
2488     calling sync() once at the end, not after every entry.
2489
2490   From Steven Knight:
2491
2492   - When compiling with Microsoft Visual Studio, don't include the ATL and
2493     MFC directories in the default INCLUDE and LIB environment variables.
2494
2495   - Remove the following deprecated features:  the ParseConfig()
2496     global function (deprecated in 0.93); the misspelled "validater"
2497     keyword to the Options.Add() method (deprecated in 0.91); the
2498     SetBuildSignatureType(), SetContentSignatureType(), SetJobs() and
2499     GetJobs() global functions (deprecated in 0.14).
2500
2501   - Fix problems with corrupting the .sconsign.dblite file when
2502     interrupting builds by writing to a temporary file and renaming,
2503     not writing the file directly.
2504
2505   - Fix a 0.96 regression where when running with -k, targets built from
2506     walking dependencies later on the command line would not realize
2507     that a dependency had failed an earlier build attempt, and would
2508     try to rebuild the dependent targets.
2509
2510   - Change the final messages when using -k and errors occur from
2511     "{building,cleaning} terminated because of errors" to "done
2512     {building,cleaning} targets (errors occurred during {build,clean})."
2513
2514   - Allow Configure.CheckFunc() to take an optional header argument
2515     (already supported by Conftest.py) to specify text at the top of
2516     the compiled test file.
2517
2518   - Fix the --debug=explain output when a Python function action changed
2519     so it prints a meaningful string, not the binary representation of
2520     the function contents.
2521
2522   - Allow a ListOption's default value(s) to be a Python list of specified
2523     values, not just a string containing a comma-separated list of names.
2524
2525   - Add a ParseDepends() function that will parse up a list of explicit
2526     dependencies from a "make depend" style file.
2527
2528   - Support the ability to change directory when executing an Action
2529     through "chdir" keyword arguments to Action and Builder creation
2530     and calls.
2531
2532   - Fix handling of Action ojects (and other callables that don't match
2533     our calling arguments) in construction variable expansions.
2534
2535   - On Win32, install scons.bat in the Python directory when installing
2536     from setup.py.  (The bdist_wininst installer was already doing this.)
2537
2538   - Fix env.SConscript() when called with a list of SConscipt files.
2539     (The SConscript() global function already worked properly.)
2540
2541   - Add a missing newline to the end of the --debug=explain "unknown
2542     reasons" message.
2543
2544   - Enhance ParseConfig() to work properly for spaces in between the -I,
2545     -L and -l options and their arguments.
2546
2547   - Packaging build fix:  Rebuild the files that are use to report the
2548     --version of SCons whenever the development version number changes.
2549
2550   - Fix the ability to specify a target_factory of Dir() to a Builder,
2551     which the default create-a-directory Builder was interfering with.
2552
2553   - Mark a directory as built if it's created as part of the preparation
2554     for another target, to avoid trying to build it again when it comes
2555     up in the target list.
2556
2557   - Allow a function with the right calling signature to be put directly
2558     in an Environment's BUILDERS dictionary, making for easier creation
2559     and use of wrappers (pseudo-Builders) that call other Builders.
2560
2561   - On Python 2.x, wrap lists of Nodes returned by Builders in a UserList
2562     object that adds a method that makes str() object return a string
2563     with all of the Nodes expanded to their path names.  (Builders under
2564     Python 1.5.2 still return lists to avoid TypeErrors when trying
2565     to extend() list, so Python 1.5.2 doesn't get pretty-printing of Node
2566     lists, but everything should still function.)
2567
2568   - Allow Aliases to have actions that will be executed whenever
2569     any of the expanded Alias targets are out of date.
2570
2571   - Fix expansion of env.Command() overrides within target and
2572     source file names.
2573
2574   - Support easier customization of what's displayed by various default
2575     actions by adding lots of new construction variables: $ARCOMSTR,
2576     $ASCOMSTR, $ASPPCOMSTR, $BIBTEXCOMSTR, $BITKEEPERCOMSTR, $CCCOMSTR,
2577     $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR,
2578     $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR,
2579     $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR,
2580     $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR,
2581     $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR,
2582     $QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
2583     $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
2584     $SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
2585     $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
2586
2587   - Add an optional "map" keyword argument to ListOption() that takes a
2588     dictionary to map user-specified values to legal values from the list
2589     (like EnumOption() already doee).
2590
2591   - Add specific exceptions to try:-except: blocks without any listed,
2592     so that they won't catch and mask keyboard interrupts.
2593
2594   - Make --debug={tree,dtree,stree} print something even when there's
2595     a build failure.
2596
2597   - Fix how Scanners sort the found dependencies so that it doesn't
2598     matter whether the dependency file is in a Repository or not.
2599     This may cause recompilations upon upgrade to this version.
2600
2601   - Make AlwaysBuild() work with Alias and Python value Nodes (making
2602     it much simpler to support aliases like "clean" that just invoke
2603     an arbitrary action).
2604
2605   - Have env.ParseConfig() use AppendUnique() by default to suppress
2606     duplicate entries from multiple calls.  Add a "unique" keyword
2607     argument to allow the old behavior to be specified.
2608
2609   - Allow the library modules imported by an SConscript file to get at
2610     all of the normally-available global functions and variables by saying
2611     "from SCons.Script import *".
2612
2613   - Add a --debug=memoizer option to print Memoizer hit/mass statistics.
2614
2615   - Allow more than one --debug= option to be set at a time.
2616
2617   - Change --debug=count to report object counts before and after
2618     reading SConscript files and before and after building targets.
2619
2620   - Change --debug=memory output to line up the numbers and to better
2621     match (more or less) the headers on the --debug=count columns.
2622
2623   - Speed things up when there are lists of targets and/or sources by
2624     getting rid of some N^2 walks of the lists involved.
2625
2626   - Cache evaluation of LazyActions so we don't create a new object
2627     for each invocation.
2628
2629   - When scanning, don't create Nodes for include files that don't
2630     actually exist on disk.
2631
2632   - Make supported global variables CScanner, DScanner, ProgramScanner and
2633     SourceFileScanner.  Make SourceFileScanner.add_scanner() a supported
2634     part of the public interface.  Keep the old SCons.Defaults.*Scan names
2635     around for a while longer since some people were already using them.
2636
2637   - By default, don't scan directories for on-disk files.  Add a
2638     DirScanner global scanner that can be used in Builders or Command()
2639     calls that want source directory trees scanned for on-disk changes.
2640     Have the Tar() and Zip() Builders use the new DirScanner to preserve
2641     the behavior of rebuilding a .tar or .zip file if any file or
2642     directory under a source tree changes.  Add Command() support for
2643     a source_scanner keyword argument to Command() that can be set to
2644     DirScanner to get this behavior.
2645
2646   - Documentation changes:  Explain that $CXXFLAGS contains $CCFLAGS
2647     by default.  Fix a bad target_factory example in the man page.
2648     Add appendices to the User's Guide to cover the available Tools,
2649     Builders and construction variables.  Comment out the build of
2650     the old Python 10 paper, which doesn't build on all systems and
2651     is old enough at this point that it probably isn't worth the
2652     effort to make it do so.
2653
2654   From Wayne Lee:
2655
2656   - Avoid "maximum recursion limit" errors when removing $(-$) pairs
2657     from long command lines.
2658
2659   From Clive Levinson:
2660
2661   - Make ParseConfig() recognize and add -mno-cygwin to $LINKFLAGS and
2662     $CCFLAGS, and -mwindows to $LINKFLAGS.
2663
2664   From Michael McCracken:
2665
2666   - Add a new "applelink" tool to handle the things like Frameworks and
2667     bundles that Apple has added to gcc for linking.
2668
2669   - Use more appropriate default search lists of linkers, compilers and
2670     and other tools for the 'darwin' platform.
2671
2672   - Add a LoadableModule Builder that builds a bundle on Mac OS X (Darwin)
2673     and a shared library on other systems.
2674
2675   - Improve SWIG tests for use on Mac OS X (Darwin).
2676
2677   From Elliot Murphy:
2678
2679   - Enhance the tests to guarantee persistence of ListOption
2680     values in saved options files.
2681
2682   - Supply the help text when -h is used with the -u, -U or -D options.
2683
2684   From Christian Neeb:
2685
2686   - Fix the Java parser's handling of string definitions to avoid ignoring
2687     subsequent code.
2688
2689   From Han-Wen Nienhuys:
2690
2691   - Optimize variable expansion by:  using the re.sub() method (when
2692     possible); not using "eval" for variables for which we can fetch the
2693     value directory; avoiding slowing substitution logic when there's no
2694     '$' in the string.
2695
2696   From Gary Oberbrunner:
2697
2698   - Add an Environment.Dump() method to print the contents of a
2699     construction environment.
2700
2701   - Allow $LIBS (and similar variables) to contain explicit File Nodes.
2702
2703   - Change ParseConfig to add the found library names directly to the
2704     $LIBS variable, instead of returning them.
2705
2706   - Add ParseConfig() support for the -framework GNU linker option.
2707
2708   - Add a PRINT_CMD_LINE_FUNC construction variable to allow people
2709     to filter (or log) command-line output.
2710
2711   - Print an internal Python stack trace in response to an otherwise
2712     unexplained error when --debug=stacktrace is specified.
2713
2714   - Add a --debug=findlibs option to print what's happening when
2715     the scanner is searching for libraries.
2716
2717   - Allow Tool specifications to be passed a dictionary of keyword
2718     arguments.
2719
2720   - Support an Options default value of None, in which case the variable
2721     will not be added to the construction environment unless it's set
2722     explicitly by the user or from an Options file.
2723
2724   - Avoid copying __builtin__ values into a construction environment's
2725     dictionary when evaluating construction variables.
2726
2727   - Add a new cross-platform intelc.py Tool that can detect and
2728     configure the Intel C++ v8 compiler on both Windows, where it's
2729     named icl, and Linux, where it's named icc.  It also checks that
2730     the directory specified in the Windows registry exists, and sets a
2731     new $INTEL_C_COMPILER_VERSION construction variable to identify the
2732     version being used.  (Niall Douglas contributed an early prototype
2733     of parts of this module.)
2734
2735   - Fix the private Conftest._Have() function so it doesn't change
2736     non-alphanumeric characters to underscores.
2737
2738   - Supply a better error message when a construction variable expansion
2739     has an unknown attribute.
2740
2741   - Documentation changes:  Update the man page to describe use of
2742     filenames or Nodes in $LIBS.
2743
2744   From Chris Pawling:
2745
2746   - Have the linkloc tool use $MSVS_VERSION to select the Microsoft
2747     Visual Studio version to use.
2748
2749   From Kevin Quick:
2750
2751   - Fix the Builder name returned from ListBuilders and other instances
2752     of subclasses of the BuilderBase class.
2753
2754   - Add Builders and construction variables to support rpcgen:
2755     RPCGenClient(), RPCGenHeader(), RPCGenService(), RPCGenXDR(),
2756     $RPCGEN, $RPCGENFLAGS, $RPCGENCLIENTFLAGS, $RPCGENHEADERFLAGS,
2757     $RPCGENSERVICEFLAGS, $RPCGENXDRFLAGS.
2758
2759   - Update the man page to document that prefix and suffix Builder
2760     keyword arguments can be strings, callables or dictionaries.
2761
2762   - Provide more info in the error message when a user tries to build
2763     a target multiple ways.
2764
2765   - Fix Delete() when a file doesn't exist and must_exist=1.  (We were
2766     unintentionally dependent on a bug in versions of the Python shutil.py
2767     module prior to Python 2.3, which would generate an exception for
2768     a nonexistent file even when ignore_errors was set.)
2769
2770   - Only replace a Node's builder with a non-null source builder.
2771
2772   - Fix a stack trace when a suffix selection dictionary is passed
2773     an empty source file list.
2774
2775   - Allow optional names to be attached to Builders, for default
2776     Builders that don't get attached to construction environments.
2777
2778   - Fix problems with Parallel Task Exception handling.
2779
2780   - Build targets in an associated BuildDir even if there are targets
2781     or subdirectories locally in the source directory.
2782
2783   - If a FunctionAction has a callable class as its underlying Python
2784     function, use its strfunction() method (if any) to display the
2785     action.
2786
2787   - Fix handling when BuildDir() exists but is unwriteable.  Add
2788     "Stop." to those error messages for consistency.
2789
2790   - Catch incidents of bad builder creation (without an action) and
2791     supply meaningful error messages.
2792
2793   - Fix handling of src_suffix values that aren't extensions (don't
2794     begin with a '.').
2795
2796   - Don't retrieve files from a CacheDir, but report what would happen,
2797     when the -n option is used.
2798
2799   - Use the source_scanner from the target Node, not the source node
2800     itself.
2801
2802   - Internal Scanners fixes:  Make sure Scanners are only passed Nodes.
2803     Fix how a Scanner.Selector called its base class initialization.
2804     Make comparisons of Scanner objects more robust.  Add a name to
2805     an internal default ObjSourceScanner.
2806
2807   - Add a deprecated warning for use of the old "scanner" keyword argument
2808     to Builder creation.
2809
2810   - Improve the --debug=explain message when the build action changes.
2811
2812   - Test enhancements in SourceCode.py, option-n.py, midl.py.  Better
2813     Command() and Scanner test coverage.  Improved test infrastructure
2814     for -c output.
2815
2816   - Refactor the interface between Action and Executor objects to treat
2817     Actions atomically.
2818
2819   - The --debug=presub option will now report the pre-substitution
2820     each action seprately, instead of reporting the entire list before
2821     executing the actions one by one.
2822
2823   - The --debug=explain option explaining a changed action will now
2824     (more correctly) show pre-substitution action strings, instead of
2825     the commands with substituted file names.
2826
2827   - A Node (file) will now be rebuilt if its PreAction or PostAction
2828     actions change.
2829
2830   - Python Function actions now have their calling signature (target,
2831     source, env) reported correctly when displayed.
2832
2833   - Fix BuildDir()/build_dir handling when the build_dir is underneath
2834     the source directory and trying to use entries from the build_dir
2835     as sources for other targets in the build-dir.
2836
2837   - Fix hard-coding of JDK path names in various Java tests.
2838
2839   - Handle Python stack traces consistently (stop at the SConscript stack
2840     frame, by default) even if the Python source code isn't available.
2841
2842   - Improve the performance of the --debug={tree,dtree} options.
2843
2844   - Add --debug=objects logging of creation of OverrideWarner,
2845     EnvironmentCopy and EnvironmentOverride objects.
2846
2847   - Fix command-line expansion of Python Value Nodes.
2848
2849   - Internal cleanups:  Remove an unnecessary scan argument.  Associate
2850     Scanners only with Builders, not nodes.  Apply overrides once when
2851     a Builder is called, not in multiple places.  Cache results from the
2852     Node.FS.get_suffix() and Node.get_build_env() methods.  Use the Python
2853     md5 modules' hexdigest() method, if there is one.  Have Taskmaster
2854     call get_stat() once for each Node and re-use the value instead of
2855     calling it each time it needs the value.  Have Node.depends_on()
2856     re-use the list from the children() method instead of calling it
2857     multiple times.
2858
2859   - Use the correct scanner if the same source file is used for targets in
2860     two different environments with the same path but different scanners.
2861
2862   - Collect logic for caching values in memory in a Memoizer class,
2863     which cleans up a lot of special-case code in various methods and
2864     caches additional values to speed up most configurations.
2865
2866   - Add a PathAccept validator to the list of new canned PathOption
2867     validators.
2868
2869   From Jeff Squyres:
2870
2871   - Documentation changes:  Use $CPPDEFINES instead of $CCFLAGS in man
2872     page examples.
2873
2874   From Levi Stephen:
2875
2876   - Allow $JARCHDIR to be expanded to other construction variables.
2877
2878   From Christoph Wiedemann:
2879
2880   - Add an Environment.SetDefault() method that only sets values if
2881     they aren't already set.
2882
2883   - Have the qt.py Tool not override variables already set by the user.
2884
2885   - Add separate $QT_BINPATH, $QT_CPPPATH and $QT_LIBPATH variables
2886     so these can be set individually, instead of being hard-wired
2887     relative to $QTDIR.
2888
2889   - The %TEMP% and %TMP% external environment variables are now propagated
2890     automatically to the command execution environment on Windows systems.
2891
2892   - A new --config= command-line option allows explicit control of
2893     of when the Configure() tests are run:  --config=force forces all
2894     checks to be run, --config=cache uses all previously cached values,
2895     --config=auto (the default) runs tests only when dependency analysis
2896     determines it's necessary.
2897
2898   - The Configure() subsystem can now write a config.h file with values
2899     like HAVE_STDIO_H, HAVE_LIBM, etc.
2900
2901   - The Configure() subsystem now executes its checks silently when the
2902     -Q option is specified.
2903
2904   - The Configure() subsystem now reports if a test result is being
2905     taken from cache, and prints the standard output and error output
2906     of tests even when cached.
2907
2908   - Configure() test results are now reported as "yes" or "no" instead of
2909     "ok" or "failed."
2910
2911   - Fixed traceback printing when calling the env.Configure() method
2912     instead of the Configure() global function.
2913
2914   - The Configure() subsystem now caches build failures in a .sconsign
2915     file in the subdirectory, not a .cache file.  This may cause
2916     tests to be re-executed the first time after you install 0.97.
2917
2918   - Additional significant internal cleanups in the Configure() subsystem
2919     and its tests.
2920
2921   - Have the Qt Builder make uic-generated files dependent on the .ui.h
2922     file, if one exists.
2923
2924   - Add a test to make sure that SCons source code does not contain
2925     try:-except: blocks that catch all errors, which potentially catch
2926     and mask keyboard interrupts.
2927
2928   - Fix us of TargetSignatures('content') with the SConf subsystem.
2929
2930   From Russell Yanofsky:
2931
2932   - Add support for the Metrowerks Codewarrior compiler and linker
2933     (mwcc and mwld).
2934
2935
2936
2937 RELEASE 0.96.1 - Mon, 23 Aug 2004 12:55:50 +0000
2938
2939   From Craig Bachelor:
2940
2941   - Handle white space in the executable Python path name within in MSVS
2942     project files by quoting the path.
2943
2944   - Correct the format of a GUID string in a solution (.dsw) file so
2945     MSVS can correctly "build enable" a project.
2946
2947   From Steven Knight:
2948
2949   - Add a must_exist flag to Delete() to let the user control whether
2950     it's an error if the specified entry doesn't exist.  The default
2951     behavior is now to silently do nothing if it doesn't exist.
2952
2953   - Package up the new Platform/darwin.py, mistakenly left out of 0.96.
2954
2955   - Make the scons.bat REM statements into @REM so they aren't printed.
2956
2957   - Make the SCons packaging SConscript files platform independent.
2958
2959   From Anthony Roach:
2960
2961   - Fix scanning of pre-compiled header (.pch) files for #includes,
2962     broken in 0.96.
2963
2964
2965
2966 RELEASE 0.96 - Wed, 18 Aug 2004 13:36:40 +0000
2967
2968   From Chad Austin:
2969
2970   - Make the CacheDir() directory if it doesn't already exist.
2971
2972   - Allow construction variable substitutions in $LIBS specifications.
2973
2974   - Allow the emitter argument to a Builder() to be or expand to a list
2975     of emitter functions, which will be called in sequence.
2976
2977   - Suppress null values in construction variables like $LIBS that use
2978     the internal _concat() function.
2979
2980   - Remove .dll files from the construction variables searched for
2981     libraries that can be fed to Win32 compilers.
2982
2983   From Chad Austin and Christoph Wiedemann:
2984
2985   - Add support for a $RPATH variable to supply a list of directories
2986     to search for shared libraries when linking a program.  Used by
2987     the GNU and IRIX linkers (gnulink and sgilink).
2988
2989   From Charles Crain:
2990
2991   - Restore the ability to do construction variable substitutions in all
2992     kinds of *PATH variables, even when the substitution returns a Node
2993     or other object.
2994
2995   From Tom Epperly:
2996
2997   - Allow the Java() Builder to take more than one source directory.
2998
2999   From Ralf W. Grosse-Kunstleve:
3000
3001   - Have SConsignFile() use, by default, a custom "dblite.py" that we can
3002     control and guarantee to work on all Python versions (or nearly so).
3003
3004   From Jonathan Gurley:
3005
3006   - Add support for the newer "ifort" versions of the Intel Fortran
3007     Compiler for Linux.
3008
3009   From Bob Halley:
3010
3011   - Make the new *FLAGS variable type work with copied Environments.
3012
3013   From Chris Hoeppler:
3014
3015   - Initialize the name of a Scanner.Classic scanner correctly.
3016
3017   From James Juhasz:
3018
3019   - Add support for the .dylib shared library suffix and the -dynamiclib
3020     linker option on Mac OS X.
3021
3022   From Steven Knight:
3023
3024   - Add an Execute() method for executing actions directly.
3025
3026   - Support passing environment override keyword arguments to Command().
3027
3028   - Fix use of $MSVS_IGNORE_IDE_PATHS, which was broken when we added
3029     support for $MSVS_USE_MFC_DIRS last release.
3030
3031   - Make env.Append() and env.Prepend() act like the underlying Python
3032     behavior when the variable being appended to is a UserList object.
3033
3034   - Fix a regression that prevented the Command() global function in
3035     0.95 from working with command-line strings as actions.
3036
3037   - Fix checking out a file from a source code management system when
3038     the env.SourceCode() method was called with an individual file name
3039     or node, not a directory name or node.
3040
3041   - Enhance the Task.make_ready() method to create a list of the
3042     out-of-date Nodes for the task for use by the wrapping interface.
3043
3044   - Allow Scanners to pull the list of suffixes from the construction
3045     environment when the "skeys" keyword argument is a string containing
3046     a construction variable to be expanded.
3047
3048   - Support new $CPPSUFFIXES, $DSUFFIXES $FORTRANSUFFIXES, and
3049     $IDLSUFFIXES.  construction variables that contain the default list
3050     of suffixes to be scanned by a given type of scanner, allowing these
3051     suffix lists to be easily added to or overridden.
3052
3053   - Speed up Node creation when calling a Builder by comparing whether two
3054     Environments are the same object, not if their underlying dictionaries
3055     are equivalent.
3056
3057   - Add a --debug=explain option that reports the reason(s) why SCons
3058     thinks it must rebuild something.
3059
3060   - Add support for functions that return platform-independent Actions
3061     to Chmod(), Copy(), Delete(), Mkdir(), Move() and Touch() files
3062     and/or directories.  Like any other Actions, the returned Action
3063     object may be executed directly using the Execute() global function
3064     or env.Execute() environment method, or may be used as a Builder
3065     action or in an env.Command() action list.
3066
3067   - Add support for the strfunction argument to all types of Actions:
3068     CommandAction, ListAction, and CommandGeneratorAction.
3069
3070   - Speed up turning file system Nodes into strings by caching the
3071     values after we're finished reading the SConscript files.
3072
3073   - Have ParseConfig() recognize and supporting adding the -Wa, -Wl,
3074     and -Wp, flags to ASFLAGS, LINKFLAGS and CPPFLAGS, respectively.
3075
3076   - Change the .sconsign format and the checks for whether a Node is
3077     up-to-date to make dependency checks more efficient and correct.
3078
3079   - Add wrapper Actions to SCons.Defaults for $ASCOM, $ASPPCOM, $LINKCOM,
3080     $SHLINKCOM, $ARCOM, $LEXCOM and $YACCCOM.  This makes it possible
3081     to replace the default print behavior with a custom strfunction()
3082     for each of these.
3083
3084   - When a Node has been built, don't walk the whole tree back to delete
3085     the parents's implicit dependencies, let returning up the normal
3086     Taskmaster descent take care of it for us.
3087
3088   - Add documented support for separate target_scanner and source_scanner
3089     arguments to Builder creation, which allows different scanners to
3090     be applied to source files
3091
3092   - Don't re-install or (re-generate) .h files when a subsidiary #included
3093     .h file changes.  This eliminates incorrect circular dependencies
3094     with .h files generated from other source files.
3095
3096   - Slim down the internal Sig.Calculator class by eliminating methods
3097     whose functionality is now covered by Node methods.
3098
3099   - Document use of the target_factory and source_factory keyword
3100     arguments when creating Builder objects.  Enhance Dir Nodes so that
3101     they can be created with user-specified Builder objects.
3102
3103   - Don't blow up with stack trace when the external $PATH environment
3104     variable isn't set.
3105
3106   - Make Builder calls return lists all the time, even if there's only
3107     one target.  This keeps things consistent and easier to program to
3108     across platforms.
3109
3110   - Add a Flatten() function to make it easier to deal with the Builders
3111     all returning lists of targets, not individual targets.
3112
3113   - Performance optimizations in Node.FS.__doLookup().
3114
3115   - Man page fixes:  formatting typos, misspellings, bad example.
3116
3117   - User's Guide fixes: Fix the signatures of the various example
3118     *Options() calls.  Triple-quote properly a multi-line Split example.
3119
3120   - User's Guide additions:  Chapter describing File and Directory
3121     Nodes.  Section describing declarative nature of SCons functions in
3122     SConscript files.  Better organization and clarification of points
3123     raised by Robert P. J. Day.  Chapter describing SConf (Autoconf-like)
3124     functionality.  Chapter describing how to install Python and
3125     SCons.  Chapter describing Java builds.
3126
3127   From Chris Murray:
3128
3129   - Add a .win32 attribute to force file names to expand with
3130     Windows backslash path separators.
3131
3132   - Fix escaping file names on command lines when the expansion is
3133     concatenated with another string.
3134
3135   - Add support for Fortran 90 and Fortran 95.  This adds $FORTRAN*
3136     variables that specify a default compiler, command-line, flags,
3137     etc. for all Fortran versions, plus separate $F90* and $F95*
3138     variables for when different compilers/flags/etc. must be specified
3139     for different Fortran versions.
3140
3141   - Have individual tools that create libraries override the default
3142     $LIBPREFIX and $LIBSUFFIX values set by the platform.  This makes
3143     it easier to use Microsoft Visual Studio tools on a CygWin platform.
3144
3145   From Gary Oberbrunner:
3146
3147   - Add a --debug=presub option to print actions prior to substitution.
3148
3149   - Add a warning upon use of the override keywords "targets" and
3150     "sources" when calling Builders.  These are usually mistakes which
3151     are otherwise silently (and confusingly) turned into construction
3152     variable overrides.
3153
3154   - Try to find the ICL license file path name in the external environment
3155     and the registry before resorting to the hard-coded path name.
3156
3157   - Add support for fetching command-line keyword=value arguments in
3158     order from an ARGLIST list.
3159
3160   - Avoid stack traces when trying to read dangling symlinks.
3161
3162   - Treat file "extensions" that only contain digits as part of the
3163     file basename.  This supports version numbers as part of shared
3164     library names, for example.
3165
3166   - Avoid problems when there are null entries (None or '') in tool
3167     lists or CPPPATH.
3168
3169   - Add an example and explanation of how to use "tools = ['default', ..."
3170     when creating a construction environment.
3171
3172   - Add a section describing File and Directory Nodes and some of their
3173     attributes and methods.
3174
3175   - Have ParseConfig() add a returned -pthread flag to both $CCFLAGS
3176     and $LINKFLAGS.
3177
3178   - Fix some test portability issues on Mac OS X (darwin).
3179
3180   From Simon Perkins:
3181
3182   - Fix a bug introduced in building shared libraries under MinGW.
3183
3184   From Kevin Quick:
3185
3186   - Handling SCons exceptions according to Pythonic standards.
3187
3188   - Fix test/chained-build.py on systems that execute within one second.
3189
3190   - Fix tests on systems where 'ar' warns about archive creation.
3191
3192   From Anthony Roach:
3193
3194   - Fix use of the --implicit-cache option with timestamp signatures.
3195
3196   - If Visual Studio is installed, assume the C/C++ compiler, the linker
3197     and the MIDL compiler that comes with it are available, too.
3198
3199   - Better error messages when evaluating a construction variable
3200     expansion yields a Python syntax error.
3201
3202   - Change the generation of PDB files when using Visual Studio from
3203     compile time to link time.
3204
3205   From sam th:
3206
3207   - Allow SConf.CheckLib() to search a list of libraries, like the
3208     Autoconf AC_SEARCH_LIBS macro.
3209
3210   - Allow the env.WhereIs() method to take a "reject" argument to
3211     let it weed out specific path names.
3212
3213   From Christoph Wiedemann:
3214
3215   - Add new Moc() and Uic() Builders for more explicit control over
3216     Qt builds, plus new construction variables to control them:
3217     $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX,
3218     $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX,
3219     $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX.
3220
3221   - Add a new single_source keyword argument for Builders that enforces
3222     a single source file on calls to the Builder.
3223
3224
3225
3226 RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
3227
3228   From Chad Austin:
3229
3230   - Replace print statements with calls to sys.stdout.write() so output
3231     lines stay together when -j is used.
3232
3233   - Add portability fixes for a number of tests.
3234
3235   - Accomodate the fact that Cygwin's os.path.normcase() lies about
3236     the underlying system being case-sensitive.
3237
3238   - Fix an incorrect _concat() call in the $RCINCFLAGS definition for
3239     the mingw Tool.
3240
3241   - Fix a problem with the msvc tool with Python versions prior to 2.3.
3242
3243   - Add support for a "toolpath" Tool() and Environment keyword that
3244     allows Tool modules to be found in specified local directories.
3245
3246   - Work around Cygwin Python's silly fiction that it's using a
3247     case-sensitive file system.
3248
3249   - More robust handling of data in VCComponents.dat.
3250
3251   - If the "env" command is available, spawn commands with the more
3252     general "env -" instead of "env -i".
3253
3254   From Kerim Borchaev:
3255
3256   - Fix a typo in a msvc.py's registry lookup:  "VCComponents.dat", not
3257     "VSComponents.dat".
3258
3259   From Chris Burghart:
3260
3261   - Fix the ability to save/restore a PackageOption to a file.
3262
3263   From Steve Christensen:
3264
3265   - Update the MSVS .NET and MSVC 6.0/7.0 path detection.
3266
3267   From David M. Cooke:
3268
3269   - Make the Fortran scanner case-insensitive for the INCLUDE string.
3270
3271   From Charles Crain:
3272
3273   - If no version of MSVC is detected but the tool is specified,
3274     use the MSVC 6.0 paths by default.
3275
3276   - Ignore any "6.1" version of MSVC found in the registry; this is a
3277     phony version number (created by later service packs?) and would
3278     throw off the logic if the user had any non-default paths configure.
3279
3280   - Correctly detect if the user has independently configured the MSVC
3281     "include," "lib" or "path" in the registry and use the appropriate
3282     values.  Previously, SCons would only use the values if all three
3283     were set in the registry.
3284
3285   - Make sure side-effect nodes are prepare()d before building their
3286     corresponding target.
3287
3288   - Preserve the ability to call BuildDir() multiple times with the
3289     same target and source directory arguments.
3290
3291   From Andy Friesen:
3292
3293   - Add support for the Digital Mars "D" programming language.
3294
3295   From Scott Lystig Fritchie:
3296
3297   - Fix the ability to use a custom _concat() function in the
3298     construction environment when calling _stripixes().
3299
3300   - Make the message about ignoring a missing SConscript file into a
3301     suppressable Warning, not a hard-coded sys.stderr.write().
3302
3303   - If a builder can be called multiple times for a target (because
3304     the sources and overrides are identical, or it's a builder with the
3305     "multi" flag set), allow the builder to be called through multiple
3306     environments so long as the builders have the same signature for
3307     the environments in questions (that is, they're the same action).
3308
3309   From Bob Halley:
3310
3311   - When multiple targets are built by a single action, retrieve all
3312     of them from cache, not just the first target, and exec the build
3313     command if any of the targets isn't present in the cache.
3314
3315   From Zephaniah Hull:
3316
3317   - Fix command-line ARGUMENTS with multiple = in them.
3318
3319   From Steven Knight:
3320
3321   - Fix EnsureSConsVersion() so it checks against the SCons version,
3322     not the Python version, on Pythons with sys.version_info.
3323
3324   - Don't swallow the AttributeError when someone uses an expansion like
3325     $TARGET.bak, so we can supply a more informative error message.
3326
3327   - Fix an odd double-quote escape sequence in the man page.
3328
3329   - Fix looking up a naked drive letter as a directory (Dir('C:')).
3330
3331   - Support using File nodes in the LIBS construction variable.
3332
3333   - Allow the LIBS construction variable to be a single string or File
3334     node, not a list, when only one library is needed.
3335
3336   - Fix typos in the man page:  JAVACHDIR => JARCHDIR; add "for_signature"
3337     to the __call__() example in the "Variable Substitution" section.
3338
3339   - Correct error message spellings of "non-existant" to "non-existent."
3340
3341   - When scanning for libraries to link with, don't append $LIBPREFIXES
3342     or $LIBSUFFIXES values to the $LIBS values if they're already present.
3343
3344   - Add a ZIPCOMPRESSION construction variable to control whether the
3345     internal Python action for the Zip Builder compresses the file or
3346     not.  The default value is zipfile.ZIP_DEFLATED, which generates
3347     a compressed file.
3348
3349   - Refactor construction variable expansion to support recursive
3350     expansion of variables (e.g. CCFLAGS = "$CCFLAGS -g") without going
3351     into an infinite loop.  Support this in all construction variable
3352     overrides, as well as when copying Environments.
3353
3354   - Fix calling Configure() from more than one subsidiary SConscript file.
3355
3356   - Fix the env.Action() method so it returns the correct type of
3357     Action for its argument(s).
3358
3359   - Fix specifying .class files as input to JavaH with the .class suffix
3360     when they weren't generated using the Java Builder.
3361
3362   - Make the check for whether all of the objects going into a
3363     SharedLibrary() are shared work even if the object was built in a
3364     previous run.
3365
3366   - Supply meaningful error messages, not stack traces, if we try to add
3367     a non-Node as a source, dependency, or ignored dependency of a Node.
3368
3369   - Generate MSVS Project files that re-invoke SCons properly regardless
3370     of whether the file was built via scons.bat or scons.py.
3371     (Thanks to Niall Douglas for contributing code and testing.)
3372
3373   - Fix TestCmd.py, runtest.py and specific tests to accomodate being
3374     run from directories whose paths include white space.
3375
3376   - Provide a more useful error message if a construction variable
3377     expansion contains a syntax error during evaluation.
3378
3379   - Fix transparent checkout of implicit dependency files from SCCS
3380     and RCS.
3381
3382   - Added new --debug=count, --debug=memory and --debug=objects options.
3383     --debug=count and --debug=objects only print anything when run
3384     under Python 2.1 or later.
3385
3386   - Deprecate the "overrides" keyword argument to Builder() creation
3387     in favor of using keyword argument values directly (like we do
3388     for builder execution and the like).
3389
3390   - Always use the Builder overrides in substitutions, not just if
3391     there isn't a target-specific environment.
3392
3393   - Add new "rsrcpath" and "rsrcdir" and attributes to $TARGET/$SOURCE,
3394     so Builder command lines can find things in Repository source
3395     directories when using BuildDir.
3396
3397   - Fix the M4 Builder so that it chdirs to the Repository directory
3398     when the input file is in the source directory of a BuildDir.
3399
3400   - Save memory at build time by allowing Nodes to delete their build
3401     environments after they've been built.
3402
3403   - Add AppendUnique() and PrependUnique() Environment methods, which
3404     add values to construction variables like Append() and Prepend()
3405     do, but suppress any duplicate elements in the list.
3406
3407   - Allow the 'qt' tool to still be used successfully from a copied
3408     Environment.  The include and library directories previously ended up
3409     having the same string re-appended to the end, yielding an incorrect
3410     path name.
3411
3412   - Supply a more descriptive error message when the source for a target
3413     can't be found.
3414
3415   - Initialize all *FLAGS variables with objects do the right thing with
3416     appending flags as strings or lists.
3417
3418   - Make things like ${TARGET.dir} work in *PATH construction variables.
3419
3420   - Allow a $MSVS_USE_MFC_DIRS construction variable to control whether
3421     ATL and MFC directories are included in the default INCLUDE and
3422     LIB paths.
3423
3424   - Document the dbm_module argument to the SConsignFile() function.
3425
3426   From Vincent Risi:
3427
3428   - Add support for the bcc32, ilink32 and tlib Borland tools.
3429
3430   From Anthony Roach:
3431
3432   - Supply an error message if the user tries to configure a BuildDir
3433     for a directory that already has one.
3434
3435   - Remove documentation of the still-unimplemented -e option.
3436
3437   - Add -H help text listing the legal --debug values.
3438
3439   - Don't choke if a construction variable is a non-string value.
3440
3441   - Build Type Libraries in the target directory, not the source
3442     directory.
3443
3444   - Add an appendix to the User's Guide showing how to accomplish
3445     various common tasks in Python.
3446
3447   From Greg Spencer:
3448
3449   - Add support for Microsoft Visual Studio 2003 (version 7.1).
3450
3451   - Evaluate $MSVSPROJECTSUFFIX and $MSVSSOLUTIONSUFFIX when the Builder
3452     is invoked, not when the tool is initialized.
3453
3454   From Christoph Wiedemann:
3455
3456   - When compiling Qt, make sure the moc_*.cc files are compiled using
3457     the flags from the environment used to specify the target, not
3458     the environment that first has the Qt Builders attached.
3459
3460
3461
3462 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
3463
3464   From Hartmut Goebel:
3465
3466   - Add several new types of canned functions to help create options:
3467     BoolOption(), EnumOption(), ListOption(), PackageOption(),
3468     PathOption().
3469
3470   From Steven Knight:
3471
3472   - Fix use of CPPDEFINES with C++ source files.
3473
3474   - Fix env.Append() when the operand is an object with a __cmp__()
3475     method (like a Scanner instance).
3476
3477   - Fix subclassing the Environment and Scanner classes.
3478
3479   - Add BUILD_TARGETS, COMMAND_LINE_TARGETS and DEFAULT_TARGETS variables.
3480
3481   From Steve Leblanc:
3482
3483   - SGI fixes:  Fix C++ compilation, add a separate Tool/sgic++.py module.
3484
3485   From Gary Oberbrunner:
3486
3487   - Fix how the man page un-indents after examples in some browsers.
3488
3489   From Vincent Risi:
3490
3491   - Fix the C and C++ tool specifications for AIX.
3492
3493
3494
3495 RELEASE 0.93 - Thu, 23 Oct 2003 07:26:55 -0500
3496
3497   From J.T. Conklin:
3498
3499   - On POSIX, execute commands with the more modern os.spawnvpe()
3500     function, if it's available.
3501
3502   - Scan .S, .spp and .SPP files for C preprocessor dependencies.
3503
3504   - Refactor the Job.Parallel() class to use a thread pool without a
3505     condition variable.  This improves parallel build performance and
3506     handles keyboard interrupts properly when -j is used.
3507
3508   From Charles Crain:
3509
3510   - Add support for a JARCHDIR variable to control changing to a
3511     directory using the jar -C option.
3512
3513   - Add support for detecting Java manifest files when using jar,
3514     and specifying them using the jar m flag.
3515
3516   - Fix some Python 2.2 specific things in various tool modules.
3517
3518   - Support directories as build sources, so that a rebuild of a target
3519     can be triggered if anything underneath the directory changes.
3520
3521   - Have the scons.bat and scons.py files look for the SCons modules
3522     in site-packages as well.
3523
3524   From Christian Engel:
3525
3526   - Support more flexible inclusion of separate C and C++ compilers.
3527
3528   - Use package management tools on AIX and Solaris to find where
3529     the comilers are installed, and what version they are.
3530
3531   - Add support for CCVERSION and CXXVERSION variables for a number
3532     of C and C++ compilers.
3533
3534   From Sergey Fogel:
3535
3536   - Add test cases for the new capabilities to run bibtex and to rerun
3537     latex as needed.
3538
3539   From Ralf W. Grosse-Kunstleve:
3540
3541   - Accomodate anydbm modules that don't have a sync() method.
3542
3543   - Allow SConsignFile() to take an argument specifying the DBM
3544     module to be used.
3545
3546   From Stephen Kennedy:
3547
3548   - Add support for a configurable global .sconsign.dbm file which
3549     can be used to avoid cluttering each directory with an individual
3550     .sconsign file.
3551
3552   From John Johnson:
3553
3554   - Fix (re-)scanning of dependencies in generated or installed
3555     header files.
3556
3557   From Steven Knight:
3558
3559   - The -Q option suppressed too many messages; fix it so that it only
3560     suppresses the Reading/Building messages.
3561
3562   - Support #include when there's no space before the opening quote
3563     or angle bracket.
3564
3565   - Accomodate alphanumeric version strings in EnsurePythonVersion().
3566
3567   - Support arbitrary expansion of construction variables within
3568     file and directory arguments to Builder calls and Environment methods.
3569
3570   - Add Environment-method versions of the following global functions:
3571     Action(), AddPostAction(), AddPreAction(), Alias(), Builder(),
3572     BuildDir(), CacheDir(), Clean(), Configure(), Default(),
3573     EnsurePythonVersion(), EnsureSConsVersion(), Environment(),
3574     Exit(), Export(), FindFile(), GetBuildPath(), GetOption(), Help(),
3575     Import(), Literal(), Local(), Platform(), Repository(), Scanner(),
3576     SConscriptChdir(), SConsignFile(), SetOption(), SourceSignatures(),
3577     Split(), TargetSignatures(), Tool(), Value().
3578
3579   - Add the following global functions that correspond to the same-named
3580     Environment methods:  AlwaysBuild(), Command(), Depends(), Ignore(),
3581     Install(), InstallAs(), Precious(), SideEffect() and SourceCode().
3582
3583   - Add the following global functions that correspond to the default
3584     Builder methods supported by SCons: CFile(), CXXFile(), DVI(), Jar(),
3585     Java(), JavaH(), Library(), M4(), MSVSProject(), Object(), PCH(),
3586     PDF(), PostScript(), Program(), RES(), RMIC(), SharedLibrary(),
3587     SharedObject(), StaticLibrary(), StaticObject(), Tar(), TypeLibrary()
3588     and Zip().
3589
3590   - Rearrange the man page to show construction environment methods and
3591     global functions in the same list, and to explain the difference.
3592
3593   - Alphabetize the explanations of the builder methods in the man page.
3594
3595   - Rename the Environment.Environment class to Enviroment.Base.
3596     Allow the wrapping interface to extend an Environment by using its own
3597     subclass of Environment.Base and setting a new Environment.Environment
3598     variable as the calling entry point.
3599
3600   - Deprecate the ParseConfig() global function in favor of a same-named
3601     construction environment method.
3602
3603   - Allow the Environment.WhereIs() method to take explicit path and
3604     pathext arguments (like the underlying SCons.Util.WhereIs() function).
3605
3606   - Remove the long-obsolete {Get,Set}CommandHandler() functions.
3607
3608   - Enhance env.Append() to suppress null values when appropriate.
3609
3610   - Fix ParseConfig() so it works regardless of initial construction
3611     variable values.
3612
3613     Extend CheckHeader(), CheckCHeader(), CheckCXXHeader() and
3614     CheckLibWithHeader() to accept a list of header files that will be
3615     #included in the test.  The last one in the list is assumed to be
3616     the one being checked for.  (Prototype code contributed by Gerard
3617     Patel and Niall Douglas).
3618
3619   - Supply a warning when -j is used and threading isn't built in to
3620     the current version of Python.
3621
3622   - First release of the User's Guide (finally, and despite a lot
3623     of things still missing from it...).
3624
3625   From Clark McGrew:
3626
3627   - Generalize the action for .tex files so that it will decide whether
3628     a file is TeX or LaTeX, check the .aux output to decide if it should
3629     run bibtex, and check the .log output to re-run LaTeX if needed.
3630
3631   From Bram Moolenaar:
3632
3633   - Split the non-SCons-specific functionality from SConf.py to a new,
3634     re-usable Conftest.py module.
3635
3636   From Gary Oberbrunner:
3637
3638   - Allow a directory to be the target or source or dependency of a
3639     Depends(), Ignore(), Precious() or SideEffect() call.
3640
3641   From Gerard Patel:
3642
3643   - Use the %{_mandir} macro when building our RPM package.
3644
3645   From Marko Rauhamaa:
3646
3647   - Have the closing message say "...terminated because of errors" if
3648     there were any.
3649
3650   From Anthony Roach:
3651
3652   - On Win32 systems, only use "rm" to delete files if Cygwin is being
3653     used.   ("rm" doesn't understand Win32-format path names.)
3654
3655   From Christoph Wiedemann:
3656
3657   - Fix test/SWIG.py to find the Python include directory in all cases.
3658
3659   - Fix a bug in detection of Qt installed on the local system.
3660
3661   - Support returning Python 2.3 BooleanType values from Configure checks.
3662
3663   - Provide an error message if someone mistakenly tries to call a
3664     Configure check from within a Builder function.
3665
3666   - Support calling a Builder when a Configure context is still open.
3667
3668   - Handle interrupts better by eliminating all try:-except: blocks
3669     which caught any and all exceptions, including KeyboardInterrupt.
3670
3671   - Add a --duplicate= option to control how files are duplicated.
3672
3673
3674
3675 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
3676
3677   From Charles Crain and Gary Oberbrunner:
3678
3679   - Fix Tool import problems with the Intel and PharLap linkers.
3680
3681   From Steven Knight
3682
3683   - Refactor the DictCmdGenerator class to be a Selector subclass.
3684
3685   - Allow the DefaultEnvironment() function to take arguments and pass
3686     them to instantiation of the default construction environment.
3687
3688   - Update the Debian package so it uses Python 2.2 and more closely
3689     resembles the currently official Debian packaging info.
3690
3691   From Gerard Patel
3692
3693   - When the yacc -d flag is used, take the .h file base name from the
3694     target .c file, not the source (matching what yacc does).
3695
3696
3697
3698 RELEASE 0.91 - Thu, 14 Aug 2003 13:00:44 -0500
3699
3700   From Chad Austin:
3701
3702   - Support specifying a list of tools when calling Environment.Copy().
3703
3704   - Give a Value Nodes a timestamp of the system time when they're
3705     created, so they'll work when using timestamp-based signatures.
3706
3707   - Add a DefaultEnvironment() function that only creates a default
3708     environment on-demand (for fetching source files, e.g.).
3709
3710   - Portability fix for test/M4.py.
3711
3712   From Steven Knight:
3713
3714   - Tighten up the scons -H help output.
3715
3716   - When the input yacc file ends in .yy and the -d flag is specified,
3717     recognize that a .hpp file (not a .h file) will be created.
3718
3719   - Make builder prefixes work correctly when deducing a target
3720     from a source file name in another directory.
3721
3722   - Documentation fixes: typo in the man page; explain up-front about
3723     not propagating the external environment.
3724
3725   - Use "cvs co -d" instead of "cvs co -p >" when checking out something
3726     from CVS with a specified module name.  This avoids zero-length
3727     files when there is a checkout error.
3728
3729   - Add an "sconsign" script to print the contents of .sconsign files.
3730
3731   - Speed up maintaining the various lists of Node children by using
3732     dictionaries to avoid "x in list" searches.
3733
3734   - Cache the computed list of Node children minus those being Ignored
3735     so it's only calculated once.
3736
3737   - Fix use of the --cache-show option when building a Program()
3738     (or using any other arbitrary action) by making sure all Action
3739     instances have strfunction() methods.
3740
3741   - Allow the source of Command() to be a directory.
3742
3743   - Better error handling of things like raw TypeErrors in SConscripts.
3744
3745   - When installing using "setup.py install --prefix=", suppress the
3746     distutils warning message about adding the (incorrect) library
3747     directory to your search path.
3748
3749   - Correct the spelling of the "validater" option to "validator."
3750     Add a DeprecatedWarning when the old spelling is used.
3751
3752   - Allow a Builder's emitter to be a dictionary that maps source file
3753     suffixes to emitter functions, using the suffix of the first file
3754     in the source list to pick the right one.
3755
3756   - Refactor the creation of the Program, *Object and *Library Builders
3757     so that they're moved out of SCons.Defaults and created on demand.
3758
3759   - Don't split SConscript file names on white space.
3760
3761   - Document the SConscript function's "dirs" and "name" keywords.
3762
3763   - Remove the internal (and superfluous) SCons.Util.argmunge() function.
3764
3765   - Add /TP to the default CXXFLAGS for msvc, so it can compile all
3766     of the suffixes we use as C++ files.
3767
3768   - Allow the "prefix" and "suffix" attributes of a Builder to be
3769     callable objects that return generated strings, or dictionaries
3770     that map a source file suffix to the right prefix/suffix.
3771
3772   - Support a MAXLINELINELENGTH construction variable on Win32 systems
3773     to control when a temporary file is used for long command lines.
3774
3775   - Make how we build .rpm packages not depend on the installation
3776     locations from the distutils being used.
3777
3778   - When deducing a target Node, create it directly from the first
3779     source Node, not by trying to create the right string to pass to
3780     arg2nodes().
3781
3782   - Add support for SWIG.
3783
3784   From Bram Moolenaar:
3785
3786   - Test portability fixes for FreeBSD.
3787
3788   From Gary Oberbrunner:
3789
3790   - Report the target being built in error messages when building
3791     multiple sources from different extensions, or when the target file
3792     extension can't be deduced, or when we don't have an action for a
3793     file suffix.
3794
3795   - Provide helpful error messages when the arguments to env.Install()
3796     are incorrect.
3797
3798   - Fix the value returned by the Node.prevsiginfo() method to conform
3799     to a previous change when checking whether a node is current.
3800
3801   - Supply a stack trace if the Taskmaster catches an exception.
3802
3803   - When using a temporary file for a long link line on Win32 systems,
3804     (also) print the command line that is being executed through the
3805     temporary file.
3806
3807   - Initialize the LIB environment variable when using the Intel
3808     compiler (icl).
3809
3810   - Documentation fixes:  better explain the AlwaysBuild() function.
3811
3812   From Laurent Pelecq:
3813
3814   - When the -debug=pdb option is specified, use pdb.Pdb().runcall() to
3815     call pdb directly, don't call Python recursively.
3816
3817   From Ben Scott:
3818
3819   - Add support for a platform-independent CPPDEFINES variable.
3820
3821   From Christoph Wiedemann:
3822
3823   - Have the g++ Tool actually use g++ in preference to c++.
3824
3825   - Have the gcc Tool actually use gcc in preference to cc.
3826
3827   - Add a gnutools.py test of the GNU tool chain.
3828
3829   - Be smarter about linking: use $CC by default and $CXX only if we're
3830     linking with any C++ objects.
3831
3832   - Avoid SCons hanging when a piped command has a lot of output to read.
3833
3834   - Add QT support for preprocessing .ui files into .c files.
3835
3836
3837
3838 RELEASE 0.90 - Wed, 25 Jun 2003 14:24:52 -0500
3839
3840   From Chad Austin:
3841
3842   - Fix the _concat() documentation, and add a test for it.
3843
3844   - Portability fixes for non-GNU versions of lex and yacc.
3845
3846   From Matt Balvin:
3847
3848   - Fix handling of library prefixes when the subdirectory matches
3849     the prefix.
3850
3851   From Timothee Bessett:
3852
3853   - Add an M4 Builder.
3854
3855   From Charles Crain:
3856
3857   - Use '.lnk' as the suffix on the temporary file for linking long
3858     command lines (necessary for the Phar Lap linkloc linker).
3859
3860   - Save non-string Options values as their actual type.
3861
3862   - Save Options string values that contain a single quote correctly.
3863
3864   - Save any Options values that are changed from the default
3865     Environment values, not just ones changed on the command line or in
3866     an Options file.
3867
3868   - Make closing the Options file descriptor exception-safe.
3869
3870   From Steven Knight:
3871
3872   - SCons now enforces (with an error) that construction variables
3873     must have the same form as valid Python identifiers.
3874
3875   - Fix man page bugs: remove duplicate AddPostAction() description;
3876     document no_import_lib; mention that CPPFLAGS does not contain
3877     $_CPPINCFLAGS; mention that F77FLAGS does not contain $_F77INCFLAGS;
3878     mention that LINKFLAGS and SHLINKFLAGS contains neither $_LIBFLAGS
3879     nor $_LIBDIRFLAGS.
3880
3881   - Eliminate a dependency on the distutils.fancy_getopt module by
3882     copying and pasting its wrap_text() function directly.
3883
3884   - Make the Script.Options() subclass match the underlying base class
3885     implementation.
3886
3887   - When reporting a target is up to date, quote the target like make
3888     (backquote-quote) instead of with double quotes.
3889
3890   - Fix handling of ../* targets when using -U, -D or -u.
3891
3892   From Steve Leblanc:
3893
3894   - Don't update the .sconsign files when run with -n.
3895
3896   From Gary Oberbrunner:
3897
3898   - Add support for the Intel C Compiler (icl.exe).
3899
3900   From Anthony Roach
3901
3902   - Fix Import('*').
3903
3904   From David Snopek
3905
3906   - Fix use of SConf in paths with white space in them.
3907
3908   - Add CheckFunc and CheckType functionality to SConf.
3909
3910   - Fix use of SConf with Builders that return a list of nodes.
3911
3912   From David Snopek and Christoph Wiedemann
3913
3914   - Fix use of the SConf subsystem with SConscriptChdir().
3915
3916   From Greg Spencer
3917
3918   - Check for the existence of MS Visual Studio on disk before using it,
3919     to avoid getting fooled by leftover junk in the registry.
3920
3921   - Add support for MSVC++ .NET.
3922
3923   - Add support for MS Visual Studio project files (DSP, DSW,
3924     SLN and VCPROJ files).
3925
3926   From Christoph Wiedemann
3927
3928   - SConf now works correctly when the -n and -q options are used.
3929
3930
3931
3932 RELEASE 0.14 - Wed, 21 May 2003 05:16:32 -0500
3933
3934   From Chad Austin:
3935
3936   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
3937     when compiling them.
3938
3939   - Use 'rm' to remove files under Cygwin.
3940
3941   - Add a PLATFORM variable to construction environments.
3942
3943   - Remove the "platform" argument from tool specifications.
3944
3945   - Propogate PYTHONPATH when running the regression tests so distutils
3946     can be found in non-standard locations.
3947
3948   - Using MSVC long command-line linking when running Cygwin.
3949
3950   - Portability fixes for a lot of tests.
3951
3952   - Add a Value Node class for dependencies on in-core Python values.
3953
3954   From Allen Bierbaum:
3955
3956   - Pass an Environment to the Options validator method, and
3957     add an Options.Save() method.
3958
3959   From Steve Christensen:
3960
3961   - Add an optional sort function argument to the GenerateHelpText()
3962     Options function.
3963
3964   - Evaluate the "varlist" variables when computing the signature of a
3965     function action.
3966
3967   From Charles Crain:
3968
3969   - Parse the source .java files for class names (including inner class
3970     names) to figure out the target .class files that will be created.
3971
3972   - Make Java support work with Repositories and SConscriptChdir(0).
3973
3974   - Pass Nodes, not strings, to Builder emitter functions.
3975
3976   - Refactor command-line interpolation and signature calculation
3977     so we can use real Node attributes.
3978
3979   From Steven Knight:
3980
3981   - Add Java support (javac, javah, jar and rmic).
3982
3983   - Propagate the external SYSTEMROOT environment variable into ENV on
3984     Win32 systems, so external commands that use sockets will work.
3985
3986   - Add a .posix attribute to PathList expansions.
3987
3988   - Check out CVS source files using POSIX path names (forward slashes
3989     as separators) even on Win32.
3990
3991   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
3992     Node's state, allowing it to be re-evaluated by continuous
3993     integration build interfaces.
3994
3995   - Change the name of the Set{Build,Content}SignatureType() functions
3996     to {Target,Source}Signatures().  Deprecate the old names but support
3997     them for backwards compatibility.
3998
3999   - Add internal SCons.Node.FS.{Dir,File}.Entry() methods.
4000
4001   - Interpolate the null string if an out-of-range subscript is used
4002     for a construction variable.
4003
4004   - Fix the internal Link function so that it properly links or copies
4005     files in subsidiary BuildDir directories.
4006
4007   - Refactor the internal representation of a single execution instance
4008     of an action to eliminate redundant signature calculations.
4009
4010   - Eliminate redundant signature calculations for Nodes.
4011
4012   - Optimize out calling hasattr() before accessing attributes.
4013
4014   - Say "Cleaning targets" (not "Building...") when the -c option is
4015     used.
4016
4017   From Damyan Pepper:
4018
4019   - Quote the "Entering directory" message like Make.
4020
4021   From Stefan Reichor:
4022
4023   - Add support for using Ghostscript to convert Postscript to PDF files.
4024
4025   From Anthony Roach:
4026
4027   - Add a standalone "Alias" function (separate from an Environment).
4028
4029   - Make Export() work for local variables.
4030
4031   - Support passing a dictionary to Export().
4032
4033   - Support Import('*') to import everything that's been Export()ed.
4034
4035   - Fix an undefined exitvalmap on Win32 systems.
4036
4037   - Support new SetOption() and GetOption() functions for setting
4038     various command-line options from with an SConscript file.
4039
4040   - Deprecate the old SetJobs() and GetJobs() functions in favor of
4041     using the new generic {Set,Get}Option() functions.
4042
4043   - Fix a number of tests that searched for a Fortran compiler using the
4044     external PATH instead of what SCons would use.
4045
4046   - Fix the interaction of SideEffect() and BuildDir() so that (for
4047     example) PDB files get put correctly in a BuildDir().
4048
4049   From David Snopek:
4050
4051   - Contribute the "Autoscons" code for Autoconf-like checking for
4052     the existence of libraries, header files and the like.
4053
4054   - Have the Tool() function add the tool name to the $TOOLS
4055     construction variable.
4056
4057   From Greg Spencer:
4058
4059   - Support the C preprocessor #import statement.
4060
4061   - Allow the SharedLibrary() Builder on Win32 systems to be able to
4062     register a newly-built dll using regsvr32.
4063
4064   - Add a Builder for Windows type library (.tlb) files from IDL files.
4065
4066   - Add an IDL scanner.
4067
4068   - Refactor the Fortran, C and IDL scanners to share common logic.
4069
4070   - Add .srcpath and .srcdir attributes to $TARGET and $SOURCE.
4071
4072   From Christoph Wiedemann:
4073
4074   - Integrate David Snopek's "Autoscons" code as the new SConf
4075     configuration subsystem, including caching of values between
4076     runs (using normal SCons dependency mechanisms), tests, and
4077     documentation.
4078
4079
4080
4081 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
4082
4083   From Charles Crain:
4084
4085   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
4086     files are called from within other SConscript files.
4087
4088   - Support (older) versions of Perforce which don't set the Windows
4089     registry.
4090
4091
4092
4093 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
4094
4095   From Charles Crain:
4096
4097   - Added support for the Perforce source code management system.
4098
4099   - Fix str(Node.FS) so that it returns a path relative to the calling
4100     SConscript file's directory, not the top-level directory.
4101
4102   - Added support for a separate src_dir argument to SConscript()
4103     that allows explicit specification of where the source files
4104     for an SConscript file can be found.
4105
4106   - Support more easily re-usable flavors of command generators by
4107     calling callable variables when strings are expanded.
4108
4109   From Steven Knight:
4110
4111   - Added an INSTALL construction variable that can be set to a function
4112     to control how the Install() and InstallAs() Builders install files.
4113     The default INSTALL function now copies, not links, files.
4114
4115   - Remove deprecated features:  the "name" argument to Builder objects,
4116     and the Environment.Update() method.
4117
4118   - Add an Environment.SourceCode() method to support fetching files
4119     from source code systems.  Add factory methods that create Builders
4120     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
4121     files from RCS or SCCS transparently (like GNU Make).
4122
4123   - Make the internal to_String() function more efficient.
4124
4125   - Make the error message the same as other build errors when there's a
4126     problem unlinking a target file in preparation for it being built.
4127
4128   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
4129     warn if the user tries to set them in a construction environment.
4130
4131   - Add support for Tar and Zip files.
4132
4133   - Better documentation of the different ways to export variables to a
4134     subsidiary SConscript file.  Fix documentation bugs in a tools
4135     example, places that still assumed SCons split strings on white
4136     space, and typos.
4137
4138   - Support fetching arbitrary files from the TARGETS or SOURCES lists
4139     (e.g. ${SOURCES[2]}) when calculating the build signature of a
4140     command.
4141
4142   - Don't silently swallow exceptions thrown by Scanners (or other
4143     exceptions while finding a node's dependent children).
4144
4145   - Push files to CacheDir() before calling the superclass built()
4146     method (which may clear the build signature as part of clearing
4147     cached implicit dependencies, if the file has a source scanner).
4148     (Bug reported by Jeff Petkau.)
4149
4150   - Raise an internal error if we attempt to push a file to CacheDir()
4151     with a build signature of None.
4152
4153   - Add an explicit Exit() function for terminating early.
4154
4155   - Change the documentation to correctly describe that the -f option
4156     doesn't change to the directory in which the specified file lives.
4157     
4158   - Support changing directories locally with SConscript directory
4159     path names relative to any SConstruct file specified with -f.
4160     This allows you to build in another directory by simply changing
4161     there and pointing at the SConstruct file in another directory.
4162
4163   - Change the default SConscriptChdir() behavior to change to the
4164     SConscript directory while it's being read.
4165
4166   - Fix an exception thrown when the -U option was used with no
4167     Default() target specified.
4168
4169   - Fix -u so that it builds things in corresponding build directories
4170     when used in a source directory.
4171
4172   From Lachlan O'Dea:
4173
4174   - Add SharedObject() support to the masm tool.
4175
4176   - Fix WhereIs() to return normalized paths.
4177
4178   From Jeff Petkau:
4179
4180   - Don't copy a built file to a CacheDir() if it's already there.
4181
4182   - Avoid partial copies of built files in a CacheDir() by copying
4183     to a temporary file and renaming.
4184
4185   From Anthony Roach:
4186
4187   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
4188     exist.
4189
4190
4191
4192 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
4193
4194   From Chad Austin:
4195
4196   - Add support for IRIX and the SGI MIPSPro tool chain.
4197
4198   - Support using the MSVC tool chain when running Cygwin Python.
4199
4200   From Michael Cook:
4201
4202   - Avoid losing signal bits in the exit status from a command,
4203     helping terminate builds on interrupt (CTRL+C).
4204
4205   From Charles Crain:
4206
4207   - Added new AddPreAction() and AddPostAction() functions that support
4208     taking additional actions before or after building specific targets.
4209
4210   - Add support for the PharLap ETS tool chain.
4211
4212   From Steven Knight:
4213
4214   - Allow Python function Actions to specify a list of construction
4215     variables that should be included in the Action's signature.
4216
4217   - Allow libraries in the LIBS variable to explicitly include the prefix
4218     and suffix, even when using the GNU linker.
4219     (Bug reported by Neal Becker.)
4220
4221   - Use DOS-standard CR-LF line endings in the scons.bat file.
4222     (Bug reported by Gary Ruben.)
4223
4224   - Doc changes:  Eliminate description of deprecated "name" keyword
4225     argument from Builder definition (reported by Gary Ruben).
4226
4227   - Support using env.Append() on BUILDERS (and other dictionaries).
4228     (Bug reported by Bj=F6rn Bylander.)
4229
4230   - Setting the BUILDERS construction variable now properly clears
4231     the previous Builder attributes from the construction Environment.
4232     (Bug reported by Bj=F6rn Bylander.)
4233
4234   - Fix adding a prefix to a file when the target isn't specified.
4235     (Bug reported by Esa Ilari Vuokko.)
4236
4237   - Clean up error messages from problems duplicating into read-only
4238     BuildDir directories or into read-only files.
4239
4240   - Add a CommandAction.strfunction() method, and add an "env" argument
4241     to the FunctionAction.strfunction() method, so that all Action
4242     objects have strfunction() methods, and the functions for building
4243     and returning a string both take the same arguments.
4244
4245   - Add support for new CacheDir() functionality to share derived files
4246     between builds, with related options --cache-disable, --cache-force,
4247     and --cache-show.
4248
4249   - Change the default behavior when no targets are specified to build
4250     everything in the current directory and below (like Make).  This
4251     can be disabled by specifying Default(None) in an SConscript.
4252
4253   - Revamp SCons installation to fix a case-sensitive installation
4254     on Win32 systems, and to add SCons-specific --standard-lib,
4255     --standalone-lib, and --version-lib options for easier user
4256     control of where the libraries get installed.
4257
4258   - Fix the ability to directly import and use Platform and Tool modules
4259     that have been implicitly imported into an Environment().
4260
4261   - Add support for allowing an embedding interface to annotate a node
4262     when it's created.
4263
4264   - Extend the SConscript() function to accept build_dir and duplicate
4265     keyword arguments that function like a BuildDir() call.
4266
4267   From Steve Leblanc:
4268
4269   - Fix the output of -c -n when directories are involved, so it
4270     matches -c.
4271
4272   From Anthony Roach:
4273
4274   - Use a different shared object suffix (.os) when using gcc so shared
4275     and static objects can exist side-by-side in the same directory.
4276
4277   - Allow the same object files on Win32 to be linked into either
4278     shared or static libraries.
4279
4280   - Cache implicit cache values when using --implicit-cache.
4281
4282
4283
4284 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
4285
4286   From Derrick 'dman' Hudson:
4287
4288   - Support Repositories on other file systems by symlinking or
4289     copying files when hard linking won't work.
4290
4291   From Steven Knight:
4292
4293   - Remove Python bytecode (*.pyc) files from the scons-local packages.
4294
4295   - Have FunctionActions print a description of what they're doing
4296     (a representation of the Python call).
4297
4298   - Fix the Install() method so that, like other actions, it prints
4299     what would have happened when the -n option is used.
4300
4301   - Don't create duplicate source files in a BuildDir when the -n
4302     option is used.
4303
4304   - Refactor the Scanner interface to eliminate unnecessary Scanner
4305     calls and make it easier to write efficient scanners.
4306
4307   - Added a "recursive" flag to Scanner creation that specifies the
4308     Scanner should be invoked recursively on dependency files returned
4309     by the scanner.
4310
4311   - Significant performance improvement from using a more efficient
4312     check, throughout the code, for whether a Node has a Builder.
4313
4314   - Fix specifying only the source file to MultiStepBuilders such as
4315     the Program Builder.  (Bug reported by Dean Bair.)
4316
4317   - Fix an exception when building from a file with the same basename as
4318     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
4319
4320   - Fix automatic deduction of a target file name when there are
4321     multiple source files specified; the target is now deduced from just
4322     the first source file in the list.
4323
4324   - Documentation fixes: better initial explanation of SConscript files;
4325     fix a misformatted "table" in the StaticObject explanation.
4326
4327   From Steven Knight and Steve Leblanc:
4328
4329   - Fix the -c option so it will remove symlinks.
4330
4331   From Steve Leblanc:
4332
4333   - Add a Clean() method to support removing user-specified targets
4334     when using the -c option.
4335
4336   - Add a development script for running SCons through PyChecker.
4337
4338   - Clean up things found by PyChecker (mostly unnecessary imports).
4339
4340   - Add a script to use HappyDoc to create HTML class documentation.
4341
4342   From Lachlan O'Dea:
4343
4344   - Make the Environment.get() method return None by default.
4345
4346   From Anthony Roach:
4347
4348   - Add SetJobs() and GetJobs() methods to allow configuration of the
4349     number of default jobs (still overridden by -j).
4350
4351   - Convert the .sconsign file format from ASCII to a pickled Python
4352     data structure.
4353
4354   - Error message cleanups:  Made consistent the format of error
4355     messages (now all start with "scons: ***") and warning messages (now
4356     all start with "scons: warning:").  Caught more cases with the "Do
4357     not know how to build" error message.
4358
4359   - Added support for the MinGW tool chain.
4360
4361   - Added a --debug=includes option.
4362
4363
4364
4365 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
4366
4367   From Chad Austin:
4368
4369   - Add a Prepend() method to Environments, to append values to
4370     the beginning of construction variables.
4371
4372   From Matt Balvin:
4373
4374   - Add long command-line support to the "lib" Tool (Microsoft library
4375     archiver), too.
4376
4377   From Charles Crain:
4378
4379   - Allow $$ in a string to be passed through as $.
4380
4381   - Support file names with odd characters in them.
4382
4383   - Add support for construction variable substition on scanner
4384     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
4385
4386   From Charles Crain and Steven Knight:
4387
4388   - Add Repository() functionality, including the -Y option.
4389
4390   From Steven Knight:
4391
4392   - Fix auto-deduction of target names so that deduced targets end
4393     up in the same subdirectory as the source.
4394
4395   - Don't remove source files specified on the command line!
4396
4397   - Suport the Intel Fortran Compiler (ifl.exe).
4398
4399   - Supply an error message if there are no command-line or
4400     Default() targets specified.
4401
4402   - Fix the ASPPCOM values for the GNU assembler.
4403     (Bug reported by Brett Polivka.)
4404
4405   - Fix an exception thrown when a Default() directory was specified
4406     when using the -U option.
4407
4408   - Issue a warning when -c can't remove a target.
4409
4410   - Eliminate unnecessary Scanner calls by checking for the
4411     existence of a file before scanning it.  (This adds a generic
4412     hook to check an arbitrary condition before scanning.)
4413
4414   - Add explicit messages to tell when we're "Reading SConscript files
4415     ...," "done reading SConscript files," "Building targets," and
4416     "done building targets."  Add a -Q option to supress these.
4417
4418   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
4419     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
4420
4421   - Add Make-like error messages when asked to build a source file,
4422     and before trying to build a file that doesn't have all its source
4423     files (including when an invalid drive letter is used on WIN32).
4424
4425   - Add an scons-local-{version} package (in both .tar.gz and .zip
4426     flavors) to help people who want to ship SCons as a stand-alone
4427     build tool in their software packages.
4428
4429   - Prevent SCons from unlinking files in certain situations when
4430     the -n option is used.
4431
4432   - Change the name of Tool/lib.py to Tool/mslib.py.
4433
4434   From Steven Knight and Anthony Roach:
4435
4436   - Man page:  document the fact that Builder calls return Node objects.
4437
4438   From Steve LeBlanc:
4439
4440   - Refactor option processing to use our own version of Greg Ward's
4441     Optik module, modified to run under Python 1.5.2.
4442
4443   - Add a ParseConfig() command to modify an environment based on
4444     parsing output from a *-config command.
4445
4446   From Jeff Petkau:
4447
4448   - Fix interpretation of '#/../foo' on Win32 systems.
4449
4450   From Anthony Roach:
4451
4452   - Fixed use of command lines with spaces in their arguments,
4453     and use of Nodes with spaces in their string representation.
4454
4455   - Make access and modification times of files in a BuildDir match
4456     the source file, even when hard linking isn't available.
4457
4458   - Make -U be case insensitive on Win32 systems.
4459
4460   - Issue a warning and continue when finding a corrupt .sconsign file.
4461
4462   - Fix using an alias as a dependency of a target so that if one of the
4463     alias' dependencies gets rebuilt, the resulting target will, too.
4464
4465   - Fix differently ordered targets causing unnecessary rebuilds
4466     on case insensitive systems.
4467
4468   - Use os.system() to execute external commands whenever the "env"
4469     utility is available, which is much faster than fork()/exec(),
4470     and fixes the -j option on several platforms.
4471
4472   - Fix use of -j with multiple targets.
4473
4474   - Add an Options() object for friendlier accomodation of command-
4475     line arguments.
4476
4477   - Add support for Microsoft VC++ precompiled header (.pch) files,
4478     debugger (.pdb) files, and resource (.rc) files.
4479
4480   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
4481     $_LIBDIRFLAGS variables each time a command is executed, define
4482     them so they're computed only as needed.  Add a new _concat
4483     function to the Environment that allows people to define their
4484     own similar variables.
4485
4486   - Fix dependency scans when $LIBS is overridden.
4487
4488   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
4489
4490   - Fix the overly-verbose stack trace on ListBuilder build errors.
4491
4492   - Add a SetContentSignatureType() function, allowing use of file
4493     timestamps instead of MD5 signatures.
4494
4495   - Make -U and Default('source') fail gracefully.
4496
4497   - Allow the File() and Dir() methods to take a path-name string as
4498     the starting directory, in addition to a Dir object.
4499
4500   - Allow the command handler to be selected via the SPAWN, SHELL
4501     and ESCAPE construction variables.
4502
4503   - Allow construction variables to be overridden when a Builder
4504     is called.
4505
4506   From sam th:
4507
4508   - Dynamically check for the existence of utilities with which to
4509     initialize Environments by default.
4510
4511
4512
4513 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
4514
4515   From Charles Crain:
4516
4517   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
4518     (Bug reported by Bob Summerwill.)
4519
4520   - Added a warnings framework and a --warn option to enable or
4521     disable warnings.
4522
4523   - Make the C scanner warn users if files referenced by #include
4524     directives cannot be found and --warn=dependency is specified.
4525
4526   - The BUILDERS construction variable should now be a dictionary
4527     that maps builder names to actions.  Existing uses of lists,
4528     and the Builder name= keyword argument, generate warnings
4529     about use of deprecated features.
4530
4531   - Removed the "shared" keyword argument from the Object and
4532     Library builders.
4533     
4534   - Added separated StaticObject, SharedObject, StaticLibrary and
4535     SharedLibrary builders.  Made Object and Library synonyms for
4536     StaticObject and StaticLibrary, respectively.
4537
4538   - Add LIBS and LIBPATH dependencies for shared libraries.
4539
4540   - Removed support for the prefix, suffix and src_suffix arguments
4541     to Builder() to be callable functions.
4542
4543   - Fix handling file names with multiple dots.
4544
4545   - Allow a build directory to be outside of the SConstruct tree.
4546
4547   - Add a FindFile() function that searches for a file node with a
4548     specified name.
4549
4550   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
4551
4552   From Charles Crain and Steven Knight:
4553
4554   - Add a "tools=" keyword argument to Environment instantiation,
4555     and a separate Tools() method, for more flexible specification
4556     of tool-specific environment changes.
4557
4558   From Steven Knight:
4559
4560   - Add a "platform=" keyword argument to Environment instantiation,
4561     and a separate Platform() method, for more flexible specification
4562     of platform-specific environment changes.
4563
4564   - Updated README instructions and setup.py code to catch an
4565     installation failure from not having distutils installed.
4566
4567   - Add descriptions to the -H help text for -D, -u and -U so
4568     people can tell them apart.
4569
4570   - Remove the old feature of automatically splitting strings
4571     of file names on white space.
4572
4573   - Add a dependency Scanner for native Fortran "include" statements,
4574     using a new "F77PATH" construction variable.
4575
4576   - Fix C #include scanning to detect file names with characters like
4577     '-' in them.
4578
4579   - Add more specific version / build output to the -v option.
4580
4581   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
4582
4583   - Allow the "target" argument to a Builder call to be omitted, in
4584     which case the target(s) are deduced from the source file(s) and the
4585     Builder's specified suffix.
4586
4587   - Add a tar archive builder.
4588
4589   - Add preliminary support for the OS/2 Platform, including the icc
4590     and ilink Tools.
4591
4592   From Jeff Petkau:
4593
4594   - Fix --implicit-cache if the scanner returns an empty list.
4595
4596   From Anthony Roach:
4597
4598   - Add a "multi" keyword argument to Builder creation that specifies
4599     it's okay to call the builder multiple times for a target.
4600
4601   - Set a "multi" on Aliases so multiple calls will append to an Alias.
4602
4603   - Fix emitter functions' use of path names when using BuildDir or
4604     in subdirectories.
4605
4606   - Fix --implicit-cache causing redundant rebuilds when the header
4607     file list changed.
4608
4609   - Fix --implicit-cache when a file has no implicit dependencies and
4610     its source is generated.
4611
4612   - Make the drive letters on Windows always be the same case, so that
4613     changes in the case of drive letters don't cause a rebuild.
4614
4615   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
4616     module can't be imported.
4617
4618   - Fix interrupt handling to guarantee that a single interrupt will
4619     halt SCons both when using -j and not.
4620
4621   - Fix .sconsign signature storage so that output files of one build
4622     can be safely used as input files to another build.
4623
4624   - Added a --debug=time option to print SCons execution times.
4625
4626   - Print an error message if a file can't be unlinked before being
4627     built, rather than just silently terminating the build.
4628
4629   - Add a SideEffect() method that can be used to tell the build
4630     engine that a given file is created as a side effect of building
4631     a target.  A file can be specified as a side effect of more than
4632     one build comand, in which case the commands will not be executed
4633     simultaneously.
4634
4635   - Significant performance gains from not using our own version of
4636     the inefficient stock os.path.splitext() method, caching source
4637     suffix computation, code cleanup in MultiStepBuilder.__call__(),
4638     and replicating some logic in scons_subst().
4639
4640   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
4641
4642   - Add a GetLaunchDir() function.
4643
4644   - Add a SetBuildSignatureType() function.
4645
4646   From Zed Shaw:
4647
4648   - Add an Append() method to Environments, to append values to
4649     construction variables.
4650
4651   - Change the name of Update() to Replace().  Keep Update() as a
4652     deprecated synonym, at least for now.
4653
4654   From Terrel Shumway:
4655
4656   - Use a $PYTHON construction variable, initialized to sys.executable,
4657     when using Python to build parts of the SCons packages.
4658
4659   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
4660
4661
4662
4663 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
4664
4665   From Chad Austin:
4666
4667   - Changes to build SCons packages on IRIX (and other *NIces).
4668
4669   - Don't create a directory Node when a file already exists there,
4670     and vice versa.
4671
4672   - Add 'dirs' and 'names' keyword arguments to SConscript for
4673     easier specification of subsidiary SConscript files.
4674
4675   From Charles Crain:
4676
4677   - Internal cleanup of environment passing to function Actions.
4678
4679   - Builders can now take arbitrary keyword arguments to create
4680     attributes to be passed to: command generator functions,
4681     FunctionAction functions, Builder emitter functions (below),
4682     and prefix/suffix generator functions (below).
4683
4684   - Command generator functions can now return ANYTHING that can be
4685     converted into an Action (a function, a string, a CommandGenerator
4686     instance, even an ActionBase instance).
4687
4688   - Actions now call get_contents() with the actual target and source
4689     nodes used for the build.
4690
4691   - A new DictCmdGenerator class replaces CompositeBuilder to support
4692     more flexible Builder behavior internally.
4693
4694   - Builders can now take an emitter= keyword argument.  An emitter
4695     is a function that takes target, source, and env argument, then
4696     return a 2-tuple of (new sources, new targets).  The emitter is
4697     called when the Builder is __call__'ed, allowing a user to modify
4698     source and target lists.
4699
4700   - The prefix, suffix and src_suffix Builder arguments now take a
4701     callable as well a string.  The callable is passed the Environment
4702     and any extra Builder keyword arguments and is expected to return
4703     the appropriate prefix or suffix.
4704
4705   - CommandActions can now be a string, a list of command + argument
4706     strings, or a list of commands (strings or lists).
4707
4708   - Added shared library support.  The Object and Library Builders now
4709     take a "shared=1" keyword argument to specify that a shared object
4710     or shared library should be built.  It is an error to try to build
4711     static objects into a shared library or vice versa.
4712
4713   - Win32 support for .def files has been added.  Added the Win32-specific
4714     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
4715     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
4716     the new construction variable $WIN32_INSERT_DEF, controls whether
4717     the appropriately-named .def file is inserted into the target
4718     list (if not already present).  A .lib file is always added to
4719     a Library build if not present in the list of targets.
4720
4721   - ListBuilder now passes all targets to the action, not just the first.
4722
4723   - Fix so that -c now deletes generated yacc .h files.
4724
4725   - Builder actions and emitter functions can now be initialized, through
4726     construction variables, to things other than strings.
4727
4728   - Make top-relative '#/dir' lookups work like '#dir'.
4729
4730   - Fix for relative CPPPATH directories in subsidiary SConscript files
4731     (broken in 0.06).
4732
4733   - Add a for_signature argument to command generators, so that
4734     generators that need to can return distinct values for the
4735     command signature and for executing the command.
4736
4737   From Alex Jacques:
4738
4739   - Create a better scons.bat file from a py2bat.py script on the Python
4740     mailing list two years ago (modeled after pl2bat.pl).
4741
4742   From Steven Knight:
4743
4744   - Fix so that -c -n does *not* remove the targets!
4745
4746   - Man page:  Add a hierarchical libraries + Program example.
4747
4748   - Support long MSVC linker command lines through a builder action
4749     that writes to a temporary file and uses the magic MSVC "link @file"
4750     argument syntax if the line is longer than 2K characters.
4751
4752   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
4753
4754   - Use the same action to build from .c (lower case) and .C (upper
4755     case) files on case-insensitive systems like Win32.
4756
4757   - Support building a PDF file directly from a TeX or LaTeX file
4758     using pdftex or pdflatex.
4759
4760   - Add a -x option to runtest.py to specify the script being tested.
4761     A -X option indicates it's an executable, not a script to feed
4762     to the Python interpreter.
4763
4764   - Add a Split() function (identical to SCons.Util.argmunge()) for use
4765     in the next release, when Builders will no longer automatically split
4766     strings on white space.
4767
4768   From Steve Leblanc:
4769
4770   - Add the SConscriptChdir() method.
4771
4772   From Anthony Roach:
4773
4774   - Fix --debug=tree when used with directory targets.
4775
4776   - Significant internal restructuring of Scanners and Taskmaster.
4777
4778   - Added new --debug=dtree option.
4779
4780   - Fixes for --profile option.
4781
4782   - Performance improvement in construction variable substitution.
4783
4784   - Implemented caching of content signatures, plus added --max-drift
4785     option to control caching.
4786
4787   - Implemented caching of dependency signatures, enabled by new
4788     --implicit-cache option.
4789
4790   - Added abspath construction variable modifier.
4791
4792   - Added $SOURCE variable as a synonym for $SOURCES[0].
4793
4794   - Write out .sconsign files on error or interrupt so intermediate
4795     build results are saved.
4796
4797   - Change the -U option to -D.  Make a new -U that builds just the
4798     targets from the local SConscript file.
4799
4800   - Fixed use of sys.path so Python modules can be imported from
4801     the SConscript directory.
4802
4803   - Fix for using Aliases with the -u, -U and -D options.
4804
4805   - Fix so that Nodes can be passed to SConscript files.
4806
4807   From Moshe Zadka:
4808   
4809   - Changes for official Debian packaging.
4810
4811
4812
4813 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
4814
4815   From Charles Crain:
4816
4817   - Fix command generators to expand construction variables.
4818
4819   - Make FunctionAction arguments be Nodes, not strings.
4820
4821   From Stephen Kennedy:
4822
4823   - Performance:  Use a dictionary, not a list, for a Node's parents.
4824
4825   From Steven Knight:
4826
4827   - Add .zip files to the packages we build.
4828
4829   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
4830
4831   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
4832     in ARCOM if there's a "ranlib" program on the system.
4833
4834   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
4835     into C files.
4836
4837   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
4838     (configurable via a CXXFILESUFFIX construction variable).
4839
4840   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
4841     (Bug reported by Russell Christensen.)
4842
4843   - Fixed an exception when CPPPATH or LIBPATH is a null string.
4844     (Bug reported by Richard Kiss.)
4845
4846   - Add a --profile=FILE option to make profiling SCons easier.
4847
4848   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
4849     and .latex) files.
4850
4851   - Add support for Aliases (phony targets).
4852
4853   - Add a WhereIs() method for searching for path names to executables.
4854
4855   - Add PDF and PostScript document builders.
4856
4857   - Add support for compiling Fortran programs from a variety of
4858     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
4859
4860   - Support a CPPFLAGS variable on all default commands that use the
4861     C preprocessor.
4862
4863   From Steve Leblanc:
4864
4865   - Add support for the -U option.
4866
4867   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
4868     separated strings.
4869
4870   - Add a document builder to create .dvi files from TeX (.tex) files.
4871
4872   From Anthony Roach:
4873
4874   - Fix:  Construction variables with values of 0 were incorrectly
4875     interpolated as ''. 
4876
4877   - Support env['VAR'] to fetch construction variable values.
4878
4879   - Man page:  document Precious().
4880
4881
4882
4883 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
4884
4885   From Chad Austin:
4886
4887   - Set PROGSUFFIX to .exe under Cygwin.
4888
4889   From Charles Crain:
4890
4891   - Allow a library to specified as a command-line source file, not just
4892     in the LIBS construction variable.
4893
4894   - Compensate for a bug in os.path.normpath() that returns '' for './'
4895     on WIN32.
4896
4897   - More performance optimizations:  cache #include lines from files,
4898     eliminate unnecessary calls.
4899
4900   - If a prefix or suffix contains white space, treat the resulting
4901     concatenation as separate arguments.
4902
4903   - Fix irregularities in the way we fetch DevStudio information from
4904     the Windows registry, and in our registry error handling.
4905
4906   From Steven Knight:
4907
4908   - Flush stdout after print so it intermixes correctly with stderr
4909     when redirected.
4910
4911   - Allow Scanners to return a list of strings, and document how to
4912     write your own Scanners.
4913
4914   - Look up implicit (scanned) dependencies relative to the directory
4915     of file being scanned.
4916
4917   - Make writing .sconsign files more robust by first trying to write
4918     to a temp file that gets renamed.
4919
4920   - Create all of the directories for a list of targets before trying
4921     to build any of the targets.
4922
4923   - WIN32 portability fixes in tests.
4924
4925   - Allow the list of variables exported to an SConscript file to be
4926     a UserList, too.
4927
4928   - Document the overlooked LIBPATH construction variable.
4929     (Bug reported by Eicke Godehardt.)
4930
4931   - Fix so that Ignore() ignores indirect, implicit dependencies
4932     (included files), not just direct dependencies.
4933
4934   - Put the man page in the Debian distribution.
4935
4936   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
4937
4938   - Add preliminary support for Unicode strings.
4939
4940   - Efficiency:  don't scan dependencies more than once during the
4941     walk of a tree.
4942
4943   - Fix the -c option so it doesn't stop removing targets if one doesn't
4944     already exist.
4945     (Bug reported by Paul Connell.)
4946
4947   - Fix the --debug=pdb option when run on Windows NT.
4948     (Bug reported by Paul Connell.)
4949
4950   - Add support for the -q option.
4951
4952   From Steve Leblanc:
4953
4954   - Add support for the -u option.
4955
4956   - Add .cc and .hh file suffixes to the C Scanner.
4957
4958   From Anthony Roach:
4959
4960   - Make the scons script return an error code on failures.
4961
4962   - Add support for using code to generate a command to build a target.
4963
4964
4965
4966 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
4967
4968   From Charles Crain:
4969
4970   - Significant performance improvements in the Node.FS and
4971     Scanner subsystems.
4972
4973   - Fix signatures of binary files on Win32 systems.
4974
4975   - Allow LIBS and LIBPATH to be strings, not just arrays.
4976
4977   - Print a traceback if a Python-function builder throws an exception.
4978
4979   From Steven Knight:
4980
4981   - Fix using a directory as a Default(), and allow Default() to
4982     support white space in file names for strings in arrays.
4983
4984   - Man page updates:  corrected some mistakes, documented various
4985     missing Environment methods, alphabetized the construction
4986     variables and other functions, defined begin and end macros for
4987     the example sections, regularized white space separation, fixed
4988     the use of Export() in the Multiple Variants example.
4989
4990   - Function action fixes:  None is now a successful return value.
4991     Exceptions are now reported.  Document function actions.
4992
4993   - Add 'Action' and 'Scanner' to the global keywords so SConscript
4994     files can use them too.
4995
4996   - Removed the Wrapper class between Nodes and Walkers.
4997
4998   - Add examples using Library, LIBS, and LIBPATH.
4999
5000   - The C Scanner now always returns a sorted list of dependencies
5001     so order changes don't cause unnecessary rebuilds.
5002
5003   - Strip $(-$) bracketed text from command lines.  Use this to
5004     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
5005     to changes to -I or -L options.
5006
5007   - Add the Ignore() method to ignore dependencies.
5008
5009   - Provide an error message when a nonexistent target is specified
5010     on the command line.
5011
5012   - Remove targets before building them, and add an Environment
5013     Precious() method to override that.
5014
5015   - Eliminate redundant calls to the same builder when the target is a
5016     list of targets:  Add a ListBuilder class that wraps Builders to
5017     handle lists atomically.  Extend the Task class to support building
5018     and updating multiple targets in a single Task.  Simplify the
5019     interface between Task and Taskmaster.
5020
5021   - Add a --debug=pdb option to re-run SCons under the Python debugger.
5022
5023   - Only compute a build signature once for each node.
5024
5025   - Changes to our sys.path[] manipulation to support installation into
5026     an arbitrary --prefix value.
5027
5028   From Steve Leblanc:
5029
5030   - Add var=value command-line arguments.
5031
5032
5033
5034 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
5035
5036   From Charles Crain:
5037
5038   - Performance improvements in the Node.FS and Sig.Calculator classes.
5039
5040   - Add the InstallAs() method.
5041
5042   - Execute commands through an external interpreter (sh, cmd.exe, or
5043     command.com) to handle redirection metacharacters.
5044
5045   - Allow the user to supply a command handler.
5046
5047   From Steven Knight:
5048
5049   - Search both /usr/lib and /usr/local/lib for scons directories by
5050     adding them both to sys.path, with whichever is in sys.prefix first.
5051
5052   - Fix interpreting strings of multiple white-space separated file names
5053     as separate file names, allowing prefixes and suffixes to be appended
5054     to each individually.
5055
5056   - Refactor to move CompositeBuilder initialization logic from the
5057     factory wrapper to the __init__() method, and allow a Builder to
5058     have both an action and a src_builder (or array of them).
5059
5060   - Refactor BuilderBase.__call__() to separate Node creation/lookup
5061     from initialization of the Node's builder information.
5062
5063   - Add a CFile Builder object that supports turning lex (.l) and
5064     yacc (.y) files into .c files.
5065
5066   - Document: variable interpretation attributes; how to propogate
5067     the user's environment variables to executed commands; how to
5068     build variants in multiple BuildDirs.
5069
5070   - Collect String, Dict, and List type-checking in common utility
5071     routines so we can accept User{String,Dict,List}s all over.
5072
5073   - Put the Action factory and classes into their own module.
5074
5075   - Use one CPlusPlusAction in the Object Builder's action dictionary,
5076     instead of letting it create multiple identical instances.
5077
5078   - Document the Install() and InstallAs() methods.
5079
5080   From Steve Leblanc:
5081
5082   - Require that a Builder be given a name argument, supplying a
5083     useful error message when it isn't.
5084
5085   From Anthony Roach:
5086
5087   - Add a "duplicate" keyword argument to BuildDir() that can be set
5088     to prevent linking/copying source files into build directories.
5089
5090   - Add a "--debug=tree" option to print an ASCII dependency tree.
5091
5092   - Fetch the location of the Microsoft Visual C++ compiler(s) from
5093     the Registry, instead of hard-coding the location.
5094     
5095   - Made Scanner objects take Nodes, not path names.
5096     
5097   - Have the C Scanner cache the #include file names instead of
5098     (re-)scanning the file each time it's called.
5099
5100   - Created a separate class for parent "nodes" of file system roots,
5101     eliminating the need for separate is-parent-null checks everywhere.
5102     
5103   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
5104     favor of Python's more efficient built-in identity comparisons.
5105
5106
5107
5108 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
5109
5110   From Charles Crain:
5111
5112   - Added the Install(), BuildDir(), and Export() methods.
5113
5114   - Fix the -C option by delaying setting the top of the FS tree.
5115
5116   - Avoid putting the directory path on the libraries in the LIBS
5117     construction variable.
5118
5119   - Added a GetBuildPath() method to return the full path to the
5120     Node for a specified string.
5121
5122   - Fixed variable substitution in CPPPATH and LIBPATH.
5123
5124   From Steven Knight:
5125
5126   - Fixed the version comment in the scons.bat (the UNIX geek used
5127     # instead of @rem).
5128
5129   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
5130
5131   - Provide make-like warning message for "command not found" and
5132     similar errors.
5133
5134   - Added an EXAMPLES section to the man page.
5135
5136   - Make Default() targets properly relative to their SConscript
5137     file's subdirectory.
5138
5139   From Anthony Roach:
5140
5141   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
5142
5143   - Fixed SCONS_LIB_DIR to work as documented.
5144
5145   - Made Default() accept Nodes as arguments.
5146
5147   - Changed Export() to make it easier to use.
5148   
5149   - Added the Import() and Return() methods.
5150
5151
5152
5153 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
5154
5155 A brief overview of important functionality available in release 0.01:
5156
5157   - C and C++ compilation on POSIX and Windows NT.
5158
5159   - Automatic scanning of C/C++ source files for #include dependencies.
5160
5161   - Support for building libraries; setting construction variables
5162     allows creation of shared libraries.
5163
5164   - Library and C preprocessor search paths.
5165
5166   - File changes detected using MD5 signatures.
5167
5168   - User-definable Builder objects for building files.
5169
5170   - User-definable Scanner objects for scanning for dependencies.
5171
5172   - Parallel build (-j) support.
5173
5174   - Dependency cycles detected.
5175
5176   - Linux packages available in RPM and Debian format.
5177
5178   - Windows installer available.