Extend SConstruct et al. to build .zip files, and to build the scons-src package...
[scons.git] / src / CHANGES.txt
1 # Copyright (c) 2001, 2002 Steven Knight
2 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
3
4
5                  SCons - a software construction tool
6
7                             Change Log
8
9
10
11 RELEASE 0.06 - 
12
13   From Steven Knight:
14
15   - Add .zip files to the packages we build.
16
17
18
19 RELEASE 0.05 - Thu, 21 Feb 2002 16:50:03 -0600
20
21   From Chad Austin:
22
23   - Set PROGSUFFIX to .exe under Cygwin.
24
25   From Charles Crain:
26
27   - Allow a library to specified as a command-line source file, not just
28     in the LIBS construction variable.
29
30   - Compensate for a bug in os.path.normpath() that returns '' for './'
31     on WIN32.
32
33   - More performance optimizations:  cache #include lines from files,
34     eliminate unnecessary calls.
35
36   - If a prefix or suffix contains white space, treat the resulting
37     concatenation as separate arguments.
38
39   - Fix irregularities in the way we fetch DevStudio information from
40     the Windows registry, and in our registry error handling.
41
42   From Steven Knight:
43
44   - Flush stdout after print so it intermixes correctly with stderr
45     when redirected.
46
47   - Allow Scanners to return a list of strings, and document how to
48     write your own Scanners.
49
50   - Look up implicit (scanned) dependencies relative to the directory
51     of file being scanned.
52
53   - Make writing .sconsign files more robust by first trying to write
54     to a temp file that gets renamed.
55
56   - Create all of the directories for a list of targets before trying
57     to build any of the targets.
58
59   - WIN32 portability fixes in tests.
60
61   - Allow the list of variables exported to an SConscript file to be
62     a UserList, too.
63
64   - Document the overlooked LIBPATH construction variable.
65     (Bug reported by Eicke Godehardt.)
66
67   - Fix so that Ignore() ignores indirect, implicit dependencies
68     (included files), not just direct dependencies.
69
70   - Put the man page in the Debian distribution.
71
72   - Run HTML docs through tidy to clean up the HTML (for Konqueror).
73
74   - Add preliminary support for Unicode strings.
75
76   - Efficiency:  don't scan dependencies more than once during the
77     walk of a tree.
78
79   - Fix the -c option so it doesn't stop removing targets if one doesn't
80     already exist.
81     (Bug reported by Paul Connell.)
82
83   - Fix the --debug=pdb option when run on Windows NT.
84     (Bug reported by Paul Connell.)
85
86   - Add support for the -q option.
87
88   From Steve Leblanc:
89
90   - Add support for the -u option.
91
92   - Add .cc and .hh file suffixes to the C Scanner.
93
94   From Anthony Roach:
95
96   - Make the scons script return an error code on failures.
97
98   - Add support for using code to generate a command to build a target.
99
100
101
102 RELEASE 0.04 - Wed, 30 Jan 2002 11:09:42 -0600
103
104   From Charles Crain:
105
106   - Significant performance improvements in the Node.FS and
107     Scanner subsystems.
108
109   - Fix signatures of binary files on Win32 systems.
110
111   - Allow LIBS and LIBPATH to be strings, not just arrays.
112
113   - Print a traceback if a Python-function builder throws an exception.
114
115   From Steven Knight:
116
117   - Fix using a directory as a Default(), and allow Default() to
118     support white space in file names for strings in arrays.
119
120   - Man page updates:  corrected some mistakes, documented various
121     missing Environment methods, alphabetized the construction
122     variables and other functions, defined begin and end macros for
123     the example sections, regularized white space separation, fixed
124     the use of Export() in the Multiple Variants example.
125
126   - Function action fixes:  None is now a successful return value.
127     Exceptions are now reported.  Document function actions.
128
129   - Add 'Action' and 'Scanner' to the global keywords so SConscript
130     files can use them too.
131
132   - Removed the Wrapper class between Nodes and Walkers.
133
134   - Add examples using Library, LIBS, and LIBPATH.
135
136   - The C Scanner now always returns a sorted list of dependencies
137     so order changes don't cause unnecessary rebuilds.
138
139   - Strip $(-$) bracketed text from command lines.  Use this to
140     surround $_INCDIRS and $_LIBDIRS so we don't rebuild in response
141     to changes to -I or -L options.
142
143   - Add the Ignore() method to ignore dependencies.
144
145   - Provide an error message when a nonexistent target is specified
146     on the command line.
147
148   - Remove targets before building them, and add an Environment
149     Precious() method to override that.
150
151   - Eliminate redundant calls to the same builder when the target is a
152     list of targets:  Add a ListBuilder class that wraps Builders to
153     handle lists atomically.  Extend the Task class to support building
154     and updating multiple targets in a single Task.  Simplify the
155     interface between Task and Taskmaster.
156
157   - Add a --debug=pdb option to re-run SCons under the Python debugger.
158
159   - Only compute a build signature once for each node.
160
161   - Changes to our sys.path[] manipulation to support installation into
162     an arbitrary --prefix value.
163
164   From Steve Leblanc:
165
166   - Add var=value command-line arguments.
167
168
169
170 RELEASE 0.03 - Fri, 11 Jan 2002 01:09:30 -0600
171
172   From Charles Crain:
173
174   - Performance improvements in the Node.FS and Sig.Calculator classes.
175
176   - Add the InstallAs() method.
177
178   - Execute commands through an external interpreter (sh, cmd.exe, or
179     command.com) to handle redirection metacharacters.
180
181   - Allow the user to supply a command handler.
182
183   From Steven Knight:
184
185   - Search both /usr/lib and /usr/local/lib for scons directories by
186     adding them both to sys.path, with whichever is in sys.prefix first.
187
188   - Fix interpreting strings of multiple white-space separated file names
189     as separate file names, allowing prefixes and suffixes to be appended
190     to each individually.
191
192   - Refactor to move CompositeBuilder initialization logic from the
193     factory wrapper to the __init__() method, and allow a Builder to
194     have both an action and a src_builder (or array of them).
195
196   - Refactor BuilderBase.__call__() to separate Node creation/lookup
197     from initialization of the Node's builder information.
198
199   - Add a CFile Builder object that supports turning lex (.l) and
200     yacc (.y) files into .c files.
201
202   - Document: variable interpretation attributes; how to propogate
203     the user's environment variables to executed commands; how to
204     build variants in multiple BuildDirs.
205
206   - Collect String, Dict, and List type-checking in common utility
207     routines so we can accept User{String,Dict,List}s all over.
208
209   - Put the Action factory and classes into their own module.
210
211   - Use one CPlusPlusAction in the Object Builder's action dictionary,
212     instead of letting it create multiple identical instances.
213
214   - Document the Install() and InstallAs() methods.
215
216   From Steve Leblanc:
217
218   - Require that a Builder be given a name argument, supplying a
219     useful error message when it isn't.
220
221   From Anthony Roach:
222
223   - Add a "duplicate" keyword argument to BuildDir() that can be set
224     to prevent linking/copying source files into build directories.
225
226   - Add a "--debug=tree" option to print an ASCII dependency tree.
227
228   - Fetch the location of the Microsoft Visual C++ compiler(s) from
229     the Registry, instead of hard-coding the location.
230     
231   - Made Scanner objects take Nodes, not path names.
232     
233   - Have the C Scanner cache the #include file names instead of
234     (re-)scanning the file each time it's called.
235
236   - Created a separate class for parent "nodes" of file system roots,
237     eliminating the need for separate is-parent-null checks everywhere.
238     
239   - Removed defined __hash__() and __cmp() methods from FS.Entry, in
240     favor of Python's more efficient built-in identity comparisons.
241
242
243
244 RELEASE 0.02 - Sun, 23 Dec 2001 19:05:09 -0600
245
246   From Charles Crain:
247
248   - Added the Install(), BuildDir(), and Export() methods.
249
250   - Fix the -C option by delaying setting the top of the FS tree.
251
252   - Avoid putting the directory path on the libraries in the LIBS
253     construction variable.
254
255   - Added a GetBuildPath() method to return the full path to the
256     Node for a specified string.
257
258   - Fixed variable substitution in CPPPATH and LIBPATH.
259
260   From Steven Knight:
261
262   - Fixed the version comment in the scons.bat (the UNIX geek used
263     # instead of @rem).
264
265   - Fix to setup.py so it doesn't require a sys.argv[1] argument.
266
267   - Provide make-like warning message for "command not found" and
268     similar errors.
269
270   - Added an EXAMPLES section to the man page.
271
272   - Make Default() targets properly relative to their SConscript
273     file's subdirectory.
274
275   From Anthony Roach:
276
277   - Documented CXXFLAGS, CXXCOM, and CPPPATH.
278
279   - Fixed SCONS_LIB_DIR to work as documented.
280
281   - Made Default() accept Nodes as arguments.
282
283   - Changed Export() to make it easier to use.
284   
285   - Added the Import() and Return() methods.
286
287
288
289 RELEASE 0.01 - Thu Dec 13 19:25:23 CST 2001
290
291 A brief overview of important functionality available in release 0.01:
292
293   - C and C++ compilation on POSIX and Windows NT.
294
295   - Automatic scanning of C/C++ source files for #include dependencies.
296
297   - Support for building libraries; setting construction variables
298     allows creation of shared libraries.
299
300   - Library and C preprocessor search paths.
301
302   - File changes detected using MD5 signatures.
303
304   - User-definable Builder objects for building files.
305
306   - User-definable Scanner objects for scanning for dependencies.
307
308   - Parallel build (-j) support.
309
310   - Dependency cycles detected.
311
312   - Linux packages available in RPM and Debian format.
313
314   - Windows installer available.