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