Add the current PYTHONPATH to runtest.py so tests can pick up distutils in non-standa...
[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 0.14 - XXX
12
13   From Chad Austin:
14
15   - Use .dll (not .so) for shared libraries on Cygwin; use -fPIC
16     when compiling them.
17
18   - Use 'rm' to remove files under Cygwin.
19
20   - Add a PLATFORM variable to construction environments.
21
22   - Remove the "platform" argument from tool specifications.
23
24   - Propogate PYTHONPATH when running the regression tests so distutils
25     can be found in non-standard locations.
26
27   From Allen Bierbaum:
28
29   - Pass an Environment to the Options validator method, and
30     add an Options.Save() method.
31
32   From Steven Knight:
33
34   - Add support for Java (javac and jar).
35
36   - Propagate the external SYSTEMROOT environment variable into ENV on
37     Win32 systems, so external commands that use sockets will work.
38
39   - Add a .posix attribute to PathList expansions.
40
41   - Check out CVS source files using POSIX path names (forward slashes
42     as separators) even on Win32.
43
44   - Add Node.clear() and Node.FS.Entry.clear() methods to wipe out a
45     Node's state, allowing it to be re-evaluated by continuous
46     integration build interfaces.
47
48
49
50 RELEASE 0.13 - Mon, 31 Mar 2003 20:22:00 -0600
51
52   From Charles Crain:
53
54   - Fix a bug when BuildDir(duplicate=0) is used and SConscript
55     files are called from within other SConscript files.
56
57   - Support (older) versions of Perforce which don't set the Windows
58     registry.
59
60
61
62 RELEASE 0.12 - Thu, 27 Mar 2003 23:52:09 -0600
63
64   From Charles Crain:
65
66   - Added support for the Perforce source code management system.
67
68   - Fix str(Node.FS) so that it returns a path relative to the calling
69     SConscript file's directory, not the top-level directory.
70
71   - Added support for a separate src_dir argument to SConscript()
72     that allows explicit specification of where the source files
73     for an SConscript file can be found.
74
75   - Support more easily re-usable flavors of command generators by
76     calling callable variables when strings are expanded.
77
78   From Steven Knight:
79
80   - Added an INSTALL construction variable that can be set to a function
81     to control how the Install() and InstallAs() Builders install files.
82     The default INSTALL function now copies, not links, files.
83
84   - Remove deprecated features:  the "name" argument to Builder objects,
85     and the Environment.Update() method.
86
87   - Add an Environment.SourceCode() method to support fetching files
88     from source code systems.  Add factory methods that create Builders
89     to support BitKeeper, CVS, RCS, and SCCS.  Add support for fetching
90     files from RCS or SCCS transparently (like GNU Make).
91
92   - Make the internal to_String() function more efficient.
93
94   - Make the error message the same as other build errors when there's a
95     problem unlinking a target file in preparation for it being built.
96
97   - Make TARGET, TARGETS, SOURCE and SOURCES reserved variable names and
98     warn if the user tries to set them in a construction environment.
99
100   - Add support for Tar and Zip files.
101
102   - Better documentation of the different ways to export variables to a
103     subsidiary SConscript file.  Fix documentation bugs in a tools
104     example, places that still assumed SCons split strings on white
105     space, and typos.
106
107   - Support fetching arbitrary files from the TARGETS or SOURCES lists
108     (e.g. ${SOURCES[2]}) when calculating the build signature of a
109     command.
110
111   - Don't silently swallow exceptions thrown by Scanners (or other
112     exceptions while finding a node's dependent children).
113
114   - Push files to CacheDir() before calling the superclass built()
115     method (which may clear the build signature as part of clearing
116     cached implicit dependencies, if the file has a source scanner).
117     (Bug reported by Jeff Petkau.)
118
119   - Raise an internal error if we attempt to push a file to CacheDir()
120     with a build signature of None.
121
122   - Add an explicit Exit() function for terminating early.
123
124   - Change the documentation to correctly describe that the -f option
125     doesn't change to the directory in which the specified file lives.
126     
127   - Support changing directories locally with SConscript directory
128     path names relative to any SConstruct file specified with -f.
129     This allows you to build in another directory by simply changing
130     there and pointing at the SConstruct file in another directory.
131
132   - Change the default SConscriptChdir() behavior to change to the
133     SConscript directory while it's being read.
134
135   - Fix an exception thrown when the -U option was used with no
136     Default() target specified.
137
138   - Fix -u so that it builds things in corresponding build directories
139     when used in a source directory.
140
141   From Lachlan O'Dea:
142
143   - Add SharedObject() support to the masm tool.
144
145   - Fix WhereIs() to return normalized paths.
146
147   From Jeff Petkau:
148
149   - Don't copy a built file to a CacheDir() if it's already there.
150
151   - Avoid partial copies of built files in a CacheDir() by copying
152     to a temporary file and renaming.
153
154   From Anthony Roach:
155
156   - Fix incorrect dependency-cycle errors when an Aliased source doesn't
157     exist.
158
159
160
161 RELEASE 0.11 - Tue, 11 Feb 2003 05:24:33 -0600
162
163   From Chad Austin:
164
165   - Add support for IRIX and the SGI MIPSPro tool chain.
166
167   - Support using the MSVC tool chain when running Cygwin Python.
168
169   From Michael Cook:
170
171   - Avoid losing signal bits in the exit status from a command,
172     helping terminate builds on interrupt (CTRL+C).
173
174   From Charles Crain:
175
176   - Added new AddPreAction() and AddPostAction() functions that support
177     taking additional actions before or after building specific targets.
178
179   - Add support for the PharLap ETS tool chain.
180
181   From Steven Knight:
182
183   - Allow Python function Actions to specify a list of construction
184     variables that should be included in the Action's signature.
185
186   - Allow libraries in the LIBS variable to explicitly include the prefix
187     and suffix, even when using the GNU linker.
188     (Bug reported by Neal Becker.)
189
190   - Use DOS-standard CR-LF line endings in the scons.bat file.
191     (Bug reported by Gary Ruben.)
192
193   - Doc changes:  Eliminate description of deprecated "name" keyword
194     argument from Builder definition (reported by Gary Ruben).
195
196   - Support using env.Append() on BUILDERS (and other dictionaries).
197     (Bug reported by Bj=F6rn Bylander.)
198
199   - Setting the BUILDERS construction variable now properly clears
200     the previous Builder attributes from the construction Environment.
201     (Bug reported by Bj=F6rn Bylander.)
202
203   - Fix adding a prefix to a file when the target isn't specified.
204     (Bug reported by Esa Ilari Vuokko.)
205
206   - Clean up error messages from problems duplicating into read-only
207     BuildDir directories or into read-only files.
208
209   - Add a CommandAction.strfunction() method, and add an "env" argument
210     to the FunctionAction.strfunction() method, so that all Action
211     objects have strfunction() methods, and the functions for building
212     and returning a string both take the same arguments.
213
214   - Add support for new CacheDir() functionality to share derived files
215     between builds, with related options --cache-disable, --cache-force,
216     and --cache-show.
217
218   - Change the default behavior when no targets are specified to build
219     everything in the current directory and below (like Make).  This
220     can be disabled by specifying Default(None) in an SConscript.
221
222   - Revamp SCons installation to fix a case-sensitive installation
223     on Win32 systems, and to add SCons-specific --standard-lib,
224     --standalone-lib, and --version-lib options for easier user
225     control of where the libraries get installed.
226
227   - Fix the ability to directly import and use Platform and Tool modules
228     that have been implicitly imported into an Environment().
229
230   - Add support for allowing an embedding interface to annotate a node
231     when it's created.
232
233   - Extend the SConscript() function to accept build_dir and duplicate
234     keyword arguments that function like a BuildDir() call.
235
236   From Steve Leblanc:
237
238   - Fix the output of -c -n when directories are involved, so it
239     matches -c.
240
241   From Anthony Roach:
242
243   - Use a different shared object suffix (.os) when using gcc so shared
244     and static objects can exist side-by-side in the same directory.
245
246   - Allow the same object files on Win32 to be linked into either
247     shared or static libraries.
248
249   - Cache implicit cache values when using --implicit-cache.
250
251
252
253 RELEASE 0.10 - Thu, 16 Jan 2003 04:11:46 -0600
254
255   From Derrick 'dman' Hudson:
256
257   - Support Repositories on other file systems by symlinking or
258     copying files when hard linking won't work.
259
260   From Steven Knight:
261
262   - Remove Python bytecode (*.pyc) files from the scons-local packages.
263
264   - Have FunctionActions print a description of what they're doing
265     (a representation of the Python call).
266
267   - Fix the Install() method so that, like other actions, it prints
268     what would have happened when the -n option is used.
269
270   - Don't create duplicate source files in a BuildDir when the -n
271     option is used.
272
273   - Refactor the Scanner interface to eliminate unnecessary Scanner
274     calls and make it easier to write efficient scanners.
275
276   - Added a "recursive" flag to Scanner creation that specifies the
277     Scanner should be invoked recursively on dependency files returned
278     by the scanner.
279
280   - Significant performance improvement from using a more efficient
281     check, throughout the code, for whether a Node has a Builder.
282
283   - Fix specifying only the source file to MultiStepBuilders such as
284     the Program Builder.  (Bug reported by Dean Bair.)
285
286   - Fix an exception when building from a file with the same basename as
287     the subdirectory in which it lives.  (Bug reported by Gerard Patel.)
288
289   - Fix automatic deduction of a target file name when there are
290     multiple source files specified; the target is now deduced from just
291     the first source file in the list.
292
293   - Documentation fixes: better initial explanation of SConscript files;
294     fix a misformatted "table" in the StaticObject explanation.
295
296   From Steven Knight and Steve Leblanc:
297
298   - Fix the -c option so it will remove symlinks.
299
300   From Steve Leblanc:
301
302   - Add a Clean() method to support removing user-specified targets
303     when using the -c option.
304
305   - Add a development script for running SCons through PyChecker.
306
307   - Clean up things found by PyChecker (mostly unnecessary imports).
308
309   - Add a script to use HappyDoc to create HTML class documentation.
310
311   From Lachlan O'Dea:
312
313   - Make the Environment.get() method return None by default.
314
315   From Anthony Roach:
316
317   - Add SetJobs() and GetJobs() methods to allow configuration of the
318     number of default jobs (still overridden by -j).
319
320   - Convert the .sconsign file format from ASCII to a pickled Python
321     data structure.
322
323   - Error message cleanups:  Made consistent the format of error
324     messages (now all start with "scons: ***") and warning messages (now
325     all start with "scons: warning:").  Caught more cases with the "Do
326     not know how to build" error message.
327
328   - Added support for the MinGW tool chain.
329
330   - Added a --debug=includes option.
331
332
333
334 RELEASE 0.09 - Thu,  5 Dec 2002 04:48:25 -0600
335
336   From Chad Austin:
337
338   - Add a Prepend() method to Environments, to append values to
339     the beginning of construction variables.
340
341   From Matt Balvin:
342
343   - Add long command-line support to the "lib" Tool (Microsoft library
344     archiver), too.
345
346   From Charles Crain:
347
348   - Allow $$ in a string to be passed through as $.
349
350   - Support file names with odd characters in them.
351
352   - Add support for construction variable substition on scanner
353     directories (in CPPPATH, F77PATH, LIBPATH, etc.).
354
355   From Charles Crain and Steven Knight:
356
357   - Add Repository() functionality, including the -Y option.
358
359   From Steven Knight:
360
361   - Fix auto-deduction of target names so that deduced targets end
362     up in the same subdirectory as the source.
363
364   - Don't remove source files specified on the command line!
365
366   - Suport the Intel Fortran Compiler (ifl.exe).
367
368   - Supply an error message if there are no command-line or
369     Default() targets specified.
370
371   - Fix the ASPPCOM values for the GNU assembler.
372     (Bug reported by Brett Polivka.)
373
374   - Fix an exception thrown when a Default() directory was specified
375     when using the -U option.
376
377   - Issue a warning when -c can't remove a target.
378
379   - Eliminate unnecessary Scanner calls by checking for the
380     existence of a file before scanning it.  (This adds a generic
381     hook to check an arbitrary condition before scanning.)
382
383   - Add explicit messages to tell when we're "Reading SConscript files
384     ...," "done reading SConscript files," "Building targets," and
385     "done building targets."  Add a -Q option to supress these.
386
387   - Add separate $SHOBJPREFIX and $SHOBJSUFFIX construction variables
388     (by default, the same as $OBJPREFIX and $OBJSUFFIX).
389
390   - Add Make-like error messages when asked to build a source file,
391     and before trying to build a file that doesn't have all its source
392     files (including when an invalid drive letter is used on WIN32).
393
394   - Add an scons-local-{version} package (in both .tar.gz and .zip
395     flavors) to help people who want to ship SCons as a stand-alone
396     build tool in their software packages.
397
398   - Prevent SCons from unlinking files in certain situations when
399     the -n option is used.
400
401   - Change the name of Tool/lib.py to Tool/mslib.py.
402
403   From Steven Knight and Anthony Roach:
404
405   - Man page:  document the fact that Builder calls return Node objects.
406
407   From Steve LeBlanc:
408
409   - Refactor option processing to use our own version of Greg Ward's
410     Optik module, modified to run under Python 1.5.2.
411
412   - Add a ParseConfig() command to modify an environment based on
413     parsing output from a *-config command.
414
415   From Jeff Petkau:
416
417   - Fix interpretation of '#/../foo' on Win32 systems.
418
419   From Anthony Roach:
420
421   - Fixed use of command lines with spaces in their arguments,
422     and use of Nodes with spaces in their string representation.
423
424   - Make access and modification times of files in a BuildDir match
425     the source file, even when hard linking isn't available.
426
427   - Make -U be case insensitive on Win32 systems.
428
429   - Issue a warning and continue when finding a corrupt .sconsign file.
430
431   - Fix using an alias as a dependency of a target so that if one of the
432     alias' dependencies gets rebuilt, the resulting target will, too.
433
434   - Fix differently ordered targets causing unnecessary rebuilds
435     on case insensitive systems.
436
437   - Use os.system() to execute external commands whenever the "env"
438     utility is available, which is much faster than fork()/exec(),
439     and fixes the -j option on several platforms.
440
441   - Fix use of -j with multiple targets.
442
443   - Add an Options() object for friendlier accomodation of command-
444     line arguments.
445
446   - Add support for Microsoft VC++ precompiled header (.pch) files,
447     debugger (.pdb) files, and resource (.rc) files.
448
449   - Don't compute the $_CPPINCFLAGS, $_F77INCFLAGS, $_LIBFLAGS and
450     $_LIBDIRFLAGS variables each time a command is executed, define
451     them so they're computed only as needed.  Add a new _concat
452     function to the Environment that allows people to define their
453     own similar variables.
454
455   - Fix dependency scans when $LIBS is overridden.
456
457   - Add EnsurePythonVersion() and EnsureSConsVersion() functions.
458
459   - Fix the overly-verbose stack trace on ListBuilder build errors.
460
461   - Add a SetContentSignatureType() function, allowing use of file
462     timestamps instead of MD5 signatures.
463
464   - Make -U and Default('source') fail gracefully.
465
466   - Allow the File() and Dir() methods to take a path-name string as
467     the starting directory, in addition to a Dir object.
468
469   - Allow the command handler to be selected via the SPAWN, SHELL
470     and ESCAPE construction variables.
471
472   - Allow construction variables to be overridden when a Builder
473     is called.
474
475   From sam th:
476
477   - Dynamically check for the existence of utilities with which to
478     initialize Environments by default.
479
480
481
482 RELEASE 0.08 - Mon, 15 Jul 2002 12:08:51 -0500
483
484   From Charles Crain:
485
486   - Fixed a bug with relative CPPPATH dirs when using BuildDir().
487     (Bug reported by Bob Summerwill.)
488
489   - Added a warnings framework and a --warn option to enable or
490     disable warnings.
491
492   - Make the C scanner warn users if files referenced by #include
493     directives cannot be found and --warn=dependency is specified.
494
495   - The BUILDERS construction variable should now be a dictionary
496     that maps builder names to actions.  Existing uses of lists,
497     and the Builder name= keyword argument, generate warnings
498     about use of deprecated features.
499
500   - Removed the "shared" keyword argument from the Object and
501     Library builders.
502     
503   - Added separated StaticObject, SharedObject, StaticLibrary and
504     SharedLibrary builders.  Made Object and Library synonyms for
505     StaticObject and StaticLibrary, respectively.
506
507   - Add LIBS and LIBPATH dependencies for shared libraries.
508
509   - Removed support for the prefix, suffix and src_suffix arguments
510     to Builder() to be callable functions.
511
512   - Fix handling file names with multiple dots.
513
514   - Allow a build directory to be outside of the SConstruct tree.
515
516   - Add a FindFile() function that searches for a file node with a
517     specified name.
518
519   - Add $CPPFLAGS to the shared-object command lines for g++ and gcc.
520
521   From Charles Crain and Steven Knight:
522
523   - Add a "tools=" keyword argument to Environment instantiation,
524     and a separate Tools() method, for more flexible specification
525     of tool-specific environment changes.
526
527   From Steven Knight:
528
529   - Add a "platform=" keyword argument to Environment instantiation,
530     and a separate Platform() method, for more flexible specification
531     of platform-specific environment changes.
532
533   - Updated README instructions and setup.py code to catch an
534     installation failure from not having distutils installed.
535
536   - Add descriptions to the -H help text for -D, -u and -U so
537     people can tell them apart.
538
539   - Remove the old feature of automatically splitting strings
540     of file names on white space.
541
542   - Add a dependency Scanner for native Fortran "include" statements,
543     using a new "F77PATH" construction variable.
544
545   - Fix C #include scanning to detect file names with characters like
546     '-' in them.
547
548   - Add more specific version / build output to the -v option.
549
550   - Add support for the GNU as, Microsoft masm, and nasm assemblers.
551
552   - Allow the "target" argument to a Builder call to be omitted, in
553     which case the target(s) are deduced from the source file(s) and the
554     Builder's specified suffix.
555
556   - Add a tar archive builder.
557
558   - Add preliminary support for the OS/2 Platform, including the icc
559     and ilink Tools.
560
561   From Jeff Petkau:
562
563   - Fix --implicit-cache if the scanner returns an empty list.
564
565   From Anthony Roach:
566
567   - Add a "multi" keyword argument to Builder creation that specifies
568     it's okay to call the builder multiple times for a target.
569
570   - Set a "multi" on Aliases so multiple calls will append to an Alias.
571
572   - Fix emitter functions' use of path names when using BuildDir or
573     in subdirectories.
574
575   - Fix --implicit-cache causing redundant rebuilds when the header
576     file list changed.
577
578   - Fix --implicit-cache when a file has no implicit dependencies and
579     its source is generated.
580
581   - Make the drive letters on Windows always be the same case, so that
582     changes in the case of drive letters don't cause a rebuild.
583
584   - Fall back to importing the SCons.TimeStamp module if the SCons.MD5
585     module can't be imported.
586
587   - Fix interrupt handling to guarantee that a single interrupt will
588     halt SCons both when using -j and not.
589
590   - Fix .sconsign signature storage so that output files of one build
591     can be safely used as input files to another build.
592
593   - Added a --debug=time option to print SCons execution times.
594
595   - Print an error message if a file can't be unlinked before being
596     built, rather than just silently terminating the build.
597
598   - Add a SideEffect() method that can be used to tell the build
599     engine that a given file is created as a side effect of building
600     a target.  A file can be specified as a side effect of more than
601     one build comand, in which case the commands will not be executed
602     simultaneously.
603
604   - Significant performance gains from not using our own version of
605     the inefficient stock os.path.splitext() method, caching source
606     suffix computation, code cleanup in MultiStepBuilder.__call__(),
607     and replicating some logic in scons_subst().
608
609   - Add --implicit-deps-changed and --implicit-deps-unchanged options.
610
611   - Add a GetLaunchDir() function.
612
613   - Add a SetBuildSignatureType() function.
614
615   From Zed Shaw:
616
617   - Add an Append() method to Environments, to append values to
618     construction variables.
619
620   - Change the name of Update() to Replace().  Keep Update() as a
621     deprecated synonym, at least for now.
622
623   From Terrel Shumway:
624
625   - Use a $PYTHON construction variable, initialized to sys.executable,
626     when using Python to build parts of the SCons packages.
627
628   - Use sys.prefix, not sys.exec_prefix, to find pdb.py.
629
630
631
632 RELEASE 0.07 - Thu,  2 May 2002 13:37:16 -0500
633
634   From Chad Austin:
635
636   - Changes to build SCons packages on IRIX (and other *NIces).
637
638   - Don't create a directory Node when a file already exists there,
639     and vice versa.
640
641   - Add 'dirs' and 'names' keyword arguments to SConscript for
642     easier specification of subsidiary SConscript files.
643
644   From Charles Crain:
645
646   - Internal cleanup of environment passing to function Actions.
647
648   - Builders can now take arbitrary keyword arguments to create
649     attributes to be passed to: command generator functions,
650     FunctionAction functions, Builder emitter functions (below),
651     and prefix/suffix generator functions (below).
652
653   - Command generator functions can now return ANYTHING that can be
654     converted into an Action (a function, a string, a CommandGenerator
655     instance, even an ActionBase instance).
656
657   - Actions now call get_contents() with the actual target and source
658     nodes used for the build.
659
660   - A new DictCmdGenerator class replaces CompositeBuilder to support
661     more flexible Builder behavior internally.
662
663   - Builders can now take an emitter= keyword argument.  An emitter
664     is a function that takes target, source, and env argument, then
665     return a 2-tuple of (new sources, new targets).  The emitter is
666     called when the Builder is __call__'ed, allowing a user to modify
667     source and target lists.
668
669   - The prefix, suffix and src_suffix Builder arguments now take a
670     callable as well a string.  The callable is passed the Environment
671     and any extra Builder keyword arguments and is expected to return
672     the appropriate prefix or suffix.
673
674   - CommandActions can now be a string, a list of command + argument
675     strings, or a list of commands (strings or lists).
676
677   - Added shared library support.  The Object and Library Builders now
678     take a "shared=1" keyword argument to specify that a shared object
679     or shared library should be built.  It is an error to try to build
680     static objects into a shared library or vice versa.
681
682   - Win32 support for .def files has been added.  Added the Win32-specific
683     construction variables $WIN32DEFPREFIX, $WIN32DEFSUFFIX,
684     $WIN32DLLPREFIX and $WIN32IMPLIBPREFIX.  When building a .dll,
685     the new construction variable $WIN32_INSERT_DEF, controls whether
686     the appropriately-named .def file is inserted into the target
687     list (if not already present).  A .lib file is always added to
688     a Library build if not present in the list of targets.
689
690   - ListBuilder now passes all targets to the action, not just the first.
691
692   - Fix so that -c now deletes generated yacc .h files.
693
694   - Builder actions and emitter functions can now be initialized, through
695     construction variables, to things other than strings.
696
697   - Make top-relative '#/dir' lookups work like '#dir'.
698
699   - Fix for relative CPPPATH directories in subsidiary SConscript files
700     (broken in 0.06).
701
702   - Add a for_signature argument to command generators, so that
703     generators that need to can return distinct values for the
704     command signature and for executing the command.
705
706   From Alex Jacques:
707
708   - Create a better scons.bat file from a py2bat.py script on the Python
709     mailing list two years ago (modeled after pl2bat.pl).
710
711   From Steven Knight:
712
713   - Fix so that -c -n does *not* remove the targets!
714
715   - Man page:  Add a hierarchical libraries + Program example.
716
717   - Support long MSVC linker command lines through a builder action
718     that writes to a temporary file and uses the magic MSVC "link @file"
719     argument syntax if the line is longer than 2K characters.
720
721   - Fix F77 command-line options on Win32 (use /Fo instead of -o).
722
723   - Use the same action to build from .c (lower case) and .C (upper
724     case) files on case-insensitive systems like Win32.
725
726   - Support building a PDF file directly from a TeX or LaTeX file
727     using pdftex or pdflatex.
728
729   - Add a -x option to runtest.py to specify the script being tested.
730     A -X option indicates it's an executable, not a script to feed
731     to the Python interpreter.
732
733   - Add a Split() function (identical to SCons.Util.argmunge()) for use
734     in the next release, when Builders will no longer automatically split
735     strings on white space.
736
737   From Steve Leblanc:
738
739   - Add the SConscriptChdir() method.
740
741   From Anthony Roach:
742
743   - Fix --debug=tree when used with directory targets.
744
745   - Significant internal restructuring of Scanners and Taskmaster.
746
747   - Added new --debug=dtree option.
748
749   - Fixes for --profile option.
750
751   - Performance improvement in construction variable substitution.
752
753   - Implemented caching of content signatures, plus added --max-drift
754     option to control caching.
755
756   - Implemented caching of dependency signatures, enabled by new
757     --implicit-cache option.
758
759   - Added abspath construction variable modifier.
760
761   - Added $SOURCE variable as a synonym for $SOURCES[0].
762
763   - Write out .sconsign files on error or interrupt so intermediate
764     build results are saved.
765
766   - Change the -U option to -D.  Make a new -U that builds just the
767     targets from the local SConscript file.
768
769   - Fixed use of sys.path so Python modules can be imported from
770     the SConscript directory.
771
772   - Fix for using Aliases with the -u, -U and -D options.
773
774   - Fix so that Nodes can be passed to SConscript files.
775
776   From Moshe Zadka:
777   
778   - Changes for official Debian packaging.
779
780
781
782 RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
783
784   From Charles Crain:
785
786   - Fix command generators to expand construction variables.
787
788   - Make FunctionAction arguments be Nodes, not strings.
789
790   From Stephen Kennedy:
791
792   - Performance:  Use a dictionary, not a list, for a Node's parents.
793
794   From Steven Knight:
795
796   - Add .zip files to the packages we build.
797
798   - Man page:  document LIBS, fix a typo, document ARGUMENTS.
799
800   - Added RANLIB and RANLIBFLAGS construction variables.  Only use them
801     in ARCOM if there's a "ranlib" program on the system.
802
803   - Add a configurable CFILESUFFIX for the Builder of .l and .y files
804     into C files.
805
806   - Add a CXXFile Builder that turns .ll and .yy files into .cc files
807     (configurable via a CXXFILESUFFIX construction variable).
808
809   - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag.
810     (Bug reported by Russell Christensen.)
811
812   - Fixed an exception when CPPPATH or LIBPATH is a null string.
813     (Bug reported by Richard Kiss.)
814
815   - Add a --profile=FILE option to make profiling SCons easier.
816
817   - Modify the new DVI builder to create .dvi files from LaTeX (.ltx
818     and .latex) files.
819
820   - Add support for Aliases (phony targets).
821
822   - Add a WhereIs() method for searching for path names to executables.
823
824   - Add PDF and PostScript document builders.
825
826   - Add support for compiling Fortran programs from a variety of
827     suffixes (a la GNU Make):  .f, .F, .for, .FOR, .fpp and .FPP
828
829   - Support a CPPFLAGS variable on all default commands that use the
830     C preprocessor.
831
832   From Steve Leblanc:
833
834   - Add support for the -U option.
835
836   - Allow CPPPATH, LIBPATH and LIBS to be specified as white-space
837     separated strings.
838
839   - Add a document builder to create .dvi files from TeX (.tex) files.
840
841   From Anthony Roach:
842
843   - Fix:  Construction variables with values of 0 were incorrectly
844     interpolated as ''. 
845
846   - Support env['VAR'] to fetch construction variable values.
847
848   - Man page:  document Precious().
849
850
851
852 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
853
854   From Chad Austin:
855
856   - Set PROGSUFFIX to .exe under Cygwin.
857
858   From Charles Crain:
859
860   - Allow a library to specified as a command-line source file, not just
861     in the LIBS construction variable.
862
863   - Compensate for a bug in os.path.normpath() that returns '' for './'
864     on WIN32.
865
866   - More performance optimizations:  cache #include lines from files,
867     eliminate unnecessary calls.
868
869   - If a prefix or suffix contains white space, treat the resulting
870     concatenation as separate arguments.
871
872   - Fix irregularities in the way we fetch DevStudio information from
873     the Windows registry, and in our registry error handling.
874
875   From Steven Knight:
876
877   - Flush stdout after print so it intermixes correctly with stderr
878     when redirected.
879
880   - Allow Scanners to return a list of strings, and document how to
881     write your own Scanners.
882
883   - Look up implicit (scanned) dependencies relative to the directory
884     of file being scanned.
885
886   - Make writing .sconsign files more robust by first trying to write
887     to a temp file that gets renamed.
888
889   - Create all of the directories for a list of targets before trying
890     to build any of the targets.
891
892   - WIN32 portability fixes in tests.
893
894   - Allow the list of variables exported to an SConscript file to be
895     a UserList, too.
896
897   - Document the overlooked LIBPATH construction variable.
898     (Bug reported by Eicke Godehardt.)
899
900   - Fix so that Ignore() ignores indirect, implicit dependencies
901     (included files), not just direct dependencies.
902
903   - Put the man page in the Debian distribution.
904
905   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
906
907   - Add preliminary support for Unicode strings.
908
909   - Efficiency:  don't scan dependencies more than once during the
910     walk of a tree.
911
912   - Fix the -c option so it doesn't stop removing targets if one doesn't
913     already exist.
914     (Bug reported by Paul Connell.)
915
916   - Fix the --debug=pdb option when run on Windows NT.
917     (Bug reported by Paul Connell.)
918
919   - Add support for the -q option.
920
921   From Steve Leblanc:
922
923   - Add support for the -u option.
924
925   - Add .cc and .hh file suffixes to the C Scanner.
926
927   From Anthony Roach:
928
929   - Make the scons script return an error code on failures.
930
931   - Add support for using code to generate a command to build a target.
932
933
934
935 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
936
937   From Charles Crain:
938
939   - Significant performance improvements in the Node.FS and
940     Scanner subsystems.
941
942   - Fix signatures of binary files on Win32 systems.
943
944   - Allow LIBS and LIBPATH to be strings, not just arrays.
945
946   - Print a traceback if a Python-function builder throws an exception.
947
948   From Steven Knight:
949
950   - Fix using a directory as a Default(), and allow Default() to
951     support white space in file names for strings in arrays.
952
953   - Man page updates:  corrected some mistakes, documented various
954     missing Environment methods, alphabetized the construction
955     variables and other functions, defined begin and end macros for
956     the example sections, regularized white space separation, fixed
957     the use of Export() in the Multiple Variants example.
958
959   - Function action fixes:  None is now a successful return value.
960     Exceptions are now reported.  Document function actions.
961
962   - Add 'Action' and 'Scanner' to the global keywords so SConscript
963     files can use them too.
964
965   - Removed the Wrapper class between Nodes and Walkers.
966
967   - Add examples using Library, LIBS, and LIBPATH.
968
969   - The C Scanner now always returns a sorted list of dependencies
970     so order changes don't cause unnecessary rebuilds.
971
972   - Strip $(-$) bracketed text from command lines.  Use this to
973     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
974     to changes to -I or -L options.
975
976   - Add the Ignore() method to ignore dependencies.
977
978   - Provide an error message when a nonexistent target is specified
979     on the command line.
980
981   - Remove targets before building them, and add an Environment
982     Precious() method to override that.
983
984   - Eliminate redundant calls to the same builder when the target is a
985     list of targets:  Add a ListBuilder class that wraps Builders to
986     handle lists atomically.  Extend the Task class to support building
987     and updating multiple targets in a single Task.  Simplify the
988     interface between Task and Taskmaster.
989
990   - Add a --debug=pdb option to re-run SCons under the Python debugger.
991
992   - Only compute a build signature once for each node.
993
994   - Changes to our sys.path[] manipulation to support installation into
995     an arbitrary --prefix value.
996
997   From Steve Leblanc:
998
999   - Add var=value command-line arguments.
1000
1001
1002
1003 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
1004
1005   From Charles Crain:
1006
1007   - Performance improvements in the Node.FS and Sig.Calculator classes.
1008
1009   - Add the InstallAs() method.
1010
1011   - Execute commands through an external interpreter (sh, cmd.exe, or
1012     command.com) to handle redirection metacharacters.
1013
1014   - Allow the user to supply a command handler.
1015
1016   From Steven Knight:
1017
1018   - Search both /usr/lib and /usr/local/lib for scons directories by
1019     adding them both to sys.path, with whichever is in sys.prefix first.
1020
1021   - Fix interpreting strings of multiple white-space separated file names
1022     as separate file names, allowing prefixes and suffixes to be appended
1023     to each individually.
1024
1025   - Refactor to move CompositeBuilder initialization logic from the
1026     factory wrapper to the __init__() method, and allow a Builder to
1027     have both an action and a src_builder (or array of them).
1028
1029   - Refactor BuilderBase.__call__() to separate Node creation/lookup
1030     from initialization of the Node's builder information.
1031
1032   - Add a CFile Builder object that supports turning lex (.l) and
1033     yacc (.y) files into .c files.
1034
1035   - Document: variable interpretation attributes; how to propogate
1036     the user's environment variables to executed commands; how to
1037     build variants in multiple BuildDirs.
1038
1039   - Collect String, Dict, and List type-checking in common utility
1040     routines so we can accept User{String,Dict,List}s all over.
1041
1042   - Put the Action factory and classes into their own module.
1043
1044   - Use one CPlusPlusAction in the Object Builder's action dictionary,
1045     instead of letting it create multiple identical instances.
1046
1047   - Document the Install() and InstallAs() methods.
1048
1049   From Steve Leblanc:
1050
1051   - Require that a Builder be given a name argument, supplying a
1052     useful error message when it isn't.
1053
1054   From Anthony Roach:
1055
1056   - Add a "duplicate" keyword argument to BuildDir() that can be set
1057     to prevent linking/copying source files into build directories.
1058
1059   - Add a "--debug=tree" option to print an ASCII dependency tree.
1060
1061   - Fetch the location of the Microsoft Visual C++ compiler(s) from
1062     the Registry, instead of hard-coding the location.
1063     
1064   - Made Scanner objects take Nodes, not path names.
1065     
1066   - Have the C Scanner cache the #include file names instead of
1067     (re-)scanning the file each time it's called.
1068
1069   - Created a separate class for parent "nodes" of file system roots,
1070     eliminating the need for separate is-parent-null checks everywhere.
1071     
1072   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
1073     favor of Python's more efficient built-in identity comparisons.
1074
1075
1076
1077 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
1078
1079   From Charles Crain:
1080
1081   - Added the Install(), BuildDir(), and Export() methods.
1082
1083   - Fix the -C option by delaying setting the top of the FS tree.
1084
1085   - Avoid putting the directory path on the libraries in the LIBS
1086     construction variable.
1087
1088   - Added a GetBuildPath() method to return the full path to the
1089     Node for a specified string.
1090
1091   - Fixed variable substitution in CPPPATH and LIBPATH.
1092
1093   From Steven Knight:
1094
1095   - Fixed the version comment in the scons.bat (the UNIX geek used
1096     # instead of @rem).
1097
1098   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
1099
1100   - Provide make-like warning message for "command not found" and
1101     similar errors.
1102
1103   - Added an EXAMPLES section to the man page.
1104
1105   - Make Default() targets properly relative to their SConscript
1106     file's subdirectory.
1107
1108   From Anthony Roach:
1109
1110   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
1111
1112   - Fixed SCONS_LIB_DIR to work as documented.
1113
1114   - Made Default() accept Nodes as arguments.
1115
1116   - Changed Export() to make it easier to use.
1117   
1118   - Added the Import() and Return() methods.
1119
1120
1121
1122 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
1123
1124 A brief overview of important functionality available in release 0.01:
1125
1126   - C and C++ compilation on POSIX and Windows NT.
1127
1128   - Automatic scanning of C/C++ source files for #include dependencies.
1129
1130   - Support for building libraries; setting construction variables
1131     allows creation of shared libraries.
1132
1133   - Library and C preprocessor search paths.
1134
1135   - File changes detected using MD5 signatures.
1136
1137   - User-definable Builder objects for building files.
1138
1139   - User-definable Scanner objects for scanning for dependencies.
1140
1141   - Parallel build (-j) support.
1142
1143   - Dependency cycles detected.
1144
1145   - Linux packages available in RPM and Debian format.
1146
1147   - Windows installer available.