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