source: CMT/HEAD/ChangeLog @ 45

Last change on this file since 45 was 45, checked in by arnault, 19 years ago

cmt cvs operations - See CL 272

  • Property svn:eol-style set to native
File size: 186.5 KB
Line 
12005-05-02  Christian Arnault  <arnault@lal.in2p3.fr> 272
2
3        * source/cmt_cvs.cxx: Adding CMTPATH internal management
4        Improve broadcast operation after recursive checkouts
5
62005-05-01  Christian Arnault  <arnault@lal.in2p3.fr> 272
7
8        * mgr/Makefile (pacman): Create the pacman file for that version.
9
10        * mgr/CMT.pacman: Migrate to Pacman3
11
12        * source/cmt_cvs.cxx: Supporting project checkout
13        recursive project checkouts
14        without_version_directory mode
15        container statements in project files.
16        alias version directory
17        Various cleanup and restructuring operations
18
19        * mgr/requirements: Adapt for shared libs on CYGWIN (thanks to Guy Barrand)
20
21        * src/setup.zsh: Add cmt subprojects command
22
23        * src/setup.tcsh: Add cmt subprojects command
24
252005-04-26  Christian Arnault  <arnault@lal.in2p3.fr> 271
26
27        * source/cmt_cvs.cxx: Add recursive passes for cvs co -R on projects (not completed)
28        Add support/checking of protocol level against CVS pluggin
29        Detection of non-installation of the CVS pluggin
30
31        * mgr/requirements: Add a macro cmt_cvs_protocol_level to specify
32        the expected protocol level with the CVS pluggin
33
342005-04-25    <arnault@lal.in2p3.fr> 270
35
36        * source/cmt_cvs.cxx (class CvsImplementation): Accept empty
37        argument for queries on subprojects
38
39        * source/cmt_cvs.cxx (class CvsImplementation): Accept empty
40        argument for queries on subpackages
41
42        * source/cmt_cvs.cxx (class CvsImplementation): Selection for
43        getting the mudule contents is done using the structure
44        information.
45
46        * source/cmt_cvs.cxx (class CvsImplementation): Isolate specific
47        behaviour into dedicated functions for getting the specific
48        contents for packages or for projects.
49
50        * source/cmt_cvs.cxx (class CvsImplementation): Retrieve fields
51        for structure and subprojects from the CVS pluggin.
52
53        * source/cmt_cvs.cxx (class CvsImplementation): Manage the
54        protocol level related with the version of the CVS pluggin.
55
56        * source/cmt_cvs.cxx (class CvsImplementation): Suppress all dots
57        from the tmpdir due to problems on Windows
58
59        * source/cmt_cvs.cxx (class CvsImplementation): Add support for
60        struture_info and subprojects coming from the new CVS pluggin
61
62        * source/cmt_parser.cxx (do_cvssubprojects): Handle the
63        cvssubprojects command
64        (parser): Commands related with CVS should at least read the
65        requirements file of CMT
66
67        * source/cmt_parser.h (enum): Add cvssubprojects action
68
69        * source/cmt_commands.cxx (CommandHelp): Add help for
70        cvssubprojects command
71
72        * source/cmt_commands.cxx (do_cvssubprojects): Accept empty
73        argument to query for subprojects at top of the repository
74
75        * source/cmt_commands.cxx (do_cvssubpackages): Accept empty
76        argument to query for subpackages at top of the repository
77
78        * source/cmt_commands.cxx (ArgParser): Manage cvssubprojects command.
79
80        * source/cmt_commands.h (class ArgParser): Add cvssubprojects command
81
82        * source/cmt_use.cxx (fill_standard_macros): Production of a new
83        standard macro for obtaining the project releases
84
85        * source/cmt_cvs.h (class Cvs): Add the subprojects function to
86        query CVS about the existing subprojects of a given module.
87
882005-04-23  Christian Arnault  <arnault@lal.in2p3.fr> 269
89
90        * source/cmt_project.h (class Project): container and
91        container_version access methods
92
93        * source/cmt_project.cxx (container_action): Implementation of the
94        container statement
95
96        * source/cmt_project.h (class Project): Add handling of the container statement
97
98        * source/cmt_syntax.cxx (class KwdContainer): Add support of the
99        project container package
100        (SyntaxParser): idem
101
1022005-04-21  Christian Arnault  <arnault@lal.in2p3.fr> 268
103
104        * source/cmt_project.cxx (create_project): Check pwd for finding
105        projects.
106
107        * source/cmt_symbol.cxx (find_path_entry): Look for existing PATH
108        entries by comparing the real path rather than the logical
109        path. Use pwd everywhere (or CmtSystem::compress_path when the
110        path is not exactly found)
111       
112
1132005-04-14  Christian Arnault  <arnault@lal.in2p3.fr> 267
114
115        * source/cmt_system.cxx (class CMTPathManager): CMTUSERCONTEXT and
116        CMTHOME environments give a specific name to teh associated
117        project.
118
119        * source/cmt_project.cxx (create_project): Fixing the project
120        naming scheme. Project name specified in the project files take
121        precedence over the names found in the path.
122
1232005-04-13  Christian Arnault  <arnault@lal.in2p3.fr> 266
124
125        * source/cmt_commands.cxx (do_cvstags, do_cvssubpackages): Fix arg counting.
126
1272005-04-12  Christian Arnault  <arnault@lal.in2p3.fr> 265
128
129        * source/cmt_project.cxx (create_project): Restructure the
130        algorithm for detection of roject structuring cases. Construct a
131        finite list of cases.
132        (has_parent): Implement recursive query function
133        (has_child): Implement recursive query function
134        (add_parent, add_child): Use the recursive detection to avoid cycles.
135
136        * source/cmt_project.h (class Project): Add has_parent and
137        has_child functions to protect against recursive cycles
138
1392005-04-02  Christian Arnault  <arnault@lal.in2p3.fr> 264
140
141        * source/cmt_version.h (CMTVERSION): Prepare for v1r18p20050401
142
143        * mgr/requirements: use ln -fs for cmt_installarea_command
144
1452005-03-31  Christian Arnault  <arnault@lal.in2p3.fr> 263
146
147        * doc/ReleaseNotes: prepare release notes
148       
149        * source/cmt_project.cxx (create_project): Fix settings of the project name.
150
1512005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 262
152
153        * mgr/NMake (demo): Adapt to the new syntax of cmt create_project
154
155        * source/cmt_project.cxx (create_project): Suppress several warnings
156
1572005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 261
158
159        * doc/table.html: Install link to the Trac bug reporting system. 
160
1612005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 261
162
163        * source/cmt_project.cxx (create): The create function now creates
164        the complete directory hierarchy for the project including the
165        release level(s). Can accept a path.
166        (create_project): Don't assume a release level.
167
168        * source/cmt_project.h (class Project): The create function now
169        accepts a release and a path argument
170
171        * source/cmt_commands.cxx (show): Suppress debug printouts
172        * source/cmt_parser.cxx (do_help): Suppress debug printouts
173
174        * source/cmt_system.cxx (is_version_directory): Accept HEAD/head as a valid version directory.
175
1762005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 260
177
178        * doc/CMTDoc.xml: work on the doc (unfinished)
179
180        * source/cmt_project.cxx (use_action): The name specification of a
181        project use statement is used to create the project.
182 
183        * source/cmt_project.cxx (create_project): Implement the algo to
184        construct or discover the real project name and release from the
185        context. The new algo supports release specifications as a
186        multi-level directory definition.
187
188        * source/cmt_project.cxx (get_release_from_path): Function to
189        retreive the release sub-string from a path, given the project
190        name.
191
192        * source/cmt_project.h (class ProjectFactory): Add the project
193        name as first argument to the create_project function.
194
195        * source/cmt_system.cxx (class CMTPathManager): when specified
196        from a CMTPATH item, the project creation has to guess the project
197        name.
198
199        * mgr/Makefile (gendoc): Suppress the | output modifier
200
2012005-03-16  Christian Arnault  <arnault@lal.in2p3.fr> 259
202
203        * mgr/fragments/dependencies: We need to reconsider all sources to
204        recompute all dependencies that may have changed due to
205        configuration changes. Thus the -all_sources is added
206
2072005-03-15  Christian Arnault  <arnault@lal.in2p3.fr> 258
208
209        * source/cmt_parser.cxx (clear): Add m_autoconfigure_cmtpath
210        variable to discard autoconfiguration of CMTPATH during initial
211        phases of the configuration.
212       
213        (guess_current_project): Once the current project is known, the
214        CMTPATH is re-generated from the effective knowledge of the
215        project graph.
216
217        (do_setup): Add a check of the configuration when doing cmt setup
218
219        (do_check_configuration): analyze the tags coming from arguments
220        or from CMTSITE to detect mistypings. This is done by checking the
221        effective usage of those tags.
222
223        (configure_cmt_path): Analyze CMTPATH from either the symbol value
224        or from the EV, before asking the project factory to create the
225        projects from it.
226
227        (get_strategy): Add a generic local function to query the strategy elements.
228
229        * source/cmt_project.cxx (add): Manage conflicts between project
230        release requests on a strict basis (no wild card - exact match
231        only)
232
233        * source/cmt_project.h (class ProjectFactory): No longer need m_first and m_previous
234
235        * source/cmt_project.cxx (create_project): Implement a graph of projects.
236        (create_project): Interpret the first top level directory as the project release
237       
238        (create_project): Interpret the second top level directory as the
239        project name when it's not defined in the project file. So we
240        don't create a dummy project name anymore Project<n>.
241
242        * source/cmt_commands.cxx (ArgParser): Suppress obsolete +path option
243        (parse): Initialize the m_action value to none to fix a bad management of unknown commands
244        (do_filter): Implement the cmt filter command
245
246        * source/cmt_error.cxx (class Error): Add unknown_command and
247        project_release_conflict errors
248
249        * source/cmt_syntax.cxx (class KwdBuildStrategy): Apply the
250        restructuration of strategy management to strategy decoding
251
252        (class KwdSetupStrategy): idem
253        (class KwdUse): Support the use statement for project files
254        (SyntaxParser): Support the use statement for project files
255
256        * source/cmt_project.h (class StrategyDef): Create a class to hold
257        the definition of all strategy elements
258        (class Strategy): Create a class to hold the application of a strategy into a project
259        (class StrategyMgr): Create a singleton to manage the strategy definitions
260        (class ProjectFactory): Add parent argument to create_project to handle the project graph
261        (class IProjectVisitor): Create a class to visit the project graph
262        (class Project): Transport all definitions related with strategies into Strategy objects
263
264        * source/cmt_system.cxx (class CMTPathManager): Add a class to
265        interact with the ProjectFactory to convert CMTPATH specifications
266        into projects
267
268        (get_cmt_paths): Suppress the setting from $CMTPATH. This is
269        replaced by a selective understanding of the source of CMTPATH
270        either from the symbol (when defined in a requirements file) or
271        from the EV. This selection is performed in
272        Cmt::configure_cmt_path.
273
274        (get_cmt_paths): Suppress the definition of a CMTPATH entry for CMT itself
275
2762005-03-10    <arnault@lal.in2p3.fr> 257
277
278        * mgr/NMake (demo): Add project file to the demo context.
279
2802005-03-04  Christian Arnault  <arnault@lal.in2p3.fr> 256
281
282        * source/cmt_project.cxx: Ongoing work for redefining Project graphs.
283
2842005-03-03  Christian Arnault  <arnault@lal.in2p3.fr> 255
285
286        * source/cmt_project.cxx (add): Manage project release conflicts.
287
288        * source/cmt_error.h (class CmtError): Add project_release_conflict error
289        * source/cmt_error.cxx (class Error): Add project_release_conflict error
290
291        * source/cmt_project.h (class Project): Introduce the management
292        of release information in projects
293
294        * source/cmt_parser.cxx (do_check_configuration): Finally suppress the checking of CMTCONFIG
295        (do_setup): Add do_check_configuration to check some tag settings.
296
2972005-03-02  Christian Arnault  <arnault@lal.in2p3.fr> 254
298
299        * source/cmt_symbol.h (class Symbol): Add an optional argument to build_macro_value to switch display mode
300
301        * source/cmt_symbol.cxx (show_macro): Improve the display mode so as to display only once the macro construction steps
302
303        * source/cmt_parser.cxx (guess_current_project): Regenerate CMTPATH from the effective set of subprojects.
304
305        * source/cmt_commands.cxx (parse): Handle unexpected arguments
306
307        * source/cmt_error.cxx (class Error): Added unknown_command error
308        * source/cmt_error.h (class CmtError): Added unknown_command error
309
310        * source/cmt_commands.cxx (do_filter): Missing implementation for the filter command
311
3122005-03-01  Christian Arnault  <arnault@lal.in2p3.fr> 254
313
314        * source/cmt_tag.cxx (use_operand): Add way of checking internal structure of a tag
315        * source/cmt_tag.cxx (use_ref): Add way of checking internal structure of a tag
316        * source/cmt_tag.h (class Tag): Add way of checking internal structure of a tag
317        * source/cmt_symbol.h (class Symbol): Add way of checking if a tag is used by symbols.
318        * source/cmt_symbol.cxx (print): Suppress the "export" action after defining an alias in Sh mode
319        * source/cmt_project.cxx: Introduce use_action
320        * source/cmt_syntax.cxx (SyntaxParser): Add support to use statements in project files
321        * source/cmt_project.cxx (create_project): Add comments
322
3232005-02-14  Christian Arnault  <arnault@lal.in2p3.fr> 253
324
325        * src/Makefile.header (common_target): mktemp refuses to create
326        subdirectory when TMPDIR specifies something different than /tmp
327        that does not exist yet.
328
3292005-02-07  Christian Arnault  <arnault@lal.in2p3.fr> 252
330
331        * source/cmt_system.cxx (scan_dir): Fix a bug that killed the cmt
332        show packages command in some cases
333
3342005-02-03    <arnault@lal.in2p3.fr> 251
335
336        * source/cmt_commands.cxx (do_cvstags): fix arg counting
337        * source/cmt_commands.cxx (do_cvssubpackages): fix arg counting
338
3392004-12-14    <arnault@lal.in2p3.fr> 250
340
341        * source/cmt_parser.cxx (class StandardMacroBuilder): Fix a bug
342        that caused a premature exit from the scan of constituents.
343
3442004-12-13    <arnault@lal.in2p3.fr> 249
345
346        * source/cmt_constituent.cxx (parse): Add a specific behaviour for
347        documents generated for actions so as to keep the action_value
348        definition unparsed.
349
3502004-12-03 <arnault@lal.in2p3.fr> 248
351
352        * mgr/fragments/nmake/library: apply patches from Pere about installing pdb files for Debug mode
353
3542004-12-01    <arnault@lal.in2p3.fr> 247
355
356        * source/cmt_version.h (CMTVERSION): Prepare for tagging v1r18p20041201
357
358        * source/cmt.h (class Cmt): Fix typo
359
3602004-12-01  Christian Arnault  <arnault@lal.in2p3.fr> 246
361
362        * mgr/cmt_uninstall_action.sh: Better management of directory removal
363
3642004-12-01  Christian Arnault  <arnault@lal.in2p3.fr> 246
365
366        * mgr/fragments/application (install):
367        * mgr/fragments/library (install):
368        * mgr/fragments/library_no_share (install):
369        * mgr/fragments/install_includes_header (install):
370        * mgr/fragments/jar (install):
371        * mgr/fragments/java_header (install): Remove the connection
372        between uninstall and clean targets. So now when gmake clean is
373        run no uinstallation occurs in the installation area.
374
3752004-11-11    <arnault@lal.in2p3.fr> 245
376
377        * source/cmt_parser.h:
378        * source/cmt_project.cxx:
379        * source/cmt_project.h:
380        * source/cmt_syntax.cxx:
381        * source/cmt_parser.cxx:
382        * doc/CMTDoc.xml: Suppress obsolete (and useless) makefile strategy
383
384        * source/cmt_parser.cxx (print_context): the setup strategy is
385        really used to generate the ROOT and CONFIG env. vars.
386
387        * source/cmt_parser.cxx (get_setup_strategy): Get the setup
388        strategy for each use so as to really build ROOT or CONFIG
389        according to the real project of the use
390
3912004-11-09    <arnault@lal.in2p3.fr> 244
392
393        * source/cmt_version.h: Preparing version tag for v1r18
394       
395        * mgr/requirements:
396        * source/cmt_parser.h:
397        * source/cmt_projects.cxx: Change default build strategy to without_installarea
398
3992004-11-08    <arnault@lal.in2p3.fr> 243
400
401        * mgr/Makefile (docs): Do some cleanup
402
403        * source/cmt_parser.cxx (do_build_library_links): make use of the
404        new library_install_command macro
405
406        * mgr/requirements: Create a new macro library_install_command for
407        defining how to actually install libraries through the
408        <package>_libraries macro.
409
4102004-11-02  Christian Arnault  <arnault@lal.in2p3.fr> 242
411
412        * source/cmt_commands.cxx (option_tag): When resetting tags one
413        need to also call again guess_current_project
414       
415        (option_tag): In fact on can simply reset all active tags, and
416        regenerate activations rather than clearing all tags.
417
418        * source/cmt_parser.cxx (guess_current_project): Fix a typo
419
420        * source/cmt_tag.cxx (get_default): Make the tag Default a static
421        object to avoid killing it.
422
423
4242004-11-01    <arnault@lal.in2p3.fr> 241
425
426        * source/cmt_parser.cxx (guess_current_project): Implement the
427        detection of the current project
428
429        * source/cmt_parser.cxx (configure): Add the detection of the
430        current project through a project file above the current directory
431
4322004-10-30  Christian Arnault  <arnault@lal.in2p3.fr> 240
433
434        * source/cmt_parser.cxx (class StandardMacroBuilder): Apply the
435        cmtpath_patterns before setting up the installarea parameters so
436        as to let the patterns really define the
437        <project>_installarea_prefix for instance.
438       
439        (set_standard_macros): Remove this first setting of installarea
440        because it's better done only once.
441
442        * mgr/fragments/constituent: Remove a debug message
443
444        * mgr/requirements: Prepare for new tag v1r18
445
446        * mgr/cmt_uninstall_action.sh:
447        * mgr/cmt_install_action.sh: Late fixes
448
4492004-10-29    <arnault@lal.in2p3.fr> 239
450
451        * source/cmt_parser.cxx (set_standard_macros): Restructure the
452        StandardMacroBuilder to provide all steps.  Move upward the
453        fill_for_install_area to make all cmtpath_patterns applied before
454        manging other macros. This caused the include_dirs installed in a
455        cmtpath_pattern useless.
456
457        * source/cmt_list.h (class cmt_list): few fixes for CYGWIN
458
459        * mgr/requirements: CYGWIN tag implies Linux
460
461        * mgr/fragments/install_includes_header (uninstall):
462        * mgr/fragments/java_header (install):
463        * mgr/fragments/jar (install):
464        * mgr/fragments/library_no_share (install):
465        * mgr/fragments/library (install):
466        * mgr/fragments/application (install):
467        * mgr/cmt_install_action.sh:
468        * mgr/cmt_uninstall_action.sh: Improve the argument passing scheme
469        to make it more flexible. Add an argument to get cmtpath, to check
470        it against pwd. However this should never occur since cmt itself
471        is supposed to never generate CMTNSTALLAREA when this is not
472        appropriate.
473
474        * source/cmt_install_area.cxx (setup_current_installarea): Consider <project>_installarea_prefix
475
476        * source/cmt_system.cxx (compress_path): Fix a bug: when detecting
477        the aaa/bbb/../ccc pattern, "bbb" cannot be ".." nor "." nor
478        contain a macro reference.
479
4802004-10-25    <arnault@lal.in2p3.fr> 238
481
482        * source/cmt_parser.cxx (do_run): Force the settings of EVs
483        before launching the run action
484
485        * source/cmt_parser.cxx (do_broadcast): Force the settings of EVs
486        before launching the bro action
487
488        * source/cmt_commands.cxx (do_run): The run command now transmits all arguments
489
490        * source/cmt_list.h: Prepare a list class for future use. This be
491        used to handle the constituent order mechanisms.
492
493        * mgr/Makefile:
494        * mgr/NMake (post_build): Add a post_build step to re-generate the
495        cmt_dependencies.[n]make file (one version in mgr without the
496        stamps and one version in $(bin) with them)
497       
498        * source/cmt_generators.h (class DependencyGenerator):
499        * source/cmt_generators.cxx (build): Add an option -no_stamps to
500        buid dependencies so as to generate a version of the dependency
501        files without the extra stamps specifications and with no stamp
502        file generation. This is need to generate the bootstrap dependency
503        file for cmt itself.
504
505        * source/cmt_generators.cxx:
506        * source/cmt_generators.h (class DependencyGenerator):
507        * source/cmt_generator.h (class CmtGenerator): Revisit the construction of dependencies files:
508        The dependencies file is split as one file fragment per dependency line (ie per file)
509        This dep fragment is installed into $(bin)/<constituent>/*.stamp
510        a dep to this stamp file is installed in the dependency line
511        the stamps file is only touched when it changes
512        All this to ensure that recompilations are done when anythin in th configuration is changed
513
514        * source/cmt_map.h (cmt_vmap): Introduce cmt_vmap to construct
515        maps of objects by value
516
517        * source/cmt.h (class Cmt): Restart of set settings can be
518        manually triggered. Typically to ensure that they are really set
519        just before launching an action
520
521        * mgr/cmt_make_shlib_common.sh (temp_shlib): Suppress the
522        automatic construction of bundles on Darwin
523
524        * source/cmt_system.cxx (add_cmt_path): Adding protections of
525        validity of CMTPATH entries
526
527        * source/cmt.h:
528        * source/cmt_parser.h:
529        * source/cmt_parser.cxx:
530        * source/cmt_command.h:
531        * source/cmt_command.cxx: Introducing classes for command line parsing
532        All decoding of the cmt command line arguments are transfered there.
533        The decoding is also rationalized.
534        actions can be seen as cmt command extensions
535        better preparing of EVs before running actions
536        prepare the Makefile default file before running actions
537        improve the generic management of options
538        * cmt.h: Introduction of the CmtContext class to hold global state variables
539        for Cmt. The Cmt class now only contains static functions.
540
541        * src/source: Major restructuring of the directories:
542        All real sources of cmt now go to ../source
543        ../src only contains stuff that need to be exported
544        ../fragments is transfered to mgr/fragments.
545
546        * doc/gendoc.py (Book.book_start): Produce the revision date of the documentation
547        Install the real version tag in the doc.
548
549        * doc/CMTDoc.xml: Improving the doc
550
5512004-10-17    <arnault@lal.in2p3.fr> 238
552
553        * mgr/cmt_make_shlib_common.sh: Suppress the systematic creation
554        of a bundle in Darwin context
555
5562004-09-28    <arnault@lal.in2p3.fr> 237
557
558        * src/cmt_system.cxx (compress_path): The algorithm must ignore
559        the following pattern: xxxx/$(mmm)/../yyyy which cannot be reduced
560        to xxxx/yyyy. In fact it nows expands the path when macros are in it
561
5622004-09-27    <arnault@lal.in2p3.fr> 237
563
564        * src/NMakefile.header (check_config): Ensure that configuration
565        checking is performed first.
566
567        * src/Makefile.header (check_config): Ensure that configuration
568        checking is performed first.
569
570        * src/cmt_use.cxx (need_new): Only display the incompatible case.
571
572        * src/cmt_use.cxx (reach_package): IncompatibleMajorIds is no
573        longer considered. Id comparison is no longer rejected in any
574        case.
575
576        * src/cmt_use.cxx (compare_versions): Really compare major ids. No
577        longer produce IncompatibleMajorIds
578
579        * src/cmt_use.cxx (enum): Add cases to completely analyze the major ids
580
581        * src/cmt_use.cxx (operate):
582
583        * src/cmt_system.cxx (get_cmt_paths): Suppress the systematic
584        addition of $CMTROOT in CMTPATH items!
585
586        * src/cmt_awk.cxx (scan_path): really stop the too deep recursion
587
5882004-09-01    <arnault@lal.in2p3.fr> 236
589
590        * src/cmt_version.h (CMTVERSION): v1r16p20040901
591
592        * doc/ReleaseNotes.html: Prepare next tagging
593
594        * mgr/Makefile: Adapt for the new CMTBIN convention
595
596        * src/cmt_model.cxx (filter): Substitute <cmt:null/> only just
597        before printing for empty vector elements
598
5992004-08-31    <arnault@lal.in2p3.fr> 235
600
601        * doc/CMTDoc.xml: Improve the doc.
602
603        * src/cmt_model.cxx (strict_expand): Support parameter values enclosed in simple quotes
604        Only display endl at the very end or recursion.
605
606        * src/cmt_project.cxx (configure): Fix typo in tag excludes
607
6082004-08-30  Christian Arnault  <arnault@lal.in2p3.fr> 234
609
610        * mgr/requirements: Keep 3 digits for the compiler version
611        * mgr/Makefile: augment support for SLC3 machines
612        * mgr/cmt_linux_version.sh: idem
613
6142004-08-30    <arnault@lal.in2p3.fr> 233
615
616        * doc/CMTDoc.xml:
617        * doc/table.html: Install the reference to CeCILL licences
618        * doc/download.html:
619        * doc/intro.html:
620        * doc/copyright.html:
621
622        * fragments/dependencies: Trigger the reconstruction of dependency
623        file when the setup changes.
624
625        * fragments/constituents_header (first): Do not ovverride
626        <package>_setup.make when identical. This permits its use as a
627        real stamp file to trigger reconstruction of dependency files.
628
629        * mgr/Makefile (cpp): Take into account the new convention for
630        CMTBIN (suffixed with `uname -m`)
631
632        * mgr/cmt_system.sh: improve the default value of CMTCONFIG on Cygwin
633
634        * mgr/requirements: Improve the cleaning and setting of PATH
635        vaiables WRT installation area strategy
636
637        * src/cmt_parser.cxx (dos_script_prefix): Standalone packages
638        don't need ..\.. in the -path option of DOS setup scripts
639
640        * src/setup.sh (CMTBIN): Suffix CMTBIN with `uname -m` on Unix machines
641        * src/setup.csh: idem
642
6432004-08-26    <arnault@lal.in2p3.fr> 232
644
645        * src/setup.bat: Suppress the rem--- lines
646        * src/demo/demoA/init.bat: Suppress the rem--- lines
647        * src/demo/demoB/init.bat: Suppress the rem--- lines
648
6492004-08-25  Christian Arnault  <arnault@lal.in2p3.fr> 231
650
651        * src/setup.tcsh: Fix typo
652
653        * src/cmt_license.sh: Add template file to include in a various sources (commented by hash signs)
654        * src/cmt_license.h: Add template file to include in a C++ source
655
656        * src/cmt_parser.cxx (do_expand_model): Add a -test internal
657        option to the expand model command to test regular expressions.
658
659        * src/cmt_regexp.cxx (match): a or_node matches the longest
660         matching alternate patterns, instead of the first one.
661
662        * src/cmt_system.cxx (split): Detect \" and \' patterns and ignore
663        them as word separators. So a text containing "a b c" d e \"x\" will result in 4 fields
664        a b c
665        d
666        e
667        \"x\"
668
669        * src/cmt_model.cxx (strict_expand): Implement the strict model
670        expansion. The new syntax for definning model is:
671
672        <cmts:name att="value" ... />         for a single expansion
673        <cmtv:name att="v1 v2 v3 ..." ... />  for a multiple expansion
674
675        The element <cmt:null/> may be used in a vector value to specify an empty value.
676
677        name is the name of a declared make_fragment as usual.
678       
679
6802004-08-23  Christian Arnault  <arnault@lal.in2p3.fr> 230
681
682        * src/cmt_regexp.h (class cmt_regexp): Adding comparison operator
683        and extraction operator to regexp::iterator
684
685        * src/cmt_parser.cxx (do_expand_model): Parse the -strict option
686
687        * src/cmt_model.h (class CmtModel): Start designing the support
688        for stricter model expansion (to support model files in XML)
689
690        * src/cmt_license.txt: First introduction of the license text (obtained from CeCILL)
691
692        * src/Makefile.header (all): Evaluate the result of the cmt check
693        configuration and stop Make if it terminates in error.
694
695        * src/cmt_generators.cxx (analyze_file): Evaluate if the file
696        exists. Only generate its SourceFile if it exists or can be built
697        (build): Accumulate the file names only if they can be built.
698
699        * src/cmt_generators.h (class DocumentGenerator): Make
700        analyze_file return if the file is not found.
701        (class LibraryGenerator): idem
702
703        * src/cmt_parser.cxx (parser): Make the configure_error a fatal error.
704
705        * src/Makefile.header (common_target): Improve the tmpdir mechanisms. Support ${TMPDIR}
706
707        * src/cmt_parser.cxx (dos_script_prefix): Suppress the -quiet
708        option in the setup scripts now that errors are sent to stderr
709        instead of stdout.
710
711        * src/cmt_constituent.cxx (class constituents_action_iterator): Use cerr instead of cout
712
713        * src/cmt_fragment.cxx (copy): Use cerr instead of cout
714
715        * src/cmt_generators.cxx (java_file_action, build, build): Use cerr instead of cout
716
717        * src/cmt_parser.cxx (do_awk): typo
718        (do_filter, parse_arguments, parser): Use cerr instead of cout
719
720        * src/cmt_use.cxx (install_library, get_all_clients, operate): Use cerr instead of cout
721
722        * src/cmt_system.cxx (remove_file, remove_directory): Use cerr instead of cout
723
724        * src/cmt_tag.cxx (action_apply): Use cerr instead of cout
725
726        * src/cmt_symbol.cxx (create, build): Use cerr instead of cout
727
728        * src/cmt_pattern.cxx (action): Use cerr instead of cout
729
730        * src/cmt_syntax.cxx: general substitution of cout to cerr
731
732        * src/cmt_error.cxx (get_error_name): format text only
733        (print): Use cerr instead of cout
734
735        * src/cmt_lock.cxx (check): format text only
736
7372004-08-20  Christian Arnault  <arnault@lal.in2p3.fr> 229
738
739        * mgr/requirements: Protect the cmt_installare_linkopts against
740        ambiguous tag settings
741
742        * src/cmt_awk.cxx (scan_path): First compress the path before
743        calling the actual recursive scanner
744        (scan_path): Completely revisit the scan algorithm to better
745        account for directory structures and version.cmt files and package
746        statements.
747
748        * src/cmt_project.cxx (create_project): The project file parsing
749        must occur after setting the project chain. This caused wrong tag
750        propagation across the Project chain.
751
7522004-08-04  Christian Arnault  <arnault@lal.in2p3.fr> 228
753
754        * src/cmt_parser.cxx (do_create): use only compressed paths
755        (do_remove): idem
756
757        * src/cmt_use.cxx (get_cmtpath_and_offset): Need to compress the cmtpath to suppress .. patterns
758
759        * src/cmt_system.cxx (compress_path): Compress the pattern /xxx/.. or xxx/.. instead of xxx/../
760
7612004-07-01    <arnault@lal.in2p3.fr> 227
762
763        * src/cmt_version.h: Prepare tagging v1r16p20040701
764
765        * src\cmt_parser.h: idem
766
767        * src\cmt.h (class Cmt): Suppress version strategy
768
769        * src\cmt_parser.cxx (do_show_strategies): Suppress version strategy
770
7712004-06-30    <arnault@lal.in2p3.fr> 226
772
773        * src\cmt_version.h (CMTVERSION): Prepare tagging v1r16p20040630
774
775        * src/cmt_generator.cxx (class WinDefAwk): Better generation of .def files for DATA
776
7772004-06-24    <arnault@lal.in2p3.fr> 225
778
779        * src/cmt_use.cxx (need_new): fix a bug that impacted on the order of
780        compatible use requests with different specifications.
781
782        * src\cmt_symbol.cxx (build): Add a debug print
783        (SymbolValueList::show): only display actions with a non empty value
784
785        * src\cmt_use.cxx (add): improve the debug statements (no change to algo)
786
787        * mgr\requirements: Improve the removal operations for Windows in the cmtpath_patterns
788
7892004-06-12    <arnault@lal.in2p3.fr> 225
790
791        * src\cmt_parser.cxx (need_prototypes): Fix access to prototype mask of build strategy
792
7932004-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 224
794
795        * Tagging v1r16p20040527
796
797        * src/demo/demo1.cmt: Add a test for -target_tag option
798
799        * src/cmt_parser.cxx (do_build_library_links): Transfered the code
800        to install a lib symlink into cmt_use.cxx
801
802        * src/cmt_use.cxx (same_dirs): Add a local helper function to
803        check if two directory specifications point to the same location
804        (install_library): Common local function to really create a
805        symlink to a file either into ../$(tag) or into $(CMTINSTALLAREA)/$(tag)/lib
806        (build_library_links): Build all the library links for a Use.
807
808        * src/cmt_use.h (class Use): Add a function to build the library links (the code is
809        extracted from Cmt::do_build_library_links () )
810
8112004-05-27    <arnault@lal.in2p3.fr> 223
812
813        * src\cmt_version.h (CMTVERSION): Prepare for real tagging v1r16p20040527
814        * doc\download.html: idem
815
816        * doc\CMTDoc.xml: Update the doc for the new -target_tag option
817
818        * src\cmt_constituent.cxx (add_for_action): Actions always have a target tag.
819
820        * src\demo\demoA\requirements: Add a -target_tag option to demoA target to test this feature.
821
822        * fragments\constituent: Construct or not a local tag makefile according to has_target_tag
823        * fragments\nmake\constituent: id
824        * fragments\make_header: id
825        * fragments\nmake\make_header: id
826
827        * src\cmt_generators.cxx (LibraryGenerator::build):
828        (DocumentGenerator::build): Transmit m_HASTARGETTAG
829
830        * src\cmt_generator.cxx (reset): Initialize the new m_HASTARGETTAG variable.
831
832        * src\cmt_generator.h (class CmtGenerator): Add a m_HASTARGETTAG
833        Variable to propagate the target_tag ability of the constituents
834
835        * src\cmt_constituent.cxx (show): Display the -target_tag option
836        (class constituents_action_iterator): Parse the -target_tag option
837
838        * src\cmt_constituent.h (class Constituent): Add support for the
839        new -target_tag option, to control the per-constituent generation
840        of the target tag. So add a field has_target_tag
841       
842
8432004-05-25  Christian Arnault  <arnault@lal.in2p3.fr> 222
844
845        * mgr/requirements: Use $(tag) instead of ${CMTCONFIG} in all cmtpath_pattern s
846
847        * src/NMakefile.header (tags): idem
848        * src/Makefile.header (tags): idem
849        * fragments/nmake/make_header: idem
850        * fragments/nmake/constituents_header (tags): idem
851        * fragments/make_header (tags): idem
852        * fragments/constituents_header (tags): prefix the tags macro with $(tag)
853
8542004-05-25    <arnault@lal.in2p3.fr> 221
855
856        * src\cmt_version.h (CMTVERSION): Prepare for tagging v1r16p20040525
857
858        * mgr\NMake (gendoc): Add a new target to generate html from xml
859
8602004-05-25    <arnault@lal.in2p3.fr> 220
861
862        * mgr\NMake (cmttag): Convert VisualC.nmake into VisualC_cmt.nmake
863        * fragments\nmake\constituent: Generate tag file for the target
864
8652004-05-18    <arnault@lal.in2p3.fr> 219
866
867        * mgr\requirements: Add cmt_log.cxx in the source list
868
869        * src\cmt_tag.cxx (add): First replacements of debug messages using log
870        * src\cmt_parser.cxx (configure_tags): idem
871
8722004-05-18    <arnault@lal.in2p3.fr> 219
873
874        * src\cmt_log.h (class CmtLog): Introducing a centralized log message facility
875        * src\cmt_log.cxx: first implementation
876
8772004-05-18  Christian Arnault  <arnault@lal.in2p3.fr> 218
878
879        * fragments/nmake/make_header (tags): idem
880
881        * fragments/nmake/constituent: Update to generate the target_XXX tag
882
883        * src/cmt_parser.cxx (parse_arguments): Activate the tag target_<action> when "cmt do <action>" is run
884
885        * fragments/constituent: Generate the target_${CONSTITUENT} tag
886
8872004-05-17  Christian Arnault  <arnault@lal.in2p3.fr> 218
888
889        * fragments/constituent: Propagate cmt_lock_pid for temporary files
890        Generate a tag makefile specific to the constituent
891
892        * fragments/constituents_header (first): Improve the printout for CMTCONFIG
893
894        * fragments/make_header (tags): Generate the target_${CONSTITUENT} tag
895
896        * mgr/requirements: Don't generate the tags macro from CMT. Only do it from the Makefile fragments.
897
898        * src/cmt_generators.cxx (build): Add PACKAGE variable to individual constituent fragment
899
9002004-05-13  Christian Arnault  <arnault@lal.in2p3.fr> 217
901
902        * fragments/constituent: idem
903
904        * fragments/constituents_header (cmt_final_setup): Implement a READONLY mode that generates all intermediate files in /tmp/CMT_*
905
906        * src/Makefile.header (tags): Implement a READONLY mode that generates all intermediate files in /tmp/CMT_*
907        (common_target): Make use of the new -out=file option of the cmt build constituents_makefile command
908
909        * src/cmt_generator.cxx (build_constituents_makefile): idem
910
911        * src/cmt_generator.h (class Generator): Add the argument list to the build_constituents_makefile function
912
913        * src/cmt_generators.cxx (build): idem
914
915        * src/cmt_generators.h (class ConstituentsMakefileGenerator): Add the argument list to the build function
916
917        * src/cmt_parser.cxx (configure): Chain configure_home, configure_user_context and configure_cmtpat
918        (do_build_constituents_makefile): Propagate arguments to the Generator::build_constituents_makefile method
919        (parse_arguments): Accumulate extra-arguments for build constituents_makefile command
920        (parse_arguments): Restore the home,user_context and cmtpath configurations for the -tag=xxx option
921
922        * src/cmt_project.cxx (set_build_strategy): Get tags from their names rather than from their pointer to fix a pointer bug
923        (set_setup_strategy): idem
924
925        * src/cmt_tag.cxx (action_apply): Adding several debug printouts
926
9272004-05-10    <arnault@lal.in2p3.fr> 216
928
929        * doc\CMTDoc.xml: Add a section on package semantics
930
9312004-05-07  Christian Arnault  <arnault@lal.in2p3.fr> 215
932
933        * mgr/requirements: Improve support for CEL
934        Upgrade system_version_query_command for Darwin
935
9362004-05-06  Christian Arnault  <arnault@lal.in2p3.fr> 215
937
938        * src/cmt_tag.cxx (action_apply): apply_tag now supports the tag
939        name given through a symbol expression
940
941        * mgr/cmt_linux_version.sh: Support for Entreprise Linux
942
943        * mgr/requirements: Create automatic tags from cmt_hardware
944        cmt_system_version and cmt_compiler_version.
945        Set the macro shlibsuffix for Win32
946
947        * mgr/cmt_filter3_version.sh: Add a filtering procedure to keep 3 digits in the compiler version
948
9492004-05-05  Christian Arnault  <arnault@lal.in2p3.fr> 214
950
951        * src/cmt_syntax.cxx (parse_requirements): Close all scope sections once the requirements file is parsed.
952
953        * src/cmt_use.cxx (close_scope_sections): Implement by clearing the vector of scope sections.
954
955        * src/cmt_use.h (class Use): Add close_scope_sections to be called
956        at the end of parsing a requirements file.
957
9582004-05-03  Christian Arnault  <arnault@lal.in2p3.fr> 213
959
960        * doc/ReleaseNotes.html: Fix typo
961
962        * src/cmt_system.cxx (is_version_directory): Misunderstands
963        version specifications of the form v1r2p (without a trailing
964        number)
965
9662004-05-03  Christian Arnault  <arnault@lal.in2p3.fr> 212
967
968        * src/cmt_parser.cxx (configure): Configure home and user_context
969        before configuring cmtpaths to associate projects with CMTHOME and
970        CMTUSERCONTEXT
971        (configure_cmt_path): Reset the project factory before creating all projects
972        (configure_user_context): Add a debugging printout
973
974        * src/cmt_system.cxx (get_cmt_paths): Remove the initialization of
975        the project factory from there to transfer it to the caller (eg
976        cmt_parser::configure_cmt_path)
977
978        * src/cmt_parser.cxx (use_special_requirements): Expects a
979        statically defined version "v0" for all special uses.
980
981        (configure_cmt_path): Associate a project with CMTHOME and CMTUSERCONTEXT to manage strategies.
982
983        * src/cmt_use.cxx (show_all): Adapt to new naming convention:
984        display the static version explicitly.
985
986        * src/cmt_system.cxx (get_home_package): Convert CMTHOME package
987        name from "CMTHOME context" to CMTHOME and manage a version
988        through standard mechanisms (version is statically defined as v0)
989        (is_home_package): Adpat to new naming convention
990        (get_user_context_package): Idem for CMTUSERCONTEXT
991        (is_user_context_package): Adapt to new naming convention
992
9932004-04-30  Christian Arnault  <arnault@lal.in2p3.fr> 211
994
995        * mgr/cmt_install_action.sh: Use /bin/pwd instead of raw pwd [Thanks to Traudl]
996        * mgr/cmt_uninstall_action.sh: idem
997        * mgr/cmt_make_shlib.sh: idem
998        * mgr/cmt_make_shlib_common.sh: idem
999        * fragments/install_includes_header: idem
1000
1001        * mgr/requirements: Perform path_remove all before path_prepend in
1002        the cmtpath_pattern. Thus state two separate cmtpath_patterns.
1003
10042004-04-02    <arnault@lal.in2p3.fr> 210
1005
1006        * src\cmt_project.cxx (scan_paths): Late patch for LynxOS limitation
1007
1008        * src\cmt_version.h: Prepare for v1r16
1009
10102004-03-29    <arnault@lal.in2p3.fr> 209
1011
1012        * mgr/Makefile: Set compiler options for CYGWIN
1013
10142004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 208
1015
1016        * src/cmt_syntax.cxx (class KwdSetupStrategy): Implement setup strategy decoding for projects
1017
10182004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 207
1019
1020        * src/cmt_system.h (class IProjectFactory): Suppress the configure entry point
1021
1022        * src/cmt_system.cxx (get_cmt_paths): see below
1023
1024        * src/cmt_project.h (class ProjectFactory): No longer need to configure from ProjectFactory
1025
1026        * src/cmt_project.cxx (configure): Fix typo mixing prototypes and no_prototypes tags
1027        (add): Systematically create tags just after naming the project.
1028
1029        * src/cmt_project.h (class Project): Only create tags once
1030
1031        * src/cmt_syntax.h (class SyntaxParser): Introduce the different
1032        syntax parsing schemes for requirements files and projects files.
1033        (class SyntaxParser): Rename do_parse_requirements_text and
1034        do_parse_requirements_text into do_parse_text and do_parse_line.
1035
10362004-03-27  Christian Arnault  <arnault@lal.in2p3.fr> 206
1037
1038        * src/cmt_syntax.cxx (action): Define a default implementation for project actions
1039        (class KwdBuildStrategy): Define a project action
1040        (class KwdProject): idem
1041        (class KwdSetupStrategy): idem
1042
1043        * src/cmt_syntax.h (class Kwd): Introduce an action for project files (simply virtual)
1044        (class SyntaxParser): Restructure, cleanup and sort the entry points
1045        (class SyntaxParser): Introduce a map of project keywords
1046
1047        * src/cmt_project.cxx (class ProjectReader): Start support for more statements in the project file
1048
1049        * src/cmt_pattern.cxx (action): Augment the decoding logic to be more fault tolerant
1050        (add): Temporarily force the word quoting
1051        Add various debuggin printouts
1052
1053        * src/cmt_parser.cxx (parser): Force the Use* argument type
1054
1055        * src/cmt_cvs.cxx (class CvsImplementation): Install a constructor for setting default values
1056        (class CvsImplementation): Set default verse mode to false
1057
10582004-03-24  Christian Arnault  <arnault@lal.in2p3.fr> 206
1059
1060        * src/cmt_cvs.cxx (class CvsImplementation): Reset default verbose mode to off.
1061
10622004-03-23  Christian Arnault  <arnault@lal.in2p3.fr> 205
1063
1064        * src/cmt_pattern.cxx (class PatternCache): Introduce a cache for
1065        the get_paths operation. To save recursive executions.
1066
1067        * src/cmt_pattern.h (class PatternList): Navigate in pattern list through PatternList
1068
1069        * src/cmt_vector.h (cmt_vector): Trying to optimize vector by changing the frame size
1070
1071        * doc/cmt-mode.el (cmt-mode-map): Revert completion key to <Esc>-<tab>
1072
10732004-03-22  Christian Arnault  <arnault@lal.in2p3.fr> 205
1074
1075        * src/cmt_symbol.cxx (resolve_value): Optimize by checking if $%` exist in the text to expand.
1076        (create): Missing "alias" case
1077
1078        * src/cmt_parser.cxx (do_show_action): Missing "alias" case
1079        (do_show_macro): idem
1080
1081        * src/cmt_project.cxx (clear): Improve the clear function to
1082        ensure a proper initialization
1083
1084        * src/cmt_system.cxx (get_home_directory): Use ::getenv rather than CmtSystem::getenv.
1085
10862004-03-19  Christian Arnault  <arnault@lal.in2p3.fr> 205
1087
1088        * doc/emacs.html: doc on the new emacs mode for CMT
1089        * doc/table.html: include emacs.html
1090
10912004-03-19  Christian Arnault  <arnault@lal.in2p3.fr> 204
1092
1093        * src/cmt_symbol.cxx (all_set): Only set non empty environment variables
1094
10952004-03-22    <arnault@lal.in2p3.fr> 203
1096
1097        * src\cmt_parser.cxx (get_build_strategy): Create a local helper
1098        function to retrieve the build strategy from the current project.
1099        (get_setup_strategy): Idem for the setup strategy
1100        (parse_arguments): Add a protection against the killing -tag= with empty argument.
1101        (reach_current_package): Specify the use object (current use)
1102        (class StandardMacroBuilder): Isolate the construction of the CMTVERSION macro into a function
1103        (class StandardMacroBuilder): Setting of basic standard macros
1104        specific to packages is transfered to Use::fill_standard_macros
1105        (set_standard_macros): Apply all cmtpath_patterns independently of the build strategy.
1106
1107        * src\cmt_symbol.cxx (action): Expand the tag name to permit tag
1108        expressions containing macros.
1109
1110        * src\cmt_syntax.cxx (parse_requirements): Define the standard
1111        macros before reading the requirements file.
1112
1113        * src\cmt_use.cxx (fill_standard_macros): Implement it (move code from cmt_parser.cxx)
1114        * src\cmt_use.h (class Use): Add fill_standard_macros function to
1115        fill in all standard macros for a given use before reading its
1116        requirements file.
1117
1118        * mgr\requirements: Add exclusions between basic tags
1119        Adapt cmtpath_pattern to new strategy management
1120
1121        * fragments\nmake\constituents_header (tags): id.
1122        * fragments\nmake\constituent: id.
1123        * fragments\constituent: Add -quiet to CMT command.
1124
11252004-03-19    <arnault@lal.in2p3.fr> 203
1126
1127        * src\cmt_parser.cxx (get_build_strategy): Install a local
1128        accessor function to get the build strategy either from the
1129        current project or from m_current_build_strategy.
1130
11312004-03-16    <arnault@lal.in2p3.fr> 202
1132
1133        * src/cmt_parser.cxx (fill_for_branches): Add a protection against empty current project
1134
1135        * src\cmt_system.cxx (get_cmt_paths): Make use of the new
1136        CmtSystem::get_home_directory function
1137
1138        * src\cmt_parser.cxx (class CmtMountFilterParser): Create a FAwk
1139        parser to decode mout_filter files.
1140        (configure_current_dir): Make use of the CmtMountFilterParser
1141        class to parse cmt_mount_filter and .cmtrc files.
1142
1143        * src\cmt_system.cxx (get_home_directory): Implementation.
1144
1145        * src\cmt_system.h (class CmtSystem): Introduced to get ${HOME} in
1146        a portable way
1147
11482004-03-03  Christian Arnault  <arnault@lal.in2p3.fr> 201
1149
1150        * src/cmt_parser.cxx (print_context): Use the new projet based setup strategy
1151
1152        * src/cmt_cvs.cxx: suppress some verbose printouts
1153
11542004-02-25    <arnault@lal.in2p3.fr> 200
1155
1156        * src\cmt_pattern.cxx (action): add use to warning messages
1157
1158        * doc\CMTDoc.xml: improvements
1159
1160        * doc\gendoc.py (Book.book_start): Set a padding on top of every rule
1161
1162        * src\cmt_cmtpath_pattern.h (class CmtPathPattern): No need to duplicate the vector of words.
1163
1164        * src\cmt_cmtpath_pattern.cxx (add): Construct the cmt statement as a one line statement
1165
1166        * src\cmt_cmtpath_pattern.h (class CmtPathPattern): Add an expansion line in the class
1167
1168        * src\cmt_pattern.cxx (add): Construct the cmt statement as a one line statement
1169        (expand): Create a temporary replacement for full line
1170        (action): relax the syntax by permitting spaces around the "=" sign.
1171        Add checks for the template name to be expected by the pattern.
1172
1173        * src\cmt_pattern.h (class Pattern): Add an expansion line in the class
1174
11752004-02-19    <arnault@lal.in2p3.fr> 200
1176
1177        * src\cmt_project.cxx (configure): Preset the tags of the default strategies
1178
1179        * src\cmt_tag.cxx (show_definition): Suppress the display of the internal Default tag
1180
11812004-02-13    <arnault@lal.in2p3.fr> 200
1182
1183        * src\cmt_parser.cxx (class StandardMacroBuilder): Fill <package>_project macro
1184        (class StandardMacroBuilder): Fill <package>_project macro
1185
1186        * src\cmt_project.cxx (get_current): No need to cd
1187
11882004-02-13  Christian Arnault  <arnault@lal.in2p3.fr> 199
1189
1190        * src/cmt_symbol.cxx: implement the XxxRemoveRegexp
1191
1192        * src/cmt_parser.cxx: idem
1193        * src/cmt_constituent.cxx: idem
1194        * src/cmt_symbol.cxx: idem
1195        * src/cmt_symbol.h (class Symbol): Change the action stored in Symbol into a new enum SymbolType.
1196
1197        * src/cmt_symbol.cxx: idem
1198        * src/cmt_syntax.cxx (SyntaxParser): idem
1199        * src/cmt_parser.h (enum): Introduce regexp-based remove operations for symbols
1200
12012004-02-10  Christian Arnault  <arnault@lal.in2p3.fr> 198
1202
1203        * src/cmt_parser.cxx (actor): Rename PackageCollector into ClientCollector
1204
12052004-02-09  Christian Arnault  <arnault@lal.in2p3.fr> 198
1206
1207        * fragments/installer: add a / everywhere for consistency
1208
1209        * src/cmt_symbol.cxx (build): Restrict warning on symbol overriding to show macro and show set
1210
12112004-02-13    <arnault@lal.in2p3.fr>
1212
1213        * doc\CMTDoc.xml: Work on the doc towards v1r16
1214
1215        * doc\gendoc.py (Book.plain_char_data): Keep space characters from raw text
1216        (Book.book_start): Introduce style sheet.
1217
12182004-02-06  Christian Arnault  <arnault@lal.in2p3.fr> 197
1219
1220        * src/cmt_cvs.cxx (class CvsImplementation): use -quiet for all internal cmt commands
1221
1222        * src/cmt_string.cxx (erase): Replace strcpy by an explicit loop
1223
1224        * src/cmt_cvs.cxx: Added -n and -v options to support simulation and verbose modes
1225
1226        * src/cmt_system.cxx (execute): Change the status value. Back to the Unix standard 0 = ok
1227
1228        * fragments/nmake/library: idem
1229        * fragments/library: Install the dependency to the ${CONSTITUENT}stamps macro like for application
1230
1231        * src/cmt_system.cxx (reduce_file_separators): Improve the reduction algorithm
1232
12332004-02-05    <arnault@lal.in2p3.fr> 196
1234
1235        * src\cmt_parser.cxx: Remove cmtpath database from Cmt class
1236        Rename FileScanner into PathScanner and transfer it to CmtSystem
1237        (configure_cmt_path): Use the ProjectFactory to create Projects from CMTPATH
1238        (do_broadcast): Projects now fill the selections.
1239        (do_show_clients): Projects used to search clients
1240        (do_show_packages): idem
1241        (do_show_path): idem
1242        (do_show_strategies): Projects reached to get strategies
1243        (do_show_versions): Projects used to search versions
1244        (parse_arguments): +path managed by adding a project
1245        (reach_current_package): Definitively suppress "current package" source of CMTPATH
1246
1247        * src\cmt_use.cxx (class UseProjectAction): Intoduce an action
1248        pattern to iterate into Project database
1249        (move_to): Use the Project::broadcast mechanism to locate the package.
1250
1251        * src\cmt_use.h (class Use): Make UseProjectAction friend of class Use
1252
1253        * src\cmt_system.cxx (add_cmt_path):
1254        (add_cmt_paths_from_text):
1255        (add_cmt_paths):
1256        (get_cmt_paths): Use IProjectFactory
1257
1258        * src\cmt_system.h (class IProjectFactory): Add abstract interface
1259        for creating projects form cmtpath entries
1260        (class CmtSystem): Change the API to using IProjectFactory
1261
1262        * src\cmt_project.cxx: Implement project management
1263
1264        * src\cmt_syntax.cxx (class KwdBuildStrategy):
1265        (class KwdSetupStrategy): Change strategies from new masks and into Projects
1266
1267        * src\cmt_parser.h (enum): Change the masks for strategies to
1268        improve the reliability of exclusive options, and inheritance
1269        between projects.
1270
1271        * src\cmt_cmtpath_pattern.cxx (class CmtPathPatternProjectAction):
1272        Introduce new actor pattern for broadcasting to project
1273        database. Used to apply all cmtpath_patterns
1274        (apply): Expand the <project> parameter
1275        (expand): idem
1276
1277        * src\cmt_cmtpath_pattern.h (class CmtPathPattern): Add project argument to expand
1278
1279        * src\cmt_awk.h (class PathScanner): Add the PathScanner class (imported from cmt_parser.cxx)
1280        * src\cmt_awk.cxx (PathScanner):
1281
1282        * src\cmt.h (class Cmt): Transfer cmtpath management to Project
1283
1284        * doc\CMTDoc.xml:
1285        * src\cmt_syntax.cxx (class KwdBuildStrategy):
1286        * src\cmt_project.h (class Project):
1287        * src\cmt_project.cxx (set_build_strategy):
1288        * src\cmt_parser.cxx (set_standard_macros): Rename X_install_area symbols into X_installarea
1289        * src\cmt_install_area.cxx: Rename X_install_area symbols into X_installarea
1290        * src\cmt_install_area.h: Rename X_install_area symbols into X_installarea
1291
1292        * mgr\requirements: Setting Project-oriented settings for installation area patterns.
1293
12942004-01-27    <arnault@lal.in2p3.fr> 195
1295
1296        * fragments\nmake\installer: Fixes from Pere.
1297
12982004-01-20    <arnault@vmlinux> 194
1299
1300        * Try on CVStrac ticket #1
1301
1302        * src/cmt_symbol.cxx (action): Ensure that the constituents macro is always private.
1303
1304        * src/cmt_parser.cxx (reach_current_package): Fix missing configuration bit.
1305        Cures the bug of missing <PACKAGE>VERSION when using cmt -use=...
1306
13072004-01-17    <arnault@lal.in2p3.frARNAULT@NB-ARNAULT> 193
1308
1309        * src\cmt_syntax.cxx (CommandParser): Add helps for create_project command
1310
1311        * src\cmt_parser.h (enum): Add action_create_project
1312
1313        * src\cmt.h (class Cmt): Add do_create_project function
1314
13152004-01-13    <arnault@vmlinux> 192
1316
1317        * src/cmt_parser.cxx (dos_script_prefix): Suppress spaces before
1318        continuation character in DOS format
1319
13202004-01-13  Christian Arnault  <arnault@lal.in2p3.fr> 191
1321
1322        * src/cmt_symbol.cxx (add_value_to_list): Fix for not discarding too much value_lists
1323
13242004-01-10    <arnault@vmlinux> 190
1325
1326        * src/cmt_syntax.cxx (class KwdBuildStrategy): Start getting the
1327        strategy from project(experimental??)
1328
1329        * src/cmt_project.cxx (find_by_cmtpath): We also accept paths specified using a substring
1330        (configure): Configure in reverse order
1331        (action): Add experimental -index and -select options
1332
1333        * src/cmt_install_area.cxx (setup_current_install_area): Make CMTINSTALLAREA a macro instead of a set
1334
13352004-01-08  Christian Arnault  <arnault@lal.in2p3.fr> 189
1336
1337        * src/cmt_use.cxx (reach_package): Fix bug in version comparison when working in non-version-directory mode
1338        * mgr/requirements: use $(CMTCONFIG) instead of $(tag) for setting PATH etc.. in cmtpath_pattern
1339
13402003-12-19  Christian Arnault  <arnault@lal.in2p3.fr> 188
1341
1342        * src/cmt_use.h (class Use): Remove the project relationship between Use and Project
1343
13442003-12-18    <arnault@lal.in2p3.fr> 187
1345
1346        * src\cmt_constituent.h (class Constituent):
1347        * src\cmt_constituent.cxx (add_for_action): Implement the constituent equivalent to actions
1348        (parse_all): Generate the constituent equivalents for all macros
1349
1350        * fragments\cmt_action_runner:
1351        * fragments\cmt_action_runner_header:
1352        * fragments\nmake\cmt_action_runner_header: The new generic make fragment for running actions
1353
1354        * fragments\nmake\dependencies:
1355        * fragments\dependencies: Suppress dependency computation when the
1356        QUICK macro is defined
1357
1358        * fragments\nmake\library:
1359        * fragments\library:
1360        * fragments\application:
1361        * fragments\nmake\application: Add dependency to requirements to rebuild application
1362
1363        * src\cmt_parser.cxx (do_config): Suppress install area cleanup action from cmt config
1364        (do_setup): idem
1365
13662003-12-16    <arnault@lal.in2p3.fr> 187
1367
1368        * src\cmt_constituent.cxx (class constituents_action_iterator):
1369        Added syntax check on -xxx options for constituents
1370
1371        * src\cmt_parser.cxx: Implement Action support.
1372        Added: (to support Actions)
1373                do_do
1374                do_show_action
1375                do_show_action_names
1376                do_show_action_value
1377                do_show_actions
1378        removed: (after introducing Scope Sections)
1379                get_scope
1380                set_scope
1381                m_scope
1382
1383        * src\cmt_parser.h (enum): Added
1384                CommandAction
1385                CommandEndPrivate
1386                CommandEndPublic
1387
1388                action_show_action_xxx
1389
1390        * src\cmt_constituent.cxx (class constituents_action_iterator):
1391        Added a syntax checking action.
1392
1393        * src\cmt_use.cxx:
1394        * src\cmt_use.h (class Use): Support Scope Section concept.
1395        A Use object holds a vector of ScopeSections
1396        Added functions
1397                push_scope_section
1398                pop_scope_section
1399                get_current_scope
1400        Changed attributes:
1401                scope -> initial_scope
1402
1403        * src\cmt_syntax.cxx (class KwdAction): New keyword
1404        (class KwdEndPrivate): new keyword
1405        (class KwdEndPublic): new keyword
1406        (class KwdPrivate): Ignore this pattern on current use
1407        (class KwdPublic): Ignore this pattern on current use
1408        (CommandParser): Update help texts for new action concepts
1409
1410        * src\cmt_symbol.cxx (class ActionBuilder): new Action objects are
1411        implemented as a new category of symbols. Therefore all mechanisms
1412        have been extended to support the new concept.
1413
1414        old scope attribute is replaced by accesses to Scope Sections from
1415        the Use objects.
1416
1417        * src\cmt_symbol.h (class Symbol): Suppress useless scope attribute and valid () function
1418
1419        * src\cmt_scope_section.cxx: New Support for Scope Sections
1420
1421        * src\cmt_scope_section.h: New Support for Scope Sections
1422
1423        * src\cmt_fragment.cxx (action): Switch to using Scope Sections
1424
1425        * src\cmt.h (class Cmt): Added: (to support Actions)
1426                do_do
1427                do_show_action
1428                do_show_action_names
1429                do_show_action_value
1430                do_show_actions
1431        removed: (after introducing Scope Sections)
1432                get_scope
1433                set_scope
1434                m_scope
1435
1436        * mgr\requirements: Adding support for Scope sections to handle
1437        private or public sections. Now private and public sections can be
1438        ended with the new keywords end_private and end_public. Ending
1439        keywords switch back to the previous scope active before the most
1440        recent opening keyword.
1441
1442        Adding cmt_scope_section.cxx to the sources of the cmt application.
1443       
1444
14452003-12-12  Christian Arnault  <arnault@lal.in2p3.fr> 186
1446
1447        * mgr/cmt_install_action.sh (a): Improve checking of pwd WRT CMTINSTALLAREA
1448        * mgr/cmt_uninstall_action.sh (a): idem
1449
1450        * mgr/cmt_mount_filter: Restore definitions
1451
1452        * src/cmt_syntax.cxx (do_parse): Evolution of the requirements
1453        file syntax: apply_pattern can be omitted (ie. pattern names are
1454        understood as extensions to the basic CMT language)
1455
1456        * src/cmt_pattern.cxx (action): Add error detection when applying the wrong pattern name
1457        Prepare for the next change of the syntax which accepts pattern names as plain CMT keywords
1458
1459        * src/cmt_parser.cxx (find_in_cmt_paths): Fix construction of the
1460        <package>_cmtpath when symlinks exist along pwd
1461
14622003-12-08  Christian Arnault  <arnault@lal.in2p3.fr> 186
1463
1464        * src/cmt_parser.cxx (do_build_library_links): Fix : should make
1465        use of the library_prefix and suffix.
1466
14672003-12-06   Christian Arnault  <arnault@lal.in2p3.fr> 185
1468
1469        * src\cmt_syntax.cxx (do_parse): When a keyword is not found,
1470        expect an implicit pattern application.
1471
1472        * src\cmt_pattern.cxx (action): Add a protection against pattern not found
1473        Support lines starting with pattern-name or with apply_pattern.
1474
14752003-11-21  Christian Arnault  <arnault@lal.in2p3.fr> 185
1476
1477        * mgr/cmt_install_action.bat: Typo
1478
1479        * mgr/requirements: Typo in macro cmt_uninstalldir_action
1480
14812003-11-20  Christian Arnault  <arnault@lal.in2p3.fr> 184
1482
1483        * src/cmt_version.h (CMTVERSION): Preparing new tag v1r14p20031120
1484
1485        * src/cmt_syntax.cxx (CommandParser): Help on cmt build CMT_pacman
1486
1487        * src/cmt_parser.cxx (parse_arguments): Implement cmt build
1488        CMT_pacman command to generate the effective pacman manifest file
1489        for CMT.
1490
1491        * src/cmt.h (class Cmt): Add Cmt::do_build_CMT_pacman function
1492
1493        * src/cmt_parser.h (enum): Add cmt build CMT_pacman command
1494
1495        * src/setup.zsh: Upgrade zsh completion settings
1496
1497        * src/setup.tcsh: Upgrade tcsh completion settings
1498
1499        * fragments/group (all_groups): Add a new standard macro
1500        $(<group>_dependencies) to specify global dependencies for a
1501        group.
1502
1503        * fragments/constituents_trailer (binclean): Dont remove *.make* when cleaning.
1504        Add a message for binclean.
1505
1506        * src/cmt_use.cxx (add): Improve the warning message for package not found
1507        (reduce_path): Display the package path using a reusable format (used by show fragments)
1508
15092003-11-19  Christian Arnault  <arnault@lal.in2p3.fr> 183
1510
1511        * src/cmt_constituent.cxx (class constituents_action_iterator): Empty group means no group.
1512
1513        * src/cmt_parser.cxx (install_library): Factor out the basic
1514        operation for installing a library
1515        (do_build_library_links): Make use of the new install_library
1516        operation. Add special operation for Darwin to install bundles
1517
1518        * src/cmt_syntax.cxx (class KwdBuildStrategy): Fix cumulative settings of the strategies
1519        (class KwdSetupStrategy): idem
1520
1521        * mgr/cmt_make_shlib_common.sh: Add support to generate bundles for Darwin
1522
15232003-11-14  Christian Arnault  <arnault@lal.in2p3.fr> 182
1524
1525        * src/cmt_install_area.cxx (setup): Continue setup even without current installation area
1526        (config): Apply all cmtpath_patterns even  without current installation area
1527        (build_current_install_area): Make use of Cmt::find_in_cmt_paths
1528
1529        * src/cmt_parser.cxx (configure_current_cmtpath): Make use of the
1530        new find_in_cmt_paths function
1531        (do_setup): Always call CmtInstallAreaMgr::setup even if current installation area is empty
1532        (find_in_cmt_paths): first implementation
1533        (get_cmt_path_pwds): first implementation
1534        (class StandardMacroBuilder::fill_for_use_cmtpath): Make use of the
1535        new find_in_cmt_paths function
1536
1537        * src/cmt.h (class Cmt): Adding find_in_cmt_paths to locate a path
1538        from all specified CMTPATH entries (considering the dual flavours
1539        of each entry)
1540        Adding get_cmt_path_pwds to access alternal values of cmtpath entries
1541
15422003-11-12  Christian Arnault  <arnault@lal.in2p3.fr> 181
1543
1544        * fragments/nmake/constituents_trailer (binclean): Fix typo for Windows
1545
15462003-11-06  Christian Arnault  <arnault@lal.in2p3.fr> 180
1547
1548        * mgr/CMT.pacman: Add generic pacman file.
1549        All instances of the "<version>" pattern need to be substituted by
1550        the effective version of CMT to make it a real pacman file
1551
15522003-10-29  Christian Arnault  <arnault@lal.in2p3.fr> 179
1553
1554        * tagging v1r14p20031027
1555
1556        * mgr/cmt_build_release.sh (version): Add the rebuilding of Linux
1557        version at Lyon (without getting the result back)
1558
1559        * doc/documents.html: Install release notes from the documents page
1560
1561        * doc/ReleaseNotes.html: Create ReleaseNotes web page (suppress ReleaseNotes.txt)
1562
1563        * mgr/Makefile (docs):
1564        Add installation of ReleaseNotes.html
1565
15662003-10-27  Christian Arnault  <arnault@lal.in2p3.fr> 178
1567
1568        * src/cmt_version.h (CMTVERSION): prepare tagging of v1r14p20031027
1569
1570        * mgr/requirements: cmt_installarea_prefix must be defined
1571        externally to the cmtpath_pattern.
1572
15732003-10-22  Christian Arnault  <arnault@lal.in2p3.fr> 177
1574
1575        * src/cmt_version.h (CMTVERSION): prepare tagging of v1r14p20031022
1576
1577        * mgr/cmt_installdir_excludes.txt: New file containing the list of
1578        patterns to exclude in installing a directory
1579
1580        * fragments/nmake/install_includes_header (install): Add support for exclude files
1581
1582        * mgr/cmt_installdir_action.bat: Add support for exclude files
1583        * mgr/cmt_uninstalldir_action.bat: Add tests
1584        * mgr/cmt_uninstall_action.bat: Add tests
1585        * mgr/cmt_install_action.bat: Add tests
1586
1587        * src/cmt_parser.cxx (set_standard_macros): First define the
1588        current installation area before defining all other standard
1589        symbols (and making the final parsing of constituents)
1590
1591        * src/cmt_install_area.cxx (setup_current_install_area): Implement
1592        the definition of the CMTINSTALLAREA symbol     
1593        (setup): Differentiate the setting of CMTINSTALLAREA symbol from
1594        applying cmtpath patterns
1595
1596        * src/cmt_install_area.h (class CmtInstallAreaMgr): Split setup in
1597        two parts : first define the CMTINSTALLAREA symbol, then apply all
1598        cmtpath patterns
1599
16002003-10-21  Christian Arnault  <arnault@lal.in2p3.fr> 176
1601
1602        * mgr/cmt_build_release.sh: Start a procedure for remotely building a CMT release
1603
1604        * mgr/cmt_installdir_action.bat: Added test on existing result.
1605
1606        * fragments/nmake/install_includes_header (install_dir): Use $() instead of ${}
1607
1608        * mgr/requirements: Add definition for cmt_installdir_action
1609
1610        * src/cmt_parser.cxx (class StandardMacroBuilder): Generate
1611        <package>_cmtpath and <package>_offset macros also for the current
1612        package
1613
1614        * src/cmt_system.cxx (remove_directory): Add a # for error messages
1615        (remove_file): idem
1616
16172003-10-14    <arnault@vmlinux> 175
1618
1619        * src/cmt_version.h (CMTVERSION): Prepare tagging v1r14p20031014
1620
1621        * src/cmt_use.cxx (compare_versions): Add a function to compare
1622        two version strings.
1623        (reach_package): Add the effective version checking for
1624        no_version_directory style when version.cmt exists.
1625
1626        * doc/CMTDoc.xml: Suppress version strategy documentation since
1627        this mechanism is not really maintained.
1628
1629        * src/cmt_use.cxx (reach_package): Add effective check of version
1630        even in no_version_directory style
1631
16322003-10-13    <arnault@vmlinux> 175
1633
1634        * fragments/* : Add start and end markers to all make fragments. 
1635
16362003-10-09    <arnault@lal.in2p3.fr> 175
1637
1638        * src\cmt_parser.cxx (do_broadcast): Suppress the catching of
1639        return status=2 for last executed command
1640
16412003-10-02  Christian Arnault  <arnault@lal.in2p3.fr> 175
1642
1643        * src/cmt_system.cxx (cd): putenv requires that the string is static !!
1644
16452003-10-01    <arnault@vmlinux> 174
1646
1647        * src/cmt_use.cxx (class use_action_iterator): Force auto_imports
1648        to On when context is unspecified.
1649
1650        * src/cmt_use.h (class Use): Add a new set_selected_version
1651        function for switching from one use to another one, better wrt
1652        various criteria. When switching, m_index and auto_imports are
1653        transfered from the unselected to the newly selected.
1654
16552003-09-26    <arnault@vmlinux> 173
1656
1657        * src/cmt_system.cxx (cd): Change the PWD environment variable, in
1658        case it's not done by the underlying OS
1659
16602003-09-24  Christian Arnault  <arnault@lal.in2p3.fr> 172
1661
1662        * src/cmt_use.cxx (show_cycles): optimizing a bit
1663        (find_index): idem
1664        (set_auto_imports_state): idem
1665        (move): idem
1666        (reorder): idem
1667        (unselect_all): idem
1668        (get_selected_version): idem
1669        (get_paths): Improve the algorithm to save multiple vector manipulations
1670
1671        * src/cmt_parser.cxx: Follow all symbol->build_macro_value by
1672        Symbol::expand to really expand all possible macro
1673        references. This caused a bug when inline re-confirguring
1674        CMTUSERCONTEXT (etc.) with a value containing a ref to another
1675        symbol.
1676
1677        * mgr/Makefile (cpp): Add -O2 option for Linux platform
1678        (cpp): Add support for profiling setup for LinuxProf platform
1679
16802003-09-18    <arnault@vmlinux>
1681
1682        * mgr/cmt_uninstall_action.sh (a): Fix the consistency check of pwd vs CMTINSTALLAREA
1683        * mgr/cmt_install_action.sh (a): idem
1684
16852003-09-18  Christian Arnault  <arnault@lal.in2p3.fr> 171
1686
1687        * mgr/Makefile (cpp): Set IGNORE_PWD for OSF1 and LynxOS
1688
1689        * src/cmt_system.cxx (pwd): Add an option to ignore PWD since on
1690        some machines this does not work well with the chdir function.
1691
1692        * doc/CMTDoc.xml: improvements
1693
16942003-09-17  Christian Arnault  <arnault@lal.in2p3.fr> 170
1695
1696        * src/cmt_parser.cxx (class StandardMacroBuilder): Add the
1697        production of the new macros <package>_cmtpath <package>_offset
1698        (class StandardMacroBuilder): Implement the generation of
1699        <package>_cmtpath <package>_offset macros
1700
1701        * fragments/constituent: Add the same dependency list onto
1702        constituent makefile fragment than onto the constituent itself so
1703        as to enforce the build order also for make fragments.
1704
1705        * src/cmt_use.cxx (get_paths, get_selected_version): Remove static
1706        declaration for a local variable (caused a serious bug !!)
1707        Lots of debug prints improved.
1708
17092003-09-16  Christian Arnault  <arnault@lal.in2p3.fr> 170
1710
1711        * src/cmt_symbol.cxx (action): fix setup_script calling mechanism
1712        in no_version style : should get it from ../cmt rather than ../mgr
1713
17142003-09-16    <arnault@vmlinux> 169
1715
1716        * mgr/cmt_uninstall_action.sh (full_source_name): idem
1717
1718        * mgr/cmt_install_action.sh: add a protection when current
1719        directory is outside any installation area
1720
1721       
1722        * mgr/NMake (CMTINSTALLAREA): idem
1723        (cmttag): Improve the filter for VisualC tag file generation
1724        (required to remove all location specific info)
1725        Change the target from cmt to cmttag (ie this is NO LONGER done by default!!)
1726
1727        * mgr/Makefile (CMTINSTALLAREA): Inhibit all INSTALLAREA mechanism
1728        when rebuilding cmt itself
1729
1730        * src/cmt_parser.cxx (get_current_style): First Implementation
1731        (dos_script_prefix): Use current_style rather than
1732        current_structuring_style to select path pattern
1733
1734        * src/cmt.h (class Cmt): Add get function to access m_current_style
1735
17362003-09-16  Christian Arnault  <arnault@lal.in2p3.fr> 168
1737
1738        * src/cmt_use.cxx (find_index): Add a protection when a package
1739        was not found
1740
17412003-08-14  Christian Arnault  <arnault@lal.in2p3.fr> 168
1742
1743        * src/cmt_generators.cxx (LibraryGenerator::build): new syntax for get_all_files
1744        (DocumentGenerator::build): idem
1745        (MSDEVGenerator::build_project): idem
1746        (VSNETGenerator::build_project): idem
1747        (DependencyGenerator::build): idem
1748
1749        * src/cmt_generator.h (class CmtGenerator): Add an argument for
1750        selection patterns.
1751
1752        * src/cmt_generator.cxx (get_all_files): Apply the selection
1753        patterns.  Support wilcarded suffixes (*.*)
1754
1755        * src/cmt_generators.cxx (DocumentGenerator::build): Add path
1756        compression when analyzing file names.
1757        (ConstituentsMakefileGenerator::build): suppress unused declarations
1758
1759        * src/cmt_constituent.cxx (show): display select paterns
1760        (class constituents_action_iterator): Handle the new -k= option for selection pattern
1761        (clear): clear selection patterns
1762
1763        * src/cmt_constituent.h (class Constituent): Add select regexps similar to excludes
1764
17652003-08-13  Christian Arnault  <arnault@lal.in2p3.fr> 168
1766
1767        * src/cmt_use.cxx (show_all): Standardize the output format of
1768        show uses to ensure that we always have in the last part:
1769
1770        use <package> <version> [<offset>] (<path>) (<qualifier>) (...)
1771
1772        or (with -quiet)
1773       
1774        use <package> <version> [<offset>]
1775
1776        Also fix a bug when trying to remove offset from real_path...
1777       
1778
17792003-08-11  Christian Arnault  <arnault@lal.in2p3.fr> 167
1780
1781        * mgr/Makefile (bintar): Dynamically gets the list of binaries
1782        available of this machine. Then constructs CMTDownload.html
1783        accordingly.
1784
1785        * doc/CMTDownload1.html: First part of CMTDownload.html
1786        * doc/CMTDownload2.html: Last part of  CMTDownload.html
1787
1788        * doc/installations.doc: upgrade list of porting machines
1789
1790        * src/cmt_version.h (CMTVERSION): new patch tag v1r14p20030811
1791
1792        * src/cmt_use.cxx (show_sub_uses): Display the original request
1793        instead of the registered sub use (which may be different than the
1794        request)
1795
1796        * src/cmt_use.h (class Use): Add context_use in the argument list
1797        to display the use that created this request
1798       
1799        (class Use): Add a vector of the real requests (well only those that ended up in a sub use)
1800
1801        * src/cmt_use.cxx (need_new): Dispay the incompatibility message
1802        in need_new rather than in the BestFitSelector, since
1803        corresponding uses may have been discarded then.
1804
1805        * src/cmt_system.cxx (is_version_directory): return all -1 values
1806        when version specification is just '*'
1807
18082003-08-08    <arnault@lal.in2p3.fr> 166
1809
1810        * mgr\requirements: Tuning pour CYGWIN
1811
18122003-08-06  Christian Arnault  <arnault@lal.in2p3.fr> 165
1813
1814        * src/cmt_symbol.cxx (create): Same reasons (LynxOS) => convert a
1815        static array of strings into a switch statement (not quite
1816        elegant). May move back in some future if problem is solved on
1817        LynxOS.
1818
1819        * src/cmt_syntax.cxx (CommandParser): Initialze the new help_texts
1820        by filling in a vector rather that from a static array of
1821        cmt_string (too bad...)
1822
1823        * src/cmt_syntax.h (class CommandParser): Need to redefine the
1824        management of static arrays of objects due to a bug in c++
1825        compiler on LynxOS... A Workaround is found by transfering static
1826        arrays into the singleton => m_helps and m_help_texts
1827
18282003-08-06    <arnault@lal.in2p3.fr> 164
1829
1830        * src\cmt_parser.cxx (dos_script_prefix): Adapt the generation of
1831        setup.bat scripts so as to account for the new DOS device constructs
1832        \\xxx\aaa
1833
1834        * src\setup.bat: Add /D to the cd command to support CMT on a
1835        different device
1836
18372003-08-05    <arnault@lal.in2p3.fr> 163
1838
1839        * src/cmt_parser.cxx (dos_script_prefix): remove device from path
1840        when device takes the conventional form. new form (\\xxx\) is not
1841        yet handled.
1842
1843        * src/cmt_install_area.cxx (config): Don't produce output messages in quiet mode
1844
18452003-08-05  Christian Arnault  <arnault@lal.in2p3.fr> 163
1846
1847        * src/cmt_system.cxx (pwd): Make use of the PWD environment
1848        variable when it is defined to detect current directory in place
1849        of getcwd (keep gettcwd when PWD is not defined or on WIN32)
1850
1851        * fragments/install_includes_header (install): Avoid useless
1852        re-installation of include file area
1853
1854        * src/cmt_use.cxx (add): When m_index is exchanged between two
1855        uses, the discarded flag must be upgraded accordingly   
1856        (class use_action_iterator): Suppress trailing slash characters on
1857        package offset specifications.
1858
1859        * src/cmt_parser.cxx (class StandardMacroBuilder): Define
1860        package_cmtpath instead of just cmtpath as the standard macro, in
1861        order to avoid conflict with CMTPATH env. var. on Windows.
1862        (do_broadcast): Define the pattern <package_cmtpath> instead of
1863        <cmtpath> for broadcast command templates
1864
1865        * src/cmt_use.cxx (need_new): first consider the already registered use
1866        (add): Fix a bug in the algorithm for checking registrations of uses.
1867        (class use_action_iterator): Remove trailing slashes from prefix specifications
1868
18692003-06-20  Christian Arnault  <arnault@lal.in2p3.fr> 162
1870
1871        * src/cmt_version.h: new patch id 20030620
1872
1873        * mgr/Makefile (gendoc): Add a target to convert XML doc into HTML
1874        (so far only available at CERN)
1875
1876        * doc/gendoc.py (Book.plain_char_data): improvements.
1877
1878        * src/cmt_parser.cxx (do_broadcast): Fix evaluation of <cmtpath>
1879        <package_offset> in -global mode
1880
18812003-06-19    <arnault@lal.in2p3.fr> 161
1882
1883        * src/cmt_system.cxx (add_cmt_path): Fix cmtpath checking for
1884        devices on Windows
1885
18862003-06-19  Christian Arnault  <arnault@lal.in2p3.fr> 160
1887
1888        * fragments/nmake/library_no_share: Use the @<< syntax of nmake to
1889        cope with long list of OBJS
1890        * fragments/nmake/application: idem
1891        * fragments/nmake/library: idem
1892
18932003-06-18  Christian Arnault  <arnault@lal.in2p3.fr> 159
1894
1895        * mgr/requirements: Use ln -s for the cmt_install_area_command
1896
1897        * fragments/application (install_dir): Use $(tag) instead of $(CMTCONFIG)
1898        * fragments/library (install_dir): Use $(tag) instead of $(CMTCONFIG)
1899        * fragments/library_no_share (install_dir): Use $(tag) instead of $(CMTCONFIG)
1900        * fragments/nmake/application (install_dir): Use $(tag) instead of $(CMTCONFIG)
1901        * fragments/nmake/library (install_dir): Use $(tag) instead of $(CMTCONFIG)
1902        * fragments/nmake/library_no_share (install_dir): Use $(tag) instead of $(CMTCONFIG)
1903
1904        * mgr/requirements: use cp -s and not cp -l to create symlinks
1905
19062003-06-16  Christian Arnault  <arnault@lal.in2p3.fr> 158
1907
1908        * src/cmt_version.h (CMTVERSION): New Tag 20030616
1909
1910        * src/Makefile.header (common_target): Make use of the mktemp
1911        shell function
1912
1913        * doc/CMTDoc.xml: Doc
1914
1915        * src/cmt.h (class Cmt): Add get_current_cmtpath and
1916        get_current_offset functions.
1917
1918        * src/cmt_parser.cxx (configure_current_cmtpath): Implement (set
1919        m_current_cmtpath and m_current_offset)
1920
1921        * src/cmt.h (class Cmt): Add configure_current_cmtpath function
1922
1923        * src/cmt_parser.cxx (class StandardMacroBuilder): Add standard
1924        macros cmtpath and package_offset
1925        (do_broadcast): Add substitutions of <package>, <version>, <cmtpath>, <package_offset>
1926        (class StandardMacroBuilder): Set m_current_cmtpath and m_current_offset
1927
1928        * src/cmt.h (class Cmt): Adding current value for cmtpath and offset
1929
1930        * mgr/requirements: Use symlink instead of cp as default transfer
1931        action into installation area
1932
19332003-06-12  Christian Arnault  <arnault@lal.in2p3.fr> 157
1934
1935        * src/cmt_pattern.cxx : fix a bug in ApplyPattern::action: macros
1936        should NOT be expanded when parsing the statement. Only the
1937        pattern name may be expanded.
1938        Second fix: when a pattern is re-defined, the Pattern object must be
1939        properly reset.
1940
19412003-06-04    <arnault@vmlinux> 156
1942
1943        * src/cmt_version.h (CMTVERSION): Tag the version to v1r14p20030605
1944
1945        * mgr/build_from_rpm.sh (tempdir): Add a shell script for testing
1946        the source kit (not complete)
1947
1948        * mgr/install_from_rpm.sh: Add a shell script for testing the
1949        generated binary RPM.
1950
1951        * mgr/Makefile (rpm): Add the rpm target to build RPMs into ../rpm
1952
1953        * mgr/CMT.spec: Add an RPM spec file for CMT. Only the binary kit
1954        has been tested successfully
1955
1956        * doc/install.html: Document the usage of the CMT RPM
1957
1958        * src/cmt_parser.cxx (dos_script_prefix): Use %TEMP% instead of
1959        %HOMEDRIVE%%HOMEPATH% for temporary setup files on Windows
1960
19612003-06-04  Christian Arnault  <arnault@lal.in2p3.fr> 155
1962
1963        * fragments/install_includes_header (install): Fixed wrong test on
1964        CMTINSTALLAREA
1965
1966        * src/cmt_syntax.cxx (parse_requirements): Transfer the scoping
1967        algorithm to parse_requirements_text so that patterns supplying
1968        private statements will work nicely.
1969        (parse_requirements_text): see above
1970
19712003-05-23  Christian Arnault  <arnault@lal.in2p3.fr> 154
1972
1973        * src/Makefile.header: removing apparently obsolete MAKEFLAGS
1974        filtering mechanisms on -j option
1975
1976        * src/setup.zsh: Add cmt show cycles zsh expansion
1977
1978        * src/cmt_parser.cxx (parser): Add cmt show cycles parsing and support
1979
1980        * src/cmt_syntax.cxx (CommandParser): Add show_cycles info
1981
1982        * src/cmt_parser.h (enum): Add action_show_cycles
1983
1984        * src/cmt.h (class Cmt): Add cmt show cycles command to display use cycles
1985
19862003-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 153
1987
1988        * src/cmt_std.h: Suppress include ios for new header style
1989
1990        * src/cmt_parser.cxx (parse_arguments): Install a -private option to
1991        the show_use_paths action. When -private is present on the command
1992        line then the private uses are reached.
1993        (parse_arguments): Make the --private or --public option a global
1994        option to control on all CMT commands whether we reach or not the
1995        private uses.
1996
1997        * src/cmt_use.cxx (class use_action_iterator): Detect the new
1998        scope filtering mode to actually reach the private uses
1999
2000        * src/cmt_parser.cxx: Set the scope filtering mode when
2001        appropriate (cmt_show_uses, cmt_show_use_paths, cmt_broadcast,
2002        cmt_set_versions, cmt_show_setup)
2003
2004        * src/cmt.h (class Cmt): Add m_scope_filtering_mode attribute
2005
2006        * src/cmt_parser.cxx (get_scope_filtering_mode): Implement the new function
2007        (set_scope_filtering_mode): Implement the new function
2008
2009        * src/cmt.h (class Cmt): Add set_scope_filtering_mode function
2010          (class Cmt): Add get_scope_filtering_mode function
2011
2012        * src/cmt_parser.h (enum): Add a scope filtering mode to block or
2013        reach private uses
2014
20152003-05-21  Christian Arnault  <arnault@lal.in2p3.fr> 153
2016
2017        * src/cmt_use.cxx (get_all_clients): Public interface to private
2018        get_all_clients
2019        (get_all_clients): Actual recursive implementation for getting all
2020        paths to a given client
2021
2022        * src/cmt_use.h (class Use): Implement two new get_all_clients
2023        functions to acquire all paths to a given client of a package (one
2024        public with simple interface and one private with temporary
2025        storage).
2026
2027        * src/cmt_use.cxx (class use_action_iterator): traverse complete
2028        use graph for action_show_use_paths
2029
2030        * src/cmt_std.h: Set new C++ header style on Linux
2031
2032        * src/setup.zsh: Add cmt show use_paths to auto-expansion definition
2033
2034        * src/cmt_syntax.cxx (CommandParser): Add help for cmt show use_paths
2035        (get_help_texts): idem
2036
2037        * src/cmt_parser.cxx (do_show_use_paths): implement do_show_use_paths function
2038        (parse_arguments): parse cmt show use_paths <package>
2039        (parser): idem
2040
2041        * src/cmt.h (class Cmt): add do_show_use_paths function
2042
2043        * src/cmt_parser.h (enum): Start implementing a new feature: cmt
2044        show use_paths <package> to display all possible paths between the
2045        current package and the specified package.
2046
20472003-05-19    <arnault@lal.in2p3.fr> 152
2048
2049        * mgr\cmt_linux_version.sh: add a script for querying linux
2050        version for various distributions (contribution from Clark McGrew
2051        <clark.mcgrew@sunysb.edu>)
2052
2053        * src\cmt_symbol.cxx (show_macro): re-apply suppress_OS_delimiter
2054        when generating the tag makefile, but only on WIN32 context.
2055
2056        * src\cmt_pattern.cxx (class apply_pattern_action_iterator): Add
2057        action iterator to expand macros before parsing line.
2058
2059        * src\cmt_fragment.cxx (class fragment_action_iterator): Add
2060        action iterator to expand macros before parsing line.
2061
2062        * src\cmt_fragment.cxx (action): Hide make_fragments in private
2063        sections like macros
2064
2065        * mgr\requirements: Introduce the generic Unix tag for all Unix platforms
2066       
2067        * src\cmt_parser.cxx (dos_script_prefix): Factor out the writing
2068        of DOS setup and cleanup scripts.
2069
2070        * mgr\INSTALL.bat: No longer need nmake to generate the setup.bat
2071        script of CMT, thanks to the %~d0%~p0 mechanism (copy from src is enough).
2072
2073        * src\setup.bat: Install a generic mechanism for finding the
2074        current drive letter (unfortunately this mechanism does not work
2075        in any possible Unix shell)
2076
2077        * src\cmt_parser.cxx (install_setup_scripts): Apply the drive
2078        letter mechanism to setup scripts
2079
20802003-05-17    <arnault@lal.in2p3.fr> 151
2081
2082        * mgr\requirements: Typo in the cmtpath_pattern : use_includes
2083
20842003-05-14    <arnault@lal.in2p3.fr> 150
2085
2086        * src\cmt_parser.cxx (restore_all_tags): Bug in managing
2087        -tag=<taglist> argument due to the separator in m_extra_tags :
2088        force a separator before and after all tags in the list
2089        (parse_arguments): idem
2090        (print): idem
2091
20922003-05-13    <arnault@lal.in2p3.fr> 149
2093
2094        * fragments/tex: install correction from Marie Anne
2095
20962003-05-12    <arnault@lal.in2p3.fr> 148
2097
2098        * mgr/cmt_linux_version.sh: Adding a script to retrieve Linux version and distribution
2099
2100        * mgr/requirements: Add declaration of install_includes fragments
2101
2102        * fragments/install_includes_header: Make fragment for installing
2103        include directory but only for those following the standard
2104        pattern of ../<package>
2105
2106        * fragments/install_includes:
2107        * fragments/nmake/install_includes_header:
2108
2109        * mgr/cmt_installdir_action.bat: Special treatment of directory
2110        installation
2111        * mgr/cmt_uninstalldir_action.bat:
2112
2113        * fragments/constituents_trailer (remove_library_links): Add a
2114        remove_library_links target
2115        * fragments/nmake/constituents_trailer: idem
2116
2117        * fragments/constituent (uninstall): Suppress dependencies for
2118        uninstall target
2119        * fragments/nmake/constituent (uninstall): idem
2120
21212003-05-11    <arnault@lal.in2p3.fr> 147
2122
2123        * mgr\requirements: Add search libpath to installarea for WIN32
2124
2125        * fragments\nmake\library (install): bug (typo) in target names
2126
2127        * mgr\cmt_install_action.bat: use rem comments instead of #
2128        * mgr\cmt_uninstall_action.bat: idem
2129
2130        * mgr\NMake (cmt): Filter out the include and lib definitions in
2131        VisualC.nmake for cmt itself.
2132
2133        * src\cmt_parser.cxx (scan_path): Suppress unused variable
2134
2135        * src\cmt_std.h (OLD_HEADERS): Adopt new header style for WIN32
2136
2137        * mgr\requirements: Add compiler option for exception handling in VisualC
2138
21392003-05-05  Christian Arnault  <arnault@lal.in2p3.fr> 146
2140
2141        * src/cmt_use.cxx (add): Set the warning for package not found a real warning.
2142
2143        * src/cmt_parser.cxx (do_setup): Change the info message to be
2144        displayed only when appropriate
2145
21462003-05-05    <arnault@lal.in2p3.fr> 145
2147
2148        * src/cmt_version.h: v1r14
2149
2150        * doc/CMTDoc.xml: Improve the doc
2151
2152        * doc/gendoc.py (Book.syntax_start): Add an attribute name in
2153        syntax for avoiding name conflicts
2154
2155        * fragments/nmake/jar (install):
2156        * fragments/nmake/java_header (install):
2157        * fragments/nmake/library_no_share (install):
2158        * fragments/nmake/library (install):
2159        * fragments/nmake/application (install):
2160
2161        * fragments/jar (install):
2162        * fragments/java_header (install):
2163        * fragments/library_no_share (install):
2164        * fragments/library (install):
2165        * fragments/application (install): apply the centralized scripts
2166
2167        * mgr/cmt_uninstall_action.bat:
2168        * mgr/cmt_install_action.bat:
2169        * mgr/cmt_uninstall_action.sh:
2170        * mgr/cmt_install_action.sh: Scripts for doing
2171        (un)installation into the current installation area
2172
21732003-05-02  Christian Arnault  <arnault@lal.in2p3.fr> 144
2174
2175        * fragments/application (uninstall, install):
2176        * fragments/library (uninstall, install):
2177        * fragments/library_no_share (uninstall, install):
2178        * fragments/java_header (uninstall, install):
2179        * fragments/jar (uninstall, install):
2180        * fragments/constituent (install, uninstall): Add (un)install actions
2181        idem for nmake
2182       
2183
21842003-05-02    <arnault@lal.in2p3.fr> 143
2185
2186        * doc/gendoc.py : Create a new mechanism for generating HTML
2187        documentation from an XML representation.
2188
21892003-04-30  Christian Arnault  <arnault@lal.in2p3.fr> 142
2190
2191        * src/cmt_parser.cxx (do_show_strategies): Display the Setup strategy
2192
2193        * src/cmt_syntax.cxx (class KwdSetupStrategy): Decode the
2194        [no_]cleanup option for the setup_strategy in requirements file
2195
2196        * src/cmt_parser.cxx (parse_arguments): Decode the -no_cleanup option
2197        (do_setup): Apply the cleanup only when the setup strategy permits it
2198        (do_config): idem
2199
2200        * src/cmt_parser.h (enum): Add NoCleanup possibility to the SetupStrategy
2201
22022003-04-16  Christian Arnault  <carnault@lxplus051.cern.ch> 141
2203
2204        * src/cmt_parser.cxx (run): Bug in PackageCollector::run current
2205        directory missed the package name. (for cmt show clients)
2206
22072003-04-12    <arnault@lal.in2p3.fr> 140
2208
2209        * src\cmt_generators.cxx: Add excludes to all calls to get_all_files
2210
2211        * src\cmt_generator.h (class CmtGenerator): Add exclude expressions
2212
2213        * src\cmt_constituent.cxx (class constituents_action_iterator):
2214        Implement the -x=<pattern> option to the constituent to exclude
2215        patterns. Create regexps for each pattern.
2216        (show): Show excludes
2217
2218        * src\cmt_constituent.h (class Constituent): Add a vector of
2219        regexp for exclude specs.
2220
2221        * src\cmt_regexp.cxx (set): Implement the set function.
2222
2223        * src\cmt_regexp.h (class cmt_regexp): Introduce a default
2224        constructor and a set function
2225
2226        * src\cmt_generators.cxx:
2227        * src\cmt_generator.cxx: Strong restruring of generator architecture:
2228          + create a CmtGenerator basic class for all generators
2229          + create derived classes for all categories of generators
2230                 ApplicationGenerator
2231                 LibraryGenerator
2232                 DocumentGenerator
2233                 ReadmeGenerator
2234                 PrototypeGenerator
2235                 DefaultMakefileGenerator
2236                 MSDEVGenerator
2237                 VSNETGenerator
2238                 MakeSetupGenerator
2239                 ConstituentsMakefileGenerator
2240                 DependencyGenerator
2241          + transfer new stuff in cmt_generators.h/.cxx
2242          + transfer all utility functions (get_all_files etc...) into the base class
2243          + optimize handling of Variable and FragmentHandle objects per Generator class
2244       
2245
2246        * src\cmt_install_area.cxx (config): suppress echo in quiet mode
2247
2248        * src\cmt_parser.cxx (install_test_setup_scripts): Protect tempfile against spaces in paths
2249        (install_test_cleanup_scripts): idem
2250        (install_setup_scripts): idem
2251        (install_cleanup_scripts): idem
2252
22532003-04-11  Christian Arnault  <carnault@lxplus051.cern.ch> 139
2254
2255        * src/cmt_parser.cxx (do_run_sequence): Sequences are removed from
2256        cmt.cxx and implemented in a dedicated source file.
2257
2258        * src/cmt_sequence.h (class SequenceRunner): Adding cmt_sequence.h
2259        (defining sequences)
2260
2261        * src/cmt_sequence.cxx (filter): Adding cmt_sequence.cxx (extracted
2262        from cmt.cxx)
2263
2264        * src/cmt_generator.cxx (get_all_files): Return a count of non
2265        empty file names.
2266        (build_library_makefile): Ensure that get_all_files is done only
2267        once.
2268        (build_document_makefile): Ensure that get_all_files is done only
2269        once (not completed yet)
2270        (class DocumentMakefileGenerator): Start creating an object model
2271        for makefile generators. Create derived classes of
2272        MakefileGenerator for Application, Library, document
2273
2274        * src/cmt_constituent.h (class Constituent): Add excludes vector
2275        of exclusions
2276
2277        * src/cmt_constituent.cxx (class constituents_action_iterator):
2278        Start implementing exclusion mechanisms on constituent sources.
2279        We add a -x=<pattern> cumulative option to the constituent syntax
2280       
22812003-04-07    <arnault@lal.in2p3.fr> 138
2282
2283        * src\cmt_generator.cxx: Add DIRNAME Variable
2284        Add new fragments for vcproj
2285
22862003-04-05    <arnault@lal.in2p3.fr> 138
2287
2288        * mgr\requirements: define VC7 VC7debug tags for vsnet
2289
2290        * src\cmt_generator.cxx (class MakefileGenerator): Add vsnetdir variable
2291        Add declarations for vsnet fragments
2292        (reset): Install vsnetdir as ..\VisualC
2293        (pseudoGUID): Implement an algorithm for creating GUIDs
2294        (build_vsnet_workspace):
2295        (build_vsnet):
2296
2297        * src\cmt_generator.h (class Generator): Declare
2298        build_vsnet_workspace and build_vsnet methods
2299
2300        * src\cmt_constituent.cxx (build_all_vsnet_files): Implement for vsnet
2301        (build_vsnet_file): Implement for vsnet
2302
2303        * src\cmt_constituent.h (class Constituent): Add build_all_vsnet_files
2304        (class Constituent): Add build_vsnet_file
2305
2306        * src\cmt_parser.cxx (class StandardMacroBuilder): Add macro
2307        <constituent>_GUID for vsnet.
2308        (parser): Implement cmt build vsnet actions
2309
2310        * src\cmt_syntax.cxx (CommandParser): Add help about cmt build vsnet
2311
2312        * src\cmt_parser.h (enum): Add action_build_vsnet
2313
2314        * src\cmt.h (class Cmt): Add Visual Sudio.Net support (From Toby Burnett)
2315
23162003-04-03  Christian Arnault  <carnault@lxplus051.cern.ch> 137
2317
2318        * src/cmt_parser.cxx (do_setup): Do a config action to the
2319        installation area in order to perform a cleanup operation during
2320        the source setup
2321
2322        * src/cmt_install_area.cxx (config): Display a message when doing
2323        cleanup of installation areas.
2324
2325        * mgr/requirements: Rename cmt_(un)install_command to cmt_(un)install_area_command
2326        Prepare CMTr14 tag from CMTr13
2327
2328        * fragments/java_header (install_java_bin_dir): idem
2329        * fragments/library_no_share (install_lib_dir): idem
2330        * fragments/jar (install_java_lib_dir): idem
2331        * fragments/library (install_lib_dir): idem
2332        * fragments/application (install_bin_dir): idem
2333
23342003-04-02  Christian Arnault  <carnault@lxplus051.cern.ch> 136
2335
2336        * src/cmt_symbol.cxx (build): Bug : the macro_prepend was NOT really prepending.
2337
23382003-03-28  Christian Arnault  <carnault@lxplus051.cern.ch> 136
2339
2340        * src/cmt_parser.cxx (class StandardMacroBuilder): Add CMTVERSION standard macro
2341
23422003-03-28    <arnault@lal.in2p3.fr> 135
2343
2344        * src\cmt_parser.cxx (configure_version_tag): Create three new predefined tags:
2345           CMTv<n>
2346           CMTr<n>
2347           CMTp<n>
2348        to describe the current version, release and patch of CMT.
2349
2350        * src\cmt_parser.h (enum): Adding PriorityVersion for marking the
2351        priority of the new automatic version tag
2352
2353        * src\cmt_parser.cxx (configure_version_tag): Implement
2354        configure_version_tag method to create a tag for the version of
2355        CMT
2356
2357        * src\cmt.h (class Cmt): Adding configure_version_tag method to
2358        create a tag for the version of CMT
2359
2360        * src\cmt_symbol.cxx (all_set): Ensure that all path separators
2361        are back-slash on windows.
2362
2363        * fragments\nmake\jar:  Adapt for the new convention (subdirectory for the CONSTITUENT)
2364        (install_java_lib_dir):  Add installation area mechanisms
2365
2366        * fragments\nmake\java: Adapt for the new convention (subdirectory for the CONSTITUENT)
2367
2368        * fragments\nmake\java_header (install_java_bin_dir): Add installation area mechanisms
2369
23702003-03-21  Christian Arnault  <carnault@lxplus051.cern.ch> 134
2371
2372        * src/cmt_parser.cxx (parser): cmt run must be recursive for used
2373        packages (in order to get all environment variables set)
2374
23752003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 133
2376
2377        * src/cmt_symbol.cxx (show): Implement common SymbolValueList::show method.
2378
2379        * src/cmt_symbol.h (class SymbolValueList): Factor out printing SymbolValues
2380
2381        * src/cmt_symbol.cxx (create): Give use context in warning message
2382
2383        * src/cmt_symbol.h (class Symbol): Add Use* argument to print
2384        context in warning messages
2385
2386        * src/cmt_parser.cxx (vector_to_string): Ignore empty entries to
2387        avoid duplicate separators
2388
23892003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 132
2390
2391        * src/cmt_error.cxx (print): Consistently set the prefix "#CMT> "
2392        to all error messages and print outs
2393        * src/cmt_triggers.cxx (filter): idem
2394        * src/cmt_use.cxx (add): idem
2395        * src/cmt_generator.cxx (build_default_makefile): idem
2396        * src/cmt_symbol.cxx (create): idem
2397        * src/cmt_parser.cxx (do_show_macro): idem
2398
2399        * src/cmt_symbol.cxx (create): Handle the unconsistent multiple
2400        declarations of sets as macros (and vice versa)
2401
2402        * src/cmt_error.cxx (class Error): Add warning error text
2403        * src/cmt_error.h (class CmtError): Add warning error code
2404
2405        * src/cmt_parser.cxx (reach_current_package): Suppress error print
2406        when requirements file is not found
2407        (do_show_macro): Improve the error message in the
2408        "cmt show macro/set" command
2409
24102003-03-20  Christian Arnault  <carnault@lxplus051.cern.ch> 131
2411
2412        * src/cmt_parser.cxx (reach_current_package):
2413        * src/cmt_install_area.h (class CmtInstallAreaMgr): Factor out the
2414        construction of the current installation area
2415
2416        * src/cmt_install_area.cxx (setup): Filters out "default path" for
2417        constructing the current installation area
2418        (config): idem
2419
2420        * src/cmt_cmtpath_pattern.cxx (apply): Suppress "default path" (ie
2421        CMTPATH of CMT) from application of cmtpath_patterns
2422
2423        * src/cmt_parser.cxx (get_cmt_path_sources): Add accessor to cmtpath_sources
2424
2425        * src/cmt.h (class Cmt): Add accessor to cmtpath_sources
2426
24272003-03-18  Christian Arnault  <carnault@lxplus051.cern.ch> 130
2428
2429        * src/cmt_cmtpath_pattern.cxx (apply): Optimize the substitution
2430        of "<path>" in cmtpath_patterns by avoiding a loop over path items
2431        when the pattern does not contain "<path>" at all
2432
24332003-03-13  Christian Arnault  <carnault@lxplus051.cern.ch> 130
2434
2435        * mgr/requirements: Add -classpath $(src) to java compilation
2436
2437        * src/cmt_generator.cxx (analyze_file): Default copy action for
2438        files with no language is applied only to java contexts
2439
24402003-03-12  Christian Arnault  <carnault@lxplus051.cern.ch> 130
2441
2442        * fragments/java_copy: Use this fragment for default action on
2443        sources with no language
2444
2445        * src/cmt_generator.cxx (module_file_action): Install default
2446        (copy) action for source files with no language.
2447
2448        * fragments/java_header: Building jar files with * rather than *.class
2449
2450        * fragments/jar: Building jar files with * rather than *.class
2451
2452        * fragments/java_header: Syntax fix for generating manifest file
2453
24542003-03-11  Christian Arnault  <carnault@lxplus051.cern.ch> 129
2455
2456        * src/setup.zsh: Add show cmtpath_patterns option
2457
2458        * src/cmt_generator.cxx (analyze_file): Add constituent sub
2459        directory to output for java files
2460
2461        * fragments/jar: Add constituent sub directory to ../classes to
2462        store *.class and jar files
2463
2464        * fragments/java_header (install_java_bin_dir): Apply installation
2465        area mechanisms for java application
2466
2467        * mgr/requirements: Need both share/bin and share/lib for installarea
2468
24692003-03-10  Christian Arnault  <carnault@lxplus051.cern.ch> 129
2470
2471        * src/cmt_cmtpath_pattern.cxx (apply): CMTPATH patterns should be
2472        applied in revers order
2473
2474        * mgr/requirements: bug fix (missing backslash)
2475
2476        * src/cmt_install_area.cxx (config): Bug fix
2477
24782003-03-09    <ARNAULT@lal.in2p3.fr> 128
2479
2480        * src\cmt_install_area.cxx (setup): Make use of the cmt_installarea_prefix macro
2481        (config): idem
2482
24832003-03-08    <ARNAULT@lal.in2p3.fr> 128
2484
2485        * mgr\requirements: Define the cmt_installarea_prefix macro to
2486        parameterize the common prefix to be added to all CMTPATH entries
2487        for installation areas
2488
24892003-03-06    <ARNAULT@lal.in2p3.fr> 127
2490
2491        * src\cmt_install_area.cxx (config): Introduce the new macro
2492        cmt_installarea_paths used to declare all PATHS inside the
2493        installareas that will need to be checked for consistency when
2494        doing cmt config
2495
2496        * src\cmt_install_area.h (class CmtInstallAreaMgr): Remove
2497        set_path, add_path_pattern, apply_path_patterns function since
2498        they are all managed through cmtpath_patterns
2499
2500        * src\cmt_parser.cxx (do_show_cmtpath_patterns): Do set_standard_macros
2501
2502        * src\cmt_install_area.cxx (setup): Launch the CmtPathPattern::apply_all ()
2503
2504        * src\cmt_parser.cxx (parser): Add parsing of cmt show cmtpath_patterns
2505
2506        * src\cmt_syntax.cxx: Add parsing of cmt show cmtpath_patterns
2507
2508        * src\cmt_parser.h (enum): Add action_show_cmtpath_patterns
2509
2510        * src\cmt_database.cxx (cmtpath_patterns): Add CmtPathPatternVector object
2511
2512        * src\cmt_database.h (class Database): Add CmtPathPatternVector
2513
2514        * src\cmt_cmtpath_pattern.cxx: Install partial reproduction of cmt_pattern.cxx
2515
2516        * src\cmt_cmtpath_pattern.h: Create cmt_cmtpath_pattern.h
2517        (class CmtPathPattern): Install partial reproduction of cmt_pattern.h
2518
2519        * mgr\requirements: Add the source file cmt_cmtpath_pattern.cxx
2520
2521        * src\cmt_syntax.cxx (class KwdCmtPathPattern): add parser object
2522        for the new CommandCmtPathPattern.
2523
2524        * src\cmt_parser.h (enum): Add CommandCmtPathPattern to declare
2525        CMTPATH patterns to be applied onto all CMTPATH items.
2526
25272003-03-06    <ARNAULT@lal.in2p3.fr> 126
2528
2529        * src\cmt_symbol.cxx (all_set): Add debug informattion
2530
2531        * src\cmt_parser.cxx (do_run): Do set_standard_macros before
2532        running
2533
25342003-03-06  Christian Arnault  <carnault@lxplus051.cern.ch> 125
2535
2536        * src/cmt_system.h (class CmtSystem): Adding putenv to set environment variables
2537        * src/cmt_system.cxx (putenv): idem
2538
2539        * src/cmt_symbol.cxx (class SetBuilder): The build and clean
2540        function should return string object rather that referencing the
2541        string object attribute (protection against recursive calls)
2542        (class PathBuilder): idem
2543        (class MacroBuilder): idem
2544        (class ScriptBuilder): idem
2545        (resolve_value): Add comments and improve variable naming
2546        (resolve_value): idem
2547        (resolve_value_for_macros): idem
2548        (suppress_OS_delimiters): idem
2549
2550        * src/Makefile.header (common_target): Use /tmp to
2551        create temporary (and disposable) make fragments.  Rearrange
2552
2553        * mgr/Makefile (cpp): Provide support to build on LinuxDebug
2554
2555        * fragments/constituents_header (cmt_lock_setup): Use /tmp to
2556        create temporary (and disposable) make fragments.  Rearrange
2557        statements in the building of $(tag).make so as to ensure that
2558        echo statements are only done when things are ok.
2559
2560        * src/cmt_parser.cxx (install_cleanup_scripts): Define CMTROOT
2561        only if it is NOT defined yet. Goal is to keep user defined
2562        version of CMT.
2563        (install_setup_scripts): idem
2564        (install_test_cleanup_scripts): idem
2565        (install_test_setup_scripts): idem
2566
25672003-02-27  Christian Arnault  <carnault@lxplus051.cern.ch> 125
2568
2569        * src/cmt_symbol.h (class ValueBuilder): due to recursivity,
2570        Builder function cannot share the temporary string value
2571
25722003-02-26  Christian Arnault  <carnault@lxplus051.cern.ch> 125
2573
2574        * src/cmt_parser.cxx (do_run): Add Symbol::all_set
2575        (do_broadcast): idem (before the loop over packages)
2576
2577        * src/cmt_symbol.cxx (all_set): Install the mechanism to set
2578        environment variables (using putenv) into CMT. This function is
2579        called before running the CmtSystem::execute function.
2580       
2581        * src/cmt_symbol.h (class Symbol): Remove the tabs argument of the
2582        print and print_clean methods (obsolete)
2583
2584        * src/cmt_symbol.cxx (resolve_value): rename the argument for the
2585        symbol name (it applies for any symbol, not just for macros)
2586        (resolve_value): Improve comments
2587        (resolve_value_for_macros): Improve comments
2588        (resolve_macro_value): factor out at least one of the resolve macro algorithms
2589
25902003-02-24  Christian Arnault  <carnault@lxplus051.cern.ch> 124
2591
2592        * src/cmt_generator.cxx (build_dependencies): Surrounding
2593        dependencies by quotes does not please gmake. We have to check
2594        what happens on Darwin (ie what about path names with spaces?)
2595       
25962003-02-14    <ARNAULT@lal.in2p3.fr> 123
2597
2598        * mgr\requirements: Use XCOPY instead of copy for the install
2599        commands to support the directory copy
2600
2601        * fragments\installer: Suppress the need to specify install_dir
2602        with trailing slash
2603
2604        * fragments\nmake\installer: Add installer for Windows
2605
2606        * src\cmt_generator.cxx (build_dependencies): Add double quotes to
2607        support file names with non standard characters (eg spaces) (not
2608        only on Windows).       
2609        (filter_path): Add the filter operation to work on one sigle
2610        file. The filter_paths function becomes obsolete and is removed.
2611        (analyze_document_file): Use filter_path instead of filter_paths
2612        (proto_file_action): idem
2613        (module_file_action): idem
2614        (build_library_makefile): idem
2615        (build_document_makefile): idem
2616        (build_dependencies): idem
2617        (build_document_makefile): Support sources being directories
2618        (module_file_action): idem
2619
2620        * mgr\cmt_install_action.bat: idem
2621        * mgr\cmt_uninstall_action.bat: idem
2622        * fragments\nmake\library_no_share (install_lib_dir): idem
2623        * fragments\nmake\library (install_lib_dir): idem
2624        * fragments\nmake\application (install_bin_dir): idem
2625
26262003-02-11  Christian Arnault  <carnault@lxplus051.cern.ch> 122
2627
2628        * src/cmt_cvs.cxx (class CvsImplementation): Adding explicit error
2629        message when base directory cannot be created during the checkout.
2630
26312003-02-06  Christian Arnault  <carnault@lxplus051.cern.ch> 121
2632
2633        * src/Makefile.header (clean): Remove the pseudo config target for
2634        the clean target
2635       
26362003-02-04  Christian Arnault  <carnault@lxplus051.cern.ch> 120
2637
2638        * src/cmt_use.cxx (add): Add protection against recursive use
2639        statement to current_use
2640
26412003-02-04    <ARNAULT@lal.in2p3.fr> 119
2642
2643        * src\cmt_use.cxx (need_new): Add protection against recursive use
2644        statement to current_use
2645
26462003-01-31  Christian Arnault  <carnault@lxplus051.cern.ch> 118
2647
2648        * mgr/requirements : library_prefix should be empty for WIN32
2649
2650        * src/cmt_parser.cxx (install_setup_scripts): Protect the setup
2651        script generation against cases where : structuring style is set
2652        to without_version_directory and verion tag cannot be determined
2653        (eg. if the version file does not exist). Then, the -version=xxx
2654        option is suppressed from the setup script generation.
2655        (install_test_cleanup_scripts): idem
2656
2657        * src/Makefile.header (common_target): Suppress a debug settings
2658
26592003-01-28    <ARNAULT@lal.in2p3.fr> 117
2660
2661        * src\cmt_install_area.cxx (instance): Suppress the production of
2662        LD_LIBRARY_PATH installation specs for WIN32
2663
2664        * fragments\nmake\library_no_share (install_lib_dir):
2665        * fragments\nmake\library (install_lib_dir):   
2666        * fragments\nmake\application (install_bin_dir): Add install area mechanisms for WIN32
2667
26682003-01-24  Christian Arnault  <carnault@lxplus032.cern.ch> 116
2669
2670        * src/cmt_install_area.cxx (instance): The constuction of the
2671        instance also declares the path patterns.
2672
2673        (setup): Make use of the path_patterns to generate CMT statements
2674
2675        (get_install_area): The current install area is preserved in the
2676        InstallAreaMgr instance (singleton).
2677
2678        (set_path): (only used internally) build a path expression from a pattern
2679
2680        (setup): Provide additional -L... options towards the install area
2681        for use_linkopts ad shlibbuilder
2682       
2683        (config): Perform the cleanup operation onto the current installation area:
2684          check the all ref-files still refer to existing files.
2685          if not erase the corresponding installed file.
2686
2687        * src/cmt_install_area.h (class CmtInstallPathPattern): New class
2688        for storing generic patterns for (PATH/directories) duets
2689        generation and management inside install area mechanisms.  The
2690        point is to describe special conventions for things to be
2691        installed within the installation area.
2692
2693        We describe that in terms of a set of :
2694       
2695           o path-like variable names
2696           o subdirectory patterns bellow $CMTINSTALLAREA
2697
2698        All those patterns will be used to configure the installation area
2699        and to expand the specified PATH-like variables.
2700
2701           Ex:
2702              PATH            is associated with ${CMTCONFIG}/bin
2703              LD_LIBRARY_PATH is associated with ${CMTCONFIG}/lib
2704              CLASSPATH       is associated with share/bin
2705
2706           we could think of having those patterns defined in the
2707           requirements file.
2708
2709        * src/cmt_parser.cxx (do_remove_library_links): Handle symlinks
2710        induced by the <package>_libraries macros through INSTALLAREA
2711        mechanisms
2712        (do_build_library_links): (idem)
2713        (set_standard_macros): Setup operations for InstallArea have been
2714        grouped using InstallPathPatterns
2715        (do_config): Add cleanup of install area
2716
27172003-01-23  Christian Arnault  <carnault@lxplus032.cern.ch> 115
2718
2719        * src/cmt_syntax.cxx (class KwdBuildStrategy): Support extension
2720        of build_strategy with install_area mechanisms.
2721
2722        * src/cmt_system.cxx (mkdir): Suppress the error message when one
2723        cannot create a directory
2724
2725        * fragments/application (install_bin_dir):
2726        * fragments/library_no_share (install_lib_dir):
2727        * fragments/library (install_lib_dir): Use CMTINSTALLAREA instead of INSTALLAREA
2728
2729        * src/cmt_parser.cxx (do_build_library_links): Use install area
2730        mechanisms when the build_strategy is active rather than
2731        symlinking into the binary directory of the package.
2732
2733        (set_standard_macros): Add the generation of CMTINSTALLAREA
2734        environment variable, the prepending of PATH, LD_LIBRARY_PATH,
2735        CLASSPATH when install_area is active
2736
2737        * src/cmt_install_area.cxx:
2738        * src/cmt_install_area.h (class CmtInstallAreaMgr): New class for
2739        managing install area mechanisms.
2740
2741        * src/cmt_parser.h (enum): Add InstallArea in BuildStrategy
2742
27432003-01-22  Christian Arnault  <carnault@lxplus032.cern.ch> 114
2744
2745        * src/cmt_use.cxx (find_index): Bad use of a static local variable
2746        implying wrong management of -import= options
2747        (get_index): Adding accessor function to m_index private attribute
2748
2749        * src/Makefile.header (.DEFAULT): Remove temporary debugging action
2750
27512003-01-21  Christian Arnault  <carnault@lxplus032.cern.ch> 113
2752
2753        * src/cmt_symbol.cxx (all_print): Restore two-steps process for
2754        generating setenv calls (first normal env. variables then path-like)
2755        (all_print_clean):
2756
27572002-12-20  Christian Arnault  <carnault@lxplus032.cern.ch> 112
2758
2759        * src/cmt_parser.cxx (do_show_strategies): put a space character
2760
2761        * mgr/Makefile (cpp): Add the -O2 compiler option on default platforms
2762
2763        * mgr/requirements: Privately try the construction of the new CMTCONFIG
2764
2765        * src/cmt_parser.cxx (parse_arguments): Add cmt --version equivalence to cmt version
2766
27672002-12-19  Christian Arnault  <carnault@lxplus032.cern.ch> 111
2768
2769        * mgr/requirements: Change the name of cmt_cc_version.sh to
2770        cmt_dcc_version.sh for case insentivity of Darwin file system
2771
2772        * fragments/application (install_lib_dir):
2773        * fragments/library (install_lib_dir):
2774        * fragments/library_no_share (install_lib_dir):
2775
27762002-12-18  Christian Arnault  <carnault@lxplus032.cern.ch> 110
2777
2778        * src/cmt_symbol.cxx (resolve_value_for_macros): We have to
2779        suppress the conversion from %xxx% to $(xxx) on non-windows
2780        platform, since there were some occurrences of %xxx% patterns,
2781        which have a meaning in unix world!!
2782
2783        * src/Makefile.header (.DEFAULT): Only run once sub-makefile
2784
2785        * src/cmt_symbol.cxx (all_print_clean): Keep order of generation
2786        of sets and paths (instead of sets then paths)
2787
2788        * mgr/cmt_cc_version.sh: Helper scripts for compiler query commands
2789        * mgr/cmt_cxx_version.sh:
2790        * mgr/cmt_CC_version.sh:
2791        * mgr/cmt_gcc_version.sh:
2792
2793        * mgr/cmt_filter_version.sh:
2794
2795        * fragments/constituents_header (first): Make use of cmt show setup
2796       
2797        * src/cmt_parser.cxx (do_show_setup): Display sections rather than from the Makefile
2798       
2799        * src/cmt_use.cxx (class use_action_iterator): action_show_setup
2800        traverses the private subtrees (like show_uses)
2801
2802        * src/cmt.h (class Cmt):
2803        * src/cmt_parser.cxx (do_show_setup):
2804        * src/cmt_parser.h (enum): Add action_show_setup for grouping show uses,tags,path
2805
2806        * mgr/requirements: Manage a common (sh/csh) style for output
2807        redirection for system query commands
2808
2809        * fragments/library_no_share (install_lib_dir):
2810        * fragments/library (install_lib_dir):
2811        * fragments/application (install_bin_dir): Use cmt_install_command
2812        instead of install_command for install area mechanisms to avoit
2813        conflicts with the installer document generator
2814
28152002-12-18    <ARNAULT@lal.in2p3.fr> 109
2816
2817        * src\cmt_parser.cxx (do_show_strategies): Add display of setup strategy
2818        (print_context): Apply the build strategy
2819
2820        * src\cmt.h (class Cmt): Add get/set current_setup_strategy methods
2821        (class Cmt): Add m_current_setup_strategy attribute
2822
2823        * src\cmt_parser.h (enum): Add SetuStrategy enumeration
2824
2825        * src\cmt_syntax.cxx (class KwdSetupStrategy): Add SetupStrategy class
2826
2827        * src\cmt_parser.h (enum): Add setup_strategy keyword to control
2828        the production of <PACKAGE>CONFIG and <PACKAGE>ROOT env. variables
2829
2830        * src\cmt_parser.cxx (class StandardMacroBuilder): Add few debug printouts
2831
2832        * src\cmt_use.cxx (find_index): The returned index must be the
2833        m_index attribute of the Use object rather than the index in the
2834        use list of the package!!
2835
28362002-12-16  Christian Arnault  <carnault@lxplus032.cern.ch> 108
2837
2838        * src/Makefile.header (binclean): Add a quick binclean target
2839        (all): prepend a systematic config target
2840
2841        * fragments/constituents_header (all): Suppress dummy messages in gmake all and config
2842
28432002-12-16    <ARNAULT@lal.in2p3.fr> 107
2844
2845        * src\cmt.h (class Cmt): do_help remembers of the current action
2846        being parsed to have cmt help action
2847
2848        * src\cmt_syntax.h (class CommandParser): Command parsing
2849        mechanisms. So far only the help is handled. General map-based
2850        parsing mechanism is foreseen
2851
2852        * src\cmt_parser.h (enum ActionType): Add global actions for
2853        build, check, show only for error and help management
2854
2855        * src\cmt_syntax.cxx (show): Command Help management introduced (will be improved)
2856
2857        * src\cmt_parser.cxx (parse_arguments): Improve command help with SyntaxParser 
2858
2859        * mgr\requirements: Adding specs for query commands on WIN32
2860
28612002-12-12  Christian Arnault  <carnault@lxplus032.cern.ch> 106
2862
2863        * mgr/Makefile: Remove the mail sending after CMT rebuild... (!!!)
2864
2865        * src/cmt_symbol.cxx (resolve_macro_value): Detects patterns like:
2866        `$(macro-name)` within symbol definitions. The specified macro is expected
2867        to contain a shell command that will then be executed when expanding
2868        the macro.
2869
2870        * mgr/requirements: Add some system information queries:
2871        hardware
2872        system_version
2873        compiler_version
2874
2875        * mgr/cmt_filter_version.sh: Add a filtering script for system version
2876        informations.
2877
28782002-12-12    <ARNAULT@lal.in2p3.fr> 105
2879
2880        * mgr\requirements:  make use of SyntaxParser
2881        * src\cmt_triggers.cxx: idem
2882        * src\cmt_use.cxx: idem
2883        * src\cmt_parser.cxx: idem
2884        * src\cmt_pattern.cxx: idem
2885
2886        * src\cmt_syntax.cxx:
2887        * src\cmt_syntax.h (class Kwd): Introduce the new syntax parsing
2888        mechanism. It is based on a cmt_map of keyword objects. All requirements parsing
2889        operations are now implemented in the SyntaxParser singleton.
2890
2891        * src\cmt_parser.cxx (do_build_library_links): Introduce the
2892        cmt_symlink_cmd macro to override the internal management of
2893        symlink creation in case this is unavailable (eg on Windows)
2894
28952002-12-11  Christian Arnault  <arnault@lal.in2p3.fr> 104
2896
2897        * src/cmt_parser.cxx (do_set_versions): Make use of cmt broadcast
2898        to install version files in all packages. Inherit broadcast syntax.
2899       
2900        (do_broadcast): Add possibility to use template like in patterns
2901        Start with <version>.
2902
2903        * mgr/Makefile (cpp): Add profiling option
2904
2905        * fragments/check_java (check): Add run options
2906
2907        * src/cmt_use.cxx (find): Use Package grouping of uses
2908        (find_index): Use index registration information
2909        (move): Use index registration information
2910        (reorder): idem
2911        (need_new): Revisit the algo to avoid useless multiple reading of requirements files
2912        (add): Use index registration information
2913        (operate): Improve for without version directory style
2914        (Package): Introduce Package grouping of Use objects
2915
2916        * src/cmt_parser.cxx (do_set_versions): Use Package::is_cmt feature.
2917
2918        * src/cmt_string.cxx (replace): Optimize by reducing the calls to strlen.
2919
2920        * src/cmt_generator.cxx (build_dependencies): Use Package::is_cmt feature.
2921
2922        * src/cmt_include.cxx (print_all): Use Package::is_cmt feature.
2923
2924        * src/cmt_script.cxx (all_print_clean): Use Package::is_cmt feature.
2925
2926        * src/cmt_database.cxx (pattern_list_map): Discard dump features
2927
2928        * src/cmt_database.h (class Database): Restore tag management.
2929        Introduce PatternList and Package management
2930
2931        * src/cmt_project.cxx (class ProjectMgr): Suppress tag management
2932        from projects. Make it back to global management (from Database)
2933
2934        * src/cmt_pattern.h (class PatternList): Introduce PatternList
2935        class to group pattern by names. This class contains a list of
2936        Patterns of the same name but originating from different uses.
2937
2938        * src/cmt_use.h (class Use): renaming uses() to get_ordered_uses() and
2939        all_uses() to get_instances ()
2940
29412002-12-10  Christian Arnault  <arnault@lal.in2p3.fr> 103
2942
2943        * src/cmt_project.h (class Project): Add a tag_map to manage tags
2944
2945        * src/cmt_tag.cxx (add): Add a tag_map to manage tags
2946
2947        * src/cmt_tag.h (class Tag): Introduce a map of tags
2948
2949        * src/cmt_database.cxx (symbol_map): install a map of symbols
2950
2951        * src/cmt_database.h (class Database): install a map of symbols
2952
2953        * src/cmt_symbol.cxx (create): Use symbol map to find existing symbols
2954        (find): idem
2955        (symbol_map): access to the map of symbols from the database
2956        (clear_all): clear the database and the map
2957
2958        * src/cmt_symbol.h (class Symbol): Introduce the new typedef
2959        SymbolMap for a cmt_map of Symbols
2960
2961        * src/cmt_map.h: Introduce cmt_map.h implementing a map (binary tree)
2962
2963        * src/cmt_regexp.cxx (cmt_regexp): Rename cmt_node to cmt_regexp_node
2964        * src/cmt_regexp.h: Rename cmt_node to cmt_regexp_node
2965
29662002-12-09  Christian Arnault  <arnault@lal.in2p3.fr> 102
2967
2968        * fragments/check_java (check): Add run options (global and local)
2969
29702002-12-09  Christian Arnault  <carnault@lxplus032.cern.ch> 101
2971
2972        * mgr/requirements: Fix typo (trailing backslash)
2973
2974        * src/cmt_parser.cxx (parser): Add set versions operation to perform a
2975        global set version onto all used packages.
2976        (do_set_versions): Start implementing a draft scenario
2977        (parser): the set versions action require parsing the use graph.
2978
2979        * src/cmt.h (class Cmt): idem.
2980       
2981        * src/cmt_parser.h (enum): idem
2982
2983        * src/cmt_parser.cxx (configure_current_package): Set the default
2984        version expression in absence of both version directory AND
2985        version file to "v*" (instead of "v0")
2986
2987        * src/Makefile.header (binclean): Add new standard target for
2988        erasing at once the $(bin) directory
2989
29902002-12-08    <ARNAULT@lal.in2p3.fr> 100
2991
2992        * src\cmt_parser.cxx (do_set_version):
2993        (scan_path): Improving the management of various structuring styles for the FileScanner.
2994        (do_show_strategies): Displays structuring style in show_strategies
2995        (reach_current_package): Prepare the removal of automatic addition of the
2996        current package area to CMTPATH...
2997        (do_config): Fix discovery of structuring style
2998        (configure_current_package): Fix discovery of structuring style
2999        (class SequenceRunner): Accept version argument in sequence files
3000
3001        * src\cmt.h (class Cmt):
3002        * src\cmt_parser.h (enum): Add set version command to install version.cmt file
3003
3004        * src\cmt_system.cxx (is_version_directory): Handle wild cards in
3005        version ids detection
3006
3007        * mgr\requirements: Add Darwin definitions
3008
3009        * mgr\cmt_make_shlib_common.sh (temp_shlib): Protect against
3010        module files with space in their names
3011
3012        * mgr\requirements: try to remove CMT/v from PATH rather then CMT
3013        only so as to keep subpackages of CMT
3014
3015        * src\cmt_use.cxx (set_auto_imports_state): fix a bug on use pointer comparisons.
3016
3017        * fragments\nmake\constituent:
3018        * fragments\nmake\constituents_header (dirs): fix naming scheme : only .nmake
3019
3020        * mgr\NMake (cmt): protect VisualC.nmake generation against
3021        reminder of the physical location of the rebuild
3022
3023        * src\demo\demoA\requirements: Add PATH towards java on Windows
3024
3025        * mgr\NMake: Add a target to re-generate VisualC.nmake inside CMT
3026        so as to have proper nmake demo
3027
3028        * mgr\requirements: provide debug_option for WIN32 platform
3029
3030        * fragments\nmake\make_header (tags): Suppressed
3031        $(CMTCONFIG),$(CMTEXTRATAGS) and only keep $(CMTEXTRATAGS)
3032
3033        * fragments\nmake\constituents_trailer: added to NMake family
3034        * fragments\nmake\group: added to NMake family
3035
30362002-12-05    <ARNAULT@lal.in2p3.fr> 99
3037
3038        * src\cmt_vector.h (cmt_vector): replace static int frame_size by
3039        enum {frame_size} to C++ ANSI compliance.
3040
3041        * src\cmt_use.cxx (BestFitSelector::operate): When structurig
3042        style is withut-version-directory, the version field of the
3043        package may still contain wild cards. This has to be considered
3044        when checking compatibility.
3045
30462002-12-04  Christian Arnault  <carnault@lxplus032.cern.ch> 98
3047
3048        * src/cmt_use.cxx (set_auto_imports_state): bug fix (corresponding to v1r12p20021129)
3049
30502002-10-30  Christian Arnault  <carnault@lxplus032.cern.ch> 97
3051
3052        * src/cmt_vector.h (cmt_vector): define frame_size as a static
3053        const int instead of enum
3054
30552002-10-15  Christian Arnault  <carnault@lxplus032.cern.ch> 96
3056
3057        * src/cmt_use.cxx: Protect against use objects badly recorded
3058        within auto_imports_state vectors
3059
3060        * src\cmt_parser.cxx (scan_path): Fix algo to scan packages to
3061        cope with no-version style
3062        (class StandardMacroBuilder): Fix no-auto-imports algo
3063
30642002-09-24  Christian Arnault  <arnault@lal.in2p3.fr> 95
3065
3066        * mgr/ChangeLog.php: Introduce the online filter for ChangeLog file
3067
3068        * doc/documents.html: Use PHP to filter out ChangeLog
3069
3070        * mgr/Makefile (docs): Install ChangeLog and ChangeLog.php into web site
3071
3072        * src/setup.zsh: Add an empty leading line to avoid shell problems...
3073
3074        * src/Makefile.header (config): force the rebuild of $(tag).make
3075
30762002-08-06  Christian Arnault  <arnault@lal.in2p3.fr> 94
3077
3078        * fragments/library: Split action list so as to force the rebuild
3079        of shared libraries when it has been lost while shstamp is still
3080        there.
3081
30822002-06-21    <arnault@lal.in2p3.fr> 93
3083
3084        * src/cmt_parser.cxx (class SequenceRunner): Add support for comments in the sequence files
3085        (do_show_macro_names):
3086        (do_show_set_names):
3087        (print_symbol_names):
3088       
3089        (class StandardMacroBuilder): prepare the production of
3090        <constituent>_use_linkopts but let it unsused for the time being
3091
3092        (class StandardMacroBuilder): fix a typo
3093       
3094        (class StandardMacroBuilder): fix a bug
3095
3096        * src/cmt_parser.h (enum):
3097        * src/cmt.h (class Cmt): Adding do_show_macro_names,
3098        do_show_set_names, print_symbol_names functions
3099
3100        * src/setup.tcsh:
3101        * src/setup.zsh: move the -quiet option before verb to avoid confusion with new syntax for show xxxs
3102
3103        * src/demo/tprivate.cmt:
3104        * src/demo/demo1.cmt: improve test sequences
3105
3106        * mgr/requirements: add the macro preproc to prepare new scheme
3107        for dependency generation using cpp -MD
3108
3109        * mgr/Makefile (cpp): Specialize default cpp according to the platform
3110        (hosts): we don't need BOOL hosts anymore
3111        (demo): the demo sequence now exploits the sequence runner of CMT
3112        (tprivate): new test sequence on private uses.
3113
3114        * mgr/ChangeLog.awk: Adding this awk script to convert the ChangeLg file int HTML format
3115
3116        * doc/CMTDownload.html:
3117        * doc/download.html:
3118        * doc/install.html: doc improvements
3119
3120        * fragments/application: Temporarily stop using $(${CONSTITUENT}_use_linkopts)
3121
3122        * src/NMakefile.header (tag):
3123        * src/Makefile.header (tags):
3124        * fragments/nmake/constituents_header (tag):
3125        * fragments/nmake/make_header (tag):
3126        * fragments/constituents_header (tag):
3127        * fragments/make_header (tag): Add $CMTCONFIG to tags
3128
31292002-05-29    <arnault@lal.in2p3.fr> 92
3130
3131        * src\cmt_database.cxx:
3132        * src\cmt_database.h:
3133        * src\cmt_project.h (class Project):
3134        * src\cmt_project.cxx (Project): Introduce Project management
3135
3136        * mgr\requirements: Define the default project CMT
3137
3138        * src\cmt_parser.h (enum):
3139        * src\cmt_parser.cxx (select):
3140                Introduce apply_tag statements<br>
3141                Introduce first iteration on project management
3142       
3143        * src\cmt_symbol.cxx (action): replace direct access to member of
3144        tag objects by accessor functions.
3145
3146        * src\cmt_tag.cxx (add):
3147        * src\cmt_tag.h (class Tag):
3148                Clean up the for private members only<br>
3149                introduce action_apply to activate a tag from a requirements file<br>
3150                introduce tag expressions -> this defines primary tags versus
3151                computed ones. Selection is either obtained from m_selected for
3152                primary tags or computed from operands otherwise.
3153                so far only AND expressions are available.
3154
31552002-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 91
3156
3157        * src/cmt_symbol.cxx (select_last): Make use of Tag::is_selected
3158
3159        * src/cmt_tag.cxx (is_selected):
3160        * src/cmt_tag.h (class Tag): Add and_operands for defining tags
3161        from a bool expression of primary tags. Move selected to private
3162        area to ensure usage of is_selected which may compute the
3163        selection state from operands. The embedded state is now reserved
3164        to primary tags.
3165
31662002-05-28  Christian Arnault  <carnault@lxplus040.cern.ch> 90
3167
3168        * src/cmt_awk.cxx (class Parser): Replace the basic parsing engine
3169        by the local Parser class. It takes care of both EOL styles (Unix
3170        and Win) and of trailing backslashes for continuations.
3171
3172        * src/cmt_awk.h (class Awk): Added a function inc_line_number to
3173        increment the line number from the external text parser.
3174
3175        * src/cmt_cvs.cxx (filter): Added debug messages
3176
3177        * src/cmt_parser.cxx (do_awk):
3178        * src/cmt_parser.h (enum): Added action_awk
3179        * src/cmt.h (class Cmt): Added do_awk function for testing the Awk operator.
3180
31812002-05-27    <arnault@lal.in2p3.fr> 89
3182
3183        * doc\todo.html: Adding entries
3184
31852002-05-24  Christian Arnault  <carnault@lxplus012.cern.ch> 88
3186
3187        * src/cmt_cvs.cxx (class CvsImplementation): fix few problems with
3188        no_version_directory.
3189
31902002-05-23  Christian Arnault  <arnault@lal.in2p3.fr> 87
3191
3192        * src/demo/scenario.awk: Adapt to handle without_version_directory style
3193
3194        * src/demo/demo1.cmt: fix a typo
3195
3196        * src/cmt_parser.cxx (parse_requirements): Fixing bug on private
3197        macros for without_version_directory style
3198
3199        * mgr/Makefile (demo): Improving the demo scenario manager
3200
32012002-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 86
3202
3203        * doc/download.html:
3204        * doc/CMTDownload.html:
3205        * src/cmt_version.h (CMTVERSION): preparing tagging for v1r13...
3206
3207        * src/cmt_use.h (class Use): new helpers
3208
3209        * src/cmt_use.cxx (class use_action_iterator): re-design the scope
3210        hiding for private uses (was buggy for first level private uses)
3211        (reach_package): structuring style
3212        (get_full_path): new helper for centralizing the full package path
3213        computation
3214        (reduce_path): new helper to normal form with $<PACKAGE>ROOT
3215        (get_paths): add debug prints
3216        (show_sub_uses): structuring style
3217
3218        * src/cmt_system.h (class CmtSystem):
3219        * src/cmt_system.cxx (reduce_file_separators): helper to reduce
3220        multiple file separators into one
3221        (is_package_directory): structuring style
3222
3223        * src/cmt_pattern.cxx (apply): add debug prints
3224
3225        * src/cmt_parser.h (enum): Add CmtStructuringStyle options
3226
3227        * src/cmt_parser.cxx:
3228         Introducing support for structuring style.
3229         m_current_structuring_style global variable
3230         (scan_path):
3231         (scan_package):
3232         (run):
3233         (PackageCollector::run):
3234         (configure): calling configure_current_structuring_style
3235         (configure_current_package):
3236         (configure_current_structuring_style): new method
3237         (do_broadcast): use Use::get_full_path
3238         (do_config):
3239         (do_create):
3240         (do_help):
3241         (do_lock): suppress unused local variable
3242         (do_remove):
3243         (do_show_macros): add pattern for selection instead of default '*'
3244         (do_show_sets): idem
3245         (do_unlock): suppress unused local variable
3246         (get_current_strategy): new method
3247         (install_cleanup_scripts): install cleanup scripts on windows
3248         (load):
3249         (parse_arguments): re-number argument array
3250         (parse_arguments): support arguments for cmt show macros
3251         (parse_arguments): support arguments for cmt show sets
3252         (parse_arguments): -with_version_directory option
3253         (parse_arguments): -without_version_directory option
3254         (parse_requirements):
3255         (parser): support arguments for cmt show macros
3256         (parser): support arguments for cmt show sets
3257         (print_context): use Use::get_full_path
3258         (print_macros): selection pattern (reg. expression) on symbols
3259         (reach_current_package):
3260         (set_standard_macros): add getting pwd
3261         (set_standard_macros): structuring style
3262
3263        * src/cmt_generator.cxx
3264         (SourceFile::set): use CmtSystem::reduce_file_separators
3265         (prepare_use_context): idem
3266         (prepare_use_context): use Use::get_full_path
3267         (set_full_name): idem
3268         (build_make_setup): idem
3269
3270        * src/cmt_fragment.cxx
3271         (print): use Use::reduce_path factorization
3272         (locate): use Use::get_full_path factorization
3273         (locate): Support structuring style options
3274
3275        * src/cmt_cvs.cxx:
3276          + need cmt.h for accessing structuring style
3277          + support for structuring style
3278
3279        * src/cmt.h (class Cmt):
3280        Adding support for structuring style
3281       
3282        do_show_macros now accepts arguments
3283
3284        do_show_sets now accepts arguments
3285
3286        print_macros now accepts a pattern for selecting symbols
3287
3288        * src/demo/tprivate.cmt: Scenario for testing private uses and
3289        -no_auto_imports
3290
3291        * src/demo/demo1.cmt: Scenario for the general test/demo sequence.
3292       
3293        * src/demo/scenario.awk: Add a script for installing
3294        scenarios. This script can
3295          - create packages
3296          - install text files relatively to the packages.
3297
3298        * mgr/Makefile (demo): Replace the copy operations for the demo
3299        targets by an awk-based mechanism (only for Unix -> keep old
3300        mechanism for Windows). The scenario.awk script is able to create
3301        packages and install text files into the newly created packages.
3302
3303        Add a target (a scenario) for testing private uses and
3304        -no_auto_imports
3305
3306        Add an help target describing all special targets.
3307
3308        * fragments/constituents_header (first): Differentiate setup.make
3309        with the package name when $(bin) is common.
3310
33112002-05-17  unknown  <arnault@lal.in2p3.fr> 85
3312
3313        * doc/todo.html: Adding a web page for ToDo list, and bug reports.
3314
3315        * src/cmt_parser.cxx (install_test_setup_scripts):
3316        * src/cmt_parser.cxx (install_test_cleanup_scripts): Fix the bug
3317        to "source setup" standalone with a current directory outside the
3318        package itself.
3319
33202002-05-15  Christian Arnault  <arnault@asc.lal.in2p3.fr> 84
3321
3322        * src/cmt_version.h (CMTVERSION): Preparing the new tag v1r12p20020515
3323
3324        * doc/CMTDoc.html: Upgrade the documentation.
3325
3326        * src/setup.tcsh:
3327        * src/setup.zsh: Add all_tags to the list of know show options
3328
3329        * src/cmt_tag.cxx (show_definition):
3330        * src/cmt_tag.h (class Tag): Added Tag::show_definition
3331        (unfiltered show method wrt the selected state)
3332
3333        * src/cmt_parser.cxx (do_help): Implement the new cmt show all_tags command.
3334
3335        * src/cmt.h (class Cmt): Added Cmt::do_show_all_tags ()
3336
3337        * src/cmt_parser.h (enum): Added action_show_all_tags
3338
3339        * mgr/requirements: remove -I$(inc) from default value of ccomp
3340        macro (no longer needed and has side effects)
3341
3342        * src/cmt_use.cxx (add): Protect against null use pointer when not found.
3343
3344        * src/cmt_tag.cxx (action): do increase the tag ref list when
3345        overridden. It used to be un-overridden...
3346
3347        * fragments/constituents_trailer (clean): add a semi-colon between the two shell commands.
3348       
3349        * src/cmt_system.cxx (create_symlink): Explicit .c_str() in system calls.
3350
3351        * doc/table.html: setup a direct URL to CVSWeb rather than through
3352        an intermediate page
3353
33542002-04-12  Christian Arnault  <carnault@lxplus030.cern.ch> 84
3355
3356        * doc/CMTDoc.html:
3357        * src/setup.zsh:
3358        * src/setup.tcsh:
3359        * src/cmt_parser.cxx (do_help):
3360        * src/cmt.h (class Cmt):
3361        * src/cmt_parser.h (enum): introduce action_show_all_tags do
3362        display all defined tags (while action_show_tags only shows all
3363        active tags)
3364
3365        * fragments/constituents_trailer (clean): typo in the clean target.
3366
33672002-04-11    <arnault@lal.in2p3.fr> 83
3368
3369        * src\cmt_parser.cxx (print_clean): Suppress the unset of CMTCONFIG
3370
33712002-04-10    <arnault@lal.in2p3.fr> 82
3372
3373        * fragments\library:
3374        * fragments\library_no_share: Suppress the experimental change for
3375        erasing the object files after filling the library
3376
33772002-04-10  Christian Arnault  <carnault@lxplus044.cern.ch> 81
3378
3379        * src/cmt_version.h: preparing tagging for v1r12
3380
3381
3382       
3383        * mgr/requirements: Adapt to Darwin
3384
3385        * src/cmt_symbol.cxx (action):
3386        * src/cmt_use.cxx (action):
3387        * src/cmt_use.h (class Use): Introduce m_has_native_version
3388
3389        * mgr/requirements: Add standard $(library_prefix) and $(library_suffix) macros
3390
3391        * mgr/cmt_make_shlib_common.sh (temp_shlib): Set verbose mode to
3392        the linker command and control it through the QUIET macro. Fix the
3393        temporary expansion directory
3394       
3395        * mgr/cmt_make_shlib_common.sh (temp_shlib):
3396        * fragments/library_header:
3397        * fragments/cleanup_library: Add standard $(library_prefix) and $(library_suffix) macros
3398
3399        * fragments/constituents_trailer (makefilesclean):
3400        * fragments/constituent: remove specific makefile fragments for
3401        the constituents (instead of *.make)
3402
3403        * fragments/library_no_share:
3404        * fragments/library: erase *.o files after filling the library
3405
3406        * src/cmt_use.h (class Use): Add use::sub_use_auto_imports to save
3407        specifications on sub uses. Add Use::set_auto_imports to possibly
3408        promote auto_imports to sub uses when it is changed from Off to
3409        On.
3410
3411        * src/cmt_parser.h (enum):
3412        * src/cmt_pattern.cxx (show_all_applied_patterns):
3413        * src/cmt_pattern.h (class Pattern): adding Pattern::show_all_applied_patterns ()
3414        * src/setup.tcsh:
3415        * src/setup.zsh:
3416        * src/cmt_parser.cxx (do_help):
3417        * src/cmt.h (class Cmt): Adding Cmt::do_show_applied_patterns for
3418        the new command "cmt show applied_patterns"
3419
34202002-04-04  Christian Arnault  <carnault@lxplus044.cern.ch> 80
3421
3422        * src/cmt_use.cxx (add): Protect against duplicated registration of
3423        current_use.
3424
3425        * src/cmt_parser.cxx (install_setup_scripts): Append an empty line
3426        at the end of the generated setup script (problem on some shells)
3427       
3428        * src/cmt_parser.cxx (do_create):
3429        * src/cmt.h (class Cmt): Change the signature of the do_create
3430        function to receive its arguments from the "arguments" list rather
3431        than changing current_package etc...
3432
3433        * src/Makefile.header: Add a systematic config target (for backward compatibility)
3434
3435        * fragments/constituents_trailer (binclean): added the binclean
3436        target to completely remove the binary directory at once.
3437
3438        * fragments/make_header:
3439        * fragments/constituents_header:
3440        * fragments/nmake/make_header (CMTEXTRATAGS):
3441        * fragments/nmake/constituents_header (CMTEXTRATAGS): Remove the settings of CMTCONFIG
3442
34432002-03-22  Christian Arnault  <carnault@lxplus037.cern.ch> 79
3444
3445        * src/cmt_symbol.cxx (suppress_OS_delimiters): operate on %...%
3446        patterns only on Windows machines.
3447
34482002-03-20  Christian Arnault  <carnault@lxplus042.cern.ch> 78
3449
3450        * mgr/Makefile (Atlas): Suppress HP rebuild for Atlas group
3451
3452        * src/cmt_cvs.cxx (filter): Improve the recursive passes and
3453        handle the new qualifiers of the use statements.
3454
3455        * fragments/cleanup_header (clean): Fix bad insertion of the .DEFAULT target
3456
3457        * src/cmt_symbol.cxx (suppress_OS_delimiters): Introduce this new
3458        function to ensure that only $() syntax is used in tag makefiles
3459        (ie suppress ${} and %% syntaxes)
3460        (show_macro): apply this new function for action_build_tag_makefile
3461
3462        * src/cmt_generator.cxx (reset): Do not generate the Visual
3463        directory on non-windows machines
3464
3465        * fragments/group (clean): Suppress one echo on gmake clean
3466
34672002-03-14  Christian Arnault  <carnault@lxplus037.cern.ch> 77
3468
3469        * src/cmt_parser.cxx (set_standard_macros): Cleanup management of m_current_tag
3470
34712002-03-07  Christian Arnault  <carnault@lxplus048.cern.ch> 76
3472
3473        * src/cmt_parser.cxx (print_context): Suppress the automatic
3474        settings of CMTEXTRATAGS
3475
3476        * src/Makefile.header: Do not change CMTCONFIG
3477        * src/NMakefile.header: Do not change CMTCONFIG
3478
34792002-02-27  Christian Arnault  <carnault@lxplus042.cern.ch> 75
3480
3481        * fragments/jar: Adding removal of jar file for clean target
3482
3483        * src/cmt_use.cxx (show_sub_uses): show no_auto_imports status
3484
3485        * src/cmt_parser.cxx (reach_current_package): reapply global
3486        pattern at once until side effects are solved in user projects.
3487
3488        * fragments/jar: Apply an old fix to Unix fragments (was applied
3489        to Windows only)
3490
34912002-02-26  Christian Arnault  <carnault@lxplus016.cern.ch> 74
3492
3493        * src/cmt_use.cxx (move_to): select_alternate must be applied
3494        after reach_package for searches against an absolute path or
3495        against the current directory.
3496
34972002-02-25    <arnault@lal.in2p3.fr> 73
3498
3499        * fragments/cleanup_header (clean): Add default action
3500
3501        * src/Makefile.header (common_target): Remove debug print
3502
3503        * src\cmt_parser.cxx (parse_requirements): Apply global patterns
3504        right after parsing a requirements file, and only considering the
3505        Use context, one at a time (rather than applying all global
3506        patterns to all Uses at once after reading all requirements file)
3507
3508        * src\cmt_pattern.cxx (apply_all_globals):
3509        * src\cmt_pattern.h (class Pattern): Add a method to apply all
3510        global patterns in the context of only one Use object.
3511
35122002-02-24    <arnault@lal.in2p3.fr> 72
3513
3514        * src\cmt_system.cxx (command_separator): New method for getting
3515        the shell command separator (& or ;)
3516
3517        * src\cmt_cvs.cxx (class CvsImplementation): Add
3518        CmtSystem::command_separator() between cvs co of each branch
3519        (instead of newlines).
3520
3521        * src\cmt_system.cxx (has_device): Accepts the \\xxx\ syntax as a
3522        device name in file paths on windows.
3523
3524        * src\cmt_parser.cxx (configure_cmt_path): Hide show_set action
3525        when recursive definition of CMTCONFIG
3526
3527        * src\cmt_use.cxx (need_new): Some optimizations
3528       
3529        * src\cmt_use.cxx (move_to): Exchange the priority of CMTPATH
3530        versus version when selecting the best version.
3531
3532        * src\cmt_parser.cxx (use_cmt): Hide CMTDEBUG while parsing the
3533        requirements of CMT itself
3534
35352002-02-20  Christian Arnault  <arnault@lal.in2p3.fr> 71
3536
3537        * src/cmt_parser.cxx (do_broadcast): Fix a bug for setting the
3538         style the the Current use. This effect was induced by the new
3539         mechanism for constructing the Current Use object, now a singleton
3540         of the Use class.
3541
35422002-02-07    <arnault@lal.in2p3.fr> 70
3543
3544        * src\cmt_use.cxx (change_path): Add a m_located flag in Use class
3545        to record the success of the package localization. Test against
3546        this info instead of real_path to allow for package found in
3547        current directory (where real_path stays empty)
3548
3549        * src\cmt_parser.cxx (configure):
3550
3551        * src\cmt_use.cxx (show_sub_uses): Ensure that the cmt show uses
3552        displays the correct scoping information for uses and
3553        sub-uses. cmt show uses also displays the full tree even when it
3554        contains private uses.
3555
35562002-02-06    <arnault@lal.in2p3.fr> 69
3557
3558        * src\cmt_use.cxx (class use_action_iterator): Install UseContext
3559        to manage proper propagation of -no_auto_imports
3560
35612002-01-30    <arnault@lal.in2p3.fr> 68
3562
3563        * src/cmt_parser.cxx (parse_arguments): Fix the bug of private
3564        environment variables which could not be set even within the
3565        package (bug in the management of the -pack= -version= -path=
3566        options).
3567
3568        * src/cmt.h : Install all attributes of the Cmt class as private
3569        attributes, and make them follow the convention : m_xxx. This
3570        implies to install few accessor methods.
3571
35722002-01-29    <arnault@lal.in2p3.fr> 67
3573
3574        * src/cmt_use.cxx (class use_action_iterator): The private uses
3575        are accessed for
3576            - broadcast operations
3577            - show uses operations
3578
3579        * src/cmt_symbol.cxx (action): Expands the specified script name
3580        for the setup_script and cleanup_script statement.
3581          Protect against empty script names.
3582
35832002-01-11  Christian Arnault  <carnault@lxplus035.cern.ch> parallelbuilds
3584
3585        * src/Makefile.header: Reorganize basic Makefile fragment
3586        generation to permit better support for parallel & concurrent
3587        builds.  Mimize also the number of makefile fragments generated
3588        and kept : only $(tag).make remains in ../cmt . All other are
3589        thrown away after use.
3590
3591        Make those changes a branch "parallelbuilds"
3592       
3593
35942002-01-09  Christian Arnault  <carnault@lxplus001.cern.ch> 66
3595
3596        * src/NMakefile.header (tags): Apply the fix for tags onto
3597        NMakefile.header
3598
35992002-01-07    <arnault@lal.in2p3.fr> 65
3600
3601        * src/Makefile.header (tags): Attempt to fix the continuity break
3602        between v1r9 and v1r10, by re-installing the possibility to use
3603        gmake tag=<...> rather than having to use source setup.[c]sh
3604        -tag=<...>
3605
3606        (This fix has to be tested before any validation)
3607
36082001-11-26  Christian Arnault  <carnault@atlas50.cern.ch> 64
3609
3610        * Tagging v1r10p20011126
3611       
3612        * src/Makefile.header: tag is now ${CMTCONFIG} and tags ${CMTEXTRATAGS}
3613
3614        * mgr/requirements: Provide the macro tags as ${CMTEXTRATAGS}
3615
3616        * src/cmt_tag.cxx: Various changes in strategy for tags:
3617          - tag inclusion (defined by the "tag" statement) transmits the priority.
3618          - tag selection can be discarded by exclusion specifications. Exclusion
3619          qualifies a set of contradictory tags. Contradictory tags will be selected
3620          according to their priority or to their declaration order in case of
3621          equal priority.
3622
3623        * src/cmt_parser.h (enum Priority): Change the priority list:
3624        Arguments get highest priority
3625        then CMTCONFIG
3626        then user tags (those defined in requirements)
3627
3628        * fragments/make_setup: produce uses.make and tags.make
3629
3630        * src/cmt_parser.cxx (parse_arguments):
3631        * src/cmt.h (class Cmt): Suppress the mechanism of
3632        primary_tag. CMTCONFIG is enough.
3633
36342001-11-21  Christian Arnault  <carnault@lxplus040.cern.ch> 63
3635
3636        * src/cmt_symbol.cxx (add_value_to_list): fix protection on
3637        value_list.size () to start at 1 (not at 2)
3638
3639        * src/cmt_symbol.cxx (build): Reflective values of Sets should
3640        consider previous setenv settings.
3641
3642        * src/cmt_generator.cxx (build_dependencies): Using ../$(tag) for
3643        output base of the dependencies fragment rather then
3644        Cmt::current_tag
3645
3646        * src/Makefile.header (CMTPRIMARYTAG): tag=... argument of gmake
3647        will override CMTPRIMARYTAG. However internal tag macro is only
3648        replaced with ${CMTCONFIG}
3649
3650        * fragments/make_setup (config): create a tags.log (for cmt show
3651        tags)
3652
3653        * mgr/cmt_make_shlib_common.sh: Add the ${lib} prefix to the
3654        temporary expansion directory. Fix a bug in sed filter for all
3655        module files.
3656
3657        * src/cmt_parser.cxx (configure_tags): Add a protection against
3658        absence of CMTPRIMARYTAG
3659
3660        * src/cmt_system.cxx (create_symlink):
3661        * src/cmt_system.h (class CmtSystem): Adding the create_symlink
3662        function.
3663
3664        * src/cmt_parser.cxx (do_build_library_links): Using direct system
3665        calls to create symlinks.
3666
36672001-11-13  Christian Arnault  <carnault@lxplus010.cern.ch> 62
3668
3669        * Tagging v1r10p20011113
3670
3671        * mgr/requirements:
3672        * src/constituents.make (build_library_links): Define macros for
3673        build_library_links and remove_library_links
3674
3675        * fragments/make_setup (config): Add build_library_links target
3676
3677        * src/cmt_parser.cxx (set_standard_macros): Fix bad production of
3678        use_includes when private is used.
3679
3680        * src/cmt_parser.cxx (do_broadcast): Fix -begin=<pattern> error
3681
36822001-11-08  Christian Arnault  <carnault@lxplus028.cern.ch> 61
3683
3684        * src/cmt_version.h: tagging v1r10
3685
3686        * src/cmt_system.cxx (add_cmt_path): Get cwd alias to each selected path.
3687
3688        * src/cmt.h (class Cmt): Add cmt_path_cwd vector of all CMTPATH
3689        entries normalized to getcwd.
3690
3691        * src/cmt_generator.cxx (java_file_action):
3692        * src/cmt_generator.cxx (proto_file_action):
3693        * src/cmt_generator.cxx (module_file_action): Pass reference to the constituent in order
3694        to transmit constituent variables to the fragment.
3695
3696        * src/cmt_parser.cxx (set_standard_macros): Insert a space
3697        character for all generated macro_append operations.
3698
3699        * src/cmt_fragment.cxx (xxxcopy):
3700        * src/cmt_fragment.h (class Variable): Adding the expansion of
3701        fragments variables using both the ${} syntax AND the $() syntax.
3702
3703        * src/cmt_tag.h :
3704        * src/cmt_tag.cxx (is_selected): Change the Tag::selected attribute to bool.
3705
37062001-11-07  Christian Arnault  <carnault@lxplus006.cern.ch> 60
3707
3708        * src/cmt_symbol.cxx (build): Implement the possibilty to have
3709        reflexive asignment to symbols: when a symbol value is exactly
3710        specified (from set, macro or path statements) using $(<name>) or
3711        ${<name>} or %<name>% then the old value is preserved for all
3712        corresponding selectors.
3713
3714        * src/cmt_parser.cxx (set_standard_macros): Re-activate -import
3715        options (that had been discarded!)
3716
3717        * src/cmt_use.cxx (add): Generate an error when a package is not
3718        found (the error was only generated at "cmt show uses")
3719
3720        * src/cmt_constituent.cxx (show): Display -import options
3721
3722        * fragments/dependencies: Force checking $(bin)
3723
3724        * fragments/constituent: Adding some printout to display when
3725        constituent fragment is rebuilt
3726
3727        * src/cmt_parser.cxx (set_standard_macros): Re-validate
3728        -no_auto_imports option for use and -import options for
3729        constituents.
3730
37312001-11-06  Christian Arnault  <carnault@lxplus038.cern.ch> 59
3732
3733        * src/cmt_generator.cxx (build_document_makefile): protect against
3734        missing files (causing infinite loops in Make)
3735
37362001-11-05  Christian Arnault  <carnault@lxplus005.cern.ch> 58
3737
3738        * mgr/Makefile (application_suffix): Define application_suffix in
3739        the CMT's Makefile
3740
3741        * src/cmt_parser.cxx (print_context): Do not generate ROOT and
3742        CONFIG for cmt_standalone packages.
3743
3744        * mgr/requirements: Reomving the cmt_selector.cxx source file.
3745
3746        * src/constituents.make: Force the dirs target for
3747        build_library_links
3748
3749        * src/cmt_parser.cxx (restore_all_tags): Get the value of
3750        CMTPRIMARYTAG to configure Cmt::primary_tag.
3751
3752        Leave unchanged the primary_tag and the extra_tags except if
3753        overridden through the -tagxxx= options
3754
3755        * src/cmt_parser.h (enum): Add PrioritySite in the list of
3756        possible priorities.
3757
3758        * src/cmt.h (class Cmt): Add the restore_all_tags function. Add
3759        the extra_tags attribute . Change the strategy of tag persistency:
3760
3761          o CMTPRIMARYTAG always contains what had been specified using
3762        the -tag= option,
3763
3764          o CMTEXTRATAGS contains what had been manipulated by -tag_add=
3765        and -tag_remove= options.
3766
3767          o CMTCONFIG is setup independently of the primary tag.
3768
3769        * src/Makefile.header (primary_tag): Propagate tags using
3770        CMTPRIMARYTAG instead of CMTCONFIG (except when CMTPRIMARYtAG is
3771        not yet defined)
3772
3773        * src/cmt_constituent.cxx (parse): Fix the word parsing for
3774        constituent specification...
3775
37762001-11-02  Christian Arnault  <arnault@asc.lal.in2p3.fr> 57
3777
3778        * src/cmt.h
3779        * src/cmt_database.cxx
3780        * src/cmt_database.h
3781        * src/cmt_parser.cxx
3782        * src/cmt_parser.h
3783        * src/cmt_selector.cxx
3784        * src/cmt_selector.h
3785        * src/cmt_symbol.cxx
3786        * src/cmt_symbol.h
3787        * src/cmt_tag.cxx
3788
3789        * src/cmt_tag.h:
3790        Suppressing cmt_selector objects (only tags are needed!!)
3791        Add tag_exclude keyword for building tag-exclusions.
3792
37932001-10-31  Christian Arnault  <carnault@atlas50.cern.ch> 56
3794
3795        * mgr/requirements: Don't need to explicitly declare make_fragment
3796        headers (automatically declared in the -header= option)
3797
3798        * src/cmt_symbol.cxx (print_clean): Cleaning up path variables may
3799        be either unsetenv when the result is empty or setenv if not.
3800       
3801        * fragments/application_launcher: evolution
3802
3803        * src/cmt_parser.cxx (configure_tags): protect against empty
3804        declaration of CMTCONFIG : by default will take uname...
3805
38062001-10-30  Christian Arnault  <carnault@atlas50.cern.ch> 55
3807
3808        * src/cmt_symbol.cxx (clean): Implement the cleanup correctly,
3809        with in particular the cleanup of the path variables.
3810
3811        * src/cmt_parser.cxx (print_context): improve output of cmt show tags
3812
3813        * src/cmt_symbol.h (class Symbol): Add clean_macro_value for
3814        building the result of the clean operations induced by this symbol
3815        (only implemented for path_xxx)
3816
3817        * src/cmt_parser.cxx: New post-context requirements file :
3818        user_context in addition to home package.  Added Use* use
3819        arguments to configure_xxx functions to transfer.
3820
3821        * src/cmt_parser.cxx(configure_cmt_path): Attempt to make use of
3822        CMTPATH definitions from requirements files.
3823
3824        * src/cmt_parser.cxx(configure_config_selector): Install context
3825        information for tag creation
3826
3827        * src/cmt_parser.cxx(configure_home): Attempt to make use of
3828        CMTHOME definitions from requirements files.
3829
3830        * src/cmt_parser.cxx(configure_user_context): Install user_context
3831        management
3832
3833        * src/cmt_parser.cxx(configure_site_selector): Get CMTSITE from
3834        requirements as well
3835
3836        * src/cmt_parser.cxx(configure_tags): Add a configure_tags
3837        finction to retreive tags from all possible sources: CMTCONFIG
3838        (from req) then CMTPRIMARYTAG then CMTCONFIG then CMTBIN then
3839        append all CMTEXTRATAGS.
3840
3841        * src/cmt_parser.cxx(parse_arguments): fix parsing bug for the
3842        -home= argument
3843
3844        * src/cmt_parser.cxx(parser): Set action_show_path to be recursive
3845
3846        * src/cmt_parser.cxx(parser): Call the HOME package just after
3847        using CMT. Call the use_context package just after reaching the
3848        current package.
3849
3850        * src/cmt_parser.cxx(print_clean): reformat the output (with
3851        newlines). Clear CMTPRIMARYTAG CMTEXTRATAGS and CMTCONFIG.
3852
3853        * src/cmt_parser.cxx(print_context): set CMTPRIMARYTAG
3854        CMTEXTRATAGS and CMTCONFIG from the current definitions.
3855
3856        * src/cmt_parser.cxx(set_standard_macros): Rationalize the
3857        production of current_tag
3858
3859        * src/cmt_parser.cxx(use_user_context_requirements):
3860
3861        * src/cmt_use.cxx (show_all): Display new user_context package
3862
3863        * src/cmt_use.cxx (class use_action_iterator): query function ok()
3864        includes both home_package and user_context_package
3865
3866        * src/cmt_use.cxx (reach_package): special treatment for
3867        home_package and user_context_package since they do not follow the
3868        standard location scheme.
3869
3870        * src/cmt_use.cxx (add): Improve the detection of packages not found.
3871
3872        * src/cmt_tag.cxx (unmark): Reset the use pointer
3873
3874        * src/cmt_tag.cxx (action): Install the use origin.
3875
3876        * src/cmt_tag.cxx (add): Install the use origin and the context
3877        information. It will be reset to the new context in case of
3878        re-definition. Suppress various excessive debug printouts.
3879
3880        * src/cmt_tag.cxx (clear): clear use and context new information
3881
3882        * src/cmt_tag.cxx (show): Improve the display of tags with
3883        hierarchical display of subtags and context information.
3884
3885        * src/cmt_tag.h (class Tag): Added Use* use parameter to action
3886        and add methods. Store a pointer to the package (Use*) who
3887        originated the definition, and a context string to qualify the
3888        definition.
3889
3890        * src/cmt_system.h (class CmtSystem):
3891        * src/cmt_system.cxx (add_cmt_paths_from_text): Factor out the
3892        code to register a set of CMTPATH entries, with the context
3893        information.
3894       
3895        * src/cmt_system.cxx (is_home_package): Add is_home_package and
3896        is_user_context_package query functions.
3897
3898        * src/cmt_system.cxx (get_cmt_site): Default site is empty
3899        (instead of LAL)
3900
3901        * src/cmt_symbol.cxx (print_clean): Suppress some obsolete
3902        print_tabs () formattings. Apply unset instead of unset for
3903        aliases as well.
3904       
3905        * src/cmt_symbol.cxx (action): Add special treatment for CMTXXX
3906        environment variables : the new setting has to be taken into
3907        account as soon as it is parsed.
3908
3909        * src/cmt_selector.cxx (create): remove some debug code.
3910
3911        * src/cmt_generator.cxx (build_default_makefile): Produce only
3912        Makefile on Unix and only NMake on Windows.
3913
3914        * mgr/requirements: Renaming new script_launcher fragments into
3915        application_launcher
3916
3917        * src/cmt.h (class Cmt): Added Use* use arguments to configure_xxx
3918        functions to transfer.
3919       
3920        Added use_user_context_requirements () to include post-context
3921        requirements file.
3922
3923        Added the static value primary_tag to store the primary tag.
3924       
3925
3926        * src/cmt_generator.cxx (build_default_makefile): Create Makefile
3927        only un Unix and NMake only on WIN32
3928
39292001-10-24  Christian Arnault  <carnault@lxplus038.cern.ch> 55
3930
3931        * src/cmt_parser.cxx (parser): add the recursive property to
3932        action_show_path.
3933
3934        * src/cmt_system.h (class CmtSystem):
3935        * src/cmt_system.cxx (get_user_context_package):
3936        * src/cmt_system.cxx (is_user_context_package):
3937        * src/cmt_use.cxx (add):
3938        (show_all):
3939        (class use_action_iterator):
3940        (reach_package):
3941        (add):
3942        * src/cmt_parser.cxx (configure):
3943        * src/cmt_parser.cxx (parser):
3944        * src/cmt_parser.cxx (parse_arguments):
3945        * src/cmt_parser.cxx (configure_user_context):
3946        * src/cmt.h (class Cmt):
3947
3948        Adding user_context equivalent of CMTHOME support for post
3949        requirements file. The corresponding env. var. is CMTUSERCONTEXT.
3950        The complete scheme for supporting PRE-parsed HOME requirements
3951        file is exactly copied to those POST-parsed files.
3952
3953        * mgr/requirements:
3954        * fragments/script_launcher_header:
3955        * fragments/script_launcher:         
3956        * fragments/script_launcher_trailer: Introduce a new document
3957        generator for launching scripts. The same convention as the
3958        check_application is reused, for pre-action, argument passing and
3959        post-action. Several scripts (specified in the source list of the
3960        document) can be executed in sequence.
3961
3962        * src/cmt_use.cxx (class use_action_iterator):
3963        * src/cmt_system.cxx (is_home_package):
3964        * src/cmt_system.h (class CmtSystem): Add the is_home_package
3965        function to encapsulate the syntax of a HOME package (and apply it
3966        in Use::use_action_iterator)
3967
3968        * src/cmt_symbol.cxx (action): Prepare specific actions when the
3969        parsed symbol is one of the CMTXXX standard symbols. So far
3970           CMTHOME -> re-configure home.
3971
3972        * src/cmt_parser.cxx (parser): apply use_home_requirements right
3973        after reading CMT requirements file (ie. before reading current
3974        package)
3975
3976        * src/cmt_parser.cxx (configure_home): understand the possible
3977        "set CMTHOME" declarations (but keep $CMTHOME)
3978
3979        * src/cmt_parser.cxx (reach_current_package): * src/cmt_system.cxx
3980        (get_cmt_paths): Restore the automatic addition of "current
3981        package" in the CMTPATH list.
3982
3983        * src/cmt_parser.cxx (parse_arguments): bad parsing of the
3984        -home=xxx argument
3985
3986       
3987
39882001-10-23  Christian Arnault  <carnault@lxplus007.cern.ch> 54
3989
3990        * mgr/Makefile (demo): Need to add CMTPATH towards ${CMTROOT}/demo
3991        since CMTPATH to current package is no longer supported !!!
3992
3993        * fragments/nmake/check_application (check):
3994        * fragments/nmake/cleanup_application:
3995        * fragments/nmake/application_header:
3996        * fragments/nmake/application:
3997        * fragments/application:
3998        * fragments/application_header:
3999        * fragments/cleanup_application:
4000        * fragments/check_application (check):
4001        * mgr/requirements: Create a new standard macro
4002        "application_suffix" for making possible to change the .exe
4003        default suffix of applications
4004
40052001-10-22  Christian Arnault  <carnault@lxplus026.cern.ch> 53
4006
4007        * src/cmt_parser.cxx :
4008        * src/cmt_system.cxx : Suppress the automatic addition of current
4009        package's path into CMTPATH.
4010
4011        * mgr/Makefile: Change the method to rebuild
4012        cmt_dependencies by copying what is obtained from CVS. Rebuild it
4013        manually when needed.
4014
40152001-10-19  Christian Arnault  <carnault@lxplus025.cern.ch> 52
4016
4017        * fragments/make_setup (config): Creating uses.log needs to use an
4018        intermediate temporary file
4019
4020        * src\setup.[c]sh : Avoid re-definition of CMTCONFIG
4021
4022        * src\cmt_use.cxx (add): temporarily discard the mecanism by which
4023        uses.log files are read before the requirements files.
4024
4025        * src\cmt_system.cxx (is_version_directory): returns -1 for fields
4026        that were wildcarded
4027
4028        * src\cmt_use.cxx (add):
4029        * src\cmt_use.cxx (need_new):         
4030        * src\cmt_use.cxx (BestFitSelector::operate): Start the
4031        implementation of priority control between explicit use
4032        specification over wildcarded ..
4033
4034        * src\cmt_parser.cxx (reach_current_package): Change the value of
4035        the CMTPATH for the current package once it has been reached (but
4036        before reading its requirements file)
4037       
4038        * src\cmt_parser.cxx (install_setup_scripts): (improvement) Add the transfer of
4039        arguments towards cmt.exe into setup.bat
4040
4041        * src\cmt_system.cxx (get_cmt_paths): (bug fix) path_sources was
4042        not cleared as paths.
4043        Prepend "current path" to the path list under "current package".
4044
4045        * src\cmt_parser.cxx (parse_arguments): (bug fix) Suppress
4046        enclosing quotes around cmt.exe arguments so that setup.bat can
4047        transmit arguments properly
4048
4049        call setup.bat "-tag_add=a,b,c"
4050
40512001-10-18  Christian Arnault  <carnault@lxplus047.cern.ch> 51
4052
4053        * src/cmt_parser.cxx (set_standard_macros): Set current_tag to
4054        CMTBIN when in CMT itself (not complete yet)
4055       
4056        * src/cmt_generator.cxx (build_dependencies): Use CMTBIN for CMT
4057        itself (instead of current_tag) well this should be cured later on
4058        to ensure that current_tag is always set to CMTBIN for CMT itself
4059
4060        * src/cmt_version.h (CMTVERSION): install v1r10 (not tagged yet)
4061
4062        * mgr/cmt_system.sh: Do not try to use AFS on Darwin and LynxOS.
4063
4064        * src/setup.[c]sh: Define CMTBIN as `uname` on Unix and CMTCONFIG
4065        as `cmt_system.sh`
4066
4067        * src/cmt_symbol.cxx (show_macro): the trailing space must be
4068        added only for WIN32 !!
4069
40702001-10-17  Christian Arnault  <carnault@lxplus047.cern.ch> 50
4071
4072        * src/cmt_symbol.cxx (show_macro): add a trailing space on all
4073        macro definitions (to avoid problem of trailing backslash)
4074       
4075        * src/cmt_parser.cxx (set_standard_macro): remove the insertion of
4076        trailing spaces after the last backslash for WIN32/NMake
4077
4078        * src/constituents.make (all): (bug fix) re-install the
4079        build_library_links action for the all target
4080
40812001-10-11  Christian Arnault  <carnault@lxplus021.cern.ch> 49
4082
4083        * src/cmt_version.h: Tagging for v1r9p20011011
4084       
4085        * fragments/library: (bug fix) transmit both -tag=<tag> and
4086        -tag_add=<tag_list> to cmt_make_shlib_common.sh
4087
40882001-10-11  Christian Arnault  <arnault@asc.lal.in2p3.fr> 48
4089
4090        * src/cmt_parser.cxx: remove debug print options
4091
40922001-10-10  Christian Arnault  <arnault@asc.lal.in2p3.fr> 47
4093
4094        * src/cmt_parser.cxx (parse_arguments): fix problems in multiple
4095        tag management.
4096
4097        converge in the question of HOME requirements file to support
4098          - no default
4099          - define the path to the HOME requirements file in ${CMTHOME}
4100
4101        converge in the arguments for manipulating the extra tags
4102          -tag=<tag>
4103          -tag_add=<tag-list>
4104          -tag_remove=<tag-list>
4105
41062001-10-03  Christian Arnault  <carnault@lxplus036.cern.ch> 46
4107
4108        * src/constituents.make (makefilesclean): Make all action lists
4109        run in one single shell (ie. use ;\ everywhere)
4110
4111        Make an explicit target for build_library_links
4112        Make it called before any group
4113
41142001-10-02  Christian Arnault  <carnault@lxplus007.cern.ch> 45
4115
4116        * src/cmt_awk.h (class Awk): add a state variable
4117        (m_continuation_allowed) which when true, take into account the
4118        trailing backslashes, so as to first accumulate continued lines
4119        into one. Add the allow_continuation method to base Awk class.
4120
41212001-10-01  Christian Arnault  <carnault@lxplus034.cern.ch> 44
4122
4123        * src/cmt_cvs.cxx (class CvsImplementation): Bug in
4124        checkout_from_requirements. Did not accept leading spaces on use
4125        statements.
4126
41272001-09-27  Christian Arnault  <carnault@lxplus036.cern.ch> 43
4128
4129        * src/cmt_version.h: Tagging for v1r9p20010927
4130
4131        * src/setup.zsh: add the -begin option to the auto-expansion.
4132
4133        * src/cmt_use.cxx (show_all): Visualize the HOME package when
4134        applicable.
4135
4136        * src/cmt_system.cxx (get_home_package): (also do some formatting
4137        cleanup)
4138       
4139        * src/cmt_system.h (class CmtSystem): Adding get_home_package
4140        function to build the name given to the HOME package (provides the
4141        HOME requirements file)
4142
41432001-09-26  Christian Arnault  <arnault@asc.lal.in2p3.fr> 42
4144
4145        * src/cmt_parser.cxx (do_show_macro): Improving error detection on
4146        cmt show macro/set
4147
4148        * doc/CMTDoc.html: Improve the doc.
4149
4150        * src/cmt_parser.cxx (print): produce the CMTEXTRATAGS environment
4151        variable, at setup time.
4152                             (parse_arguments): take into account this new
4153        env.var. to retreive previous extra tags.
4154
4155        * src/Makefile.header: Add the CMTEXTRATAGS environment variable
4156        to propagate additional tags to Make.
4157       
4158        * fragments/make_setup:
4159        * fragments/constituent:
4160        * src/Makefile.header:
4161        * src/constituents.make: Adding  -tag=$(tags) to all calls to cmtexe
4162
4163        * src/cmt_system.h (class CmtSystem): Adding the bool testenv
4164        (name) function to test if an environment variable is defined or
4165        not.
4166
4167        * src/cmt_parser.cxx (use_home_requirements):
4168        * src/cmt.h (class Cmt): Adding support of CMTHOME environment
4169        variable for specifying home requirements file. Default value will
4170        be ${HOME}. And can be overridden through the -home=<directory>
4171        global option. An explicit empty value (or set to eg. NONE) will
4172        discard the feature
4173
4174        * src/cmt_parser.cxx (parse_arguments): Implement the tag list
4175        (comma separated list of extra tags) option -tag=<tag-list> to
4176        specify a list of tags to validate.
4177
41782001-09-25  Christian Arnault  <carnault@lxplus034.cern.ch> 41
4179
4180        * src/setup.csh: fixed PATH settings (may accept a path with space
4181        characters eg. for Darwin)
4182       
4183        * mgr/cmt_system.sh: Insert the knowledge of Darwin OS (Mac OS
4184        X). The default CMTCONFIG will be Darwin.
4185
4186        * src/constituents.make (makefilesclean): Ensure that removal of
4187        makefile fragments is performed AFTER all cleanup uperations.
4188
4189        * src/cmt_parser.cxx (use_home_requirements): Add the systematic
4190        search for a requirements file located in ${HOME}. This
4191        requirements file when found, is systematically parsed AFTER the
4192        requirements file of the current package has been parsed (so as to
4193        give the highest precedence to its statements)
4194       
4195        (do_remove_library_links): Upgrade "remove library_links" to make
4196        it compliant to the algorithm used in "build library_links"
4197
41982001-09-24  Christian Arnault  <carnault@lxplus014.cern.ch> 40
4199
4200        * src/cmt.h (class Cmt): * src/cmt_parser.cxx (configure): Add a
4201        global configure_error variable to store the possible error
4202        produced during the configuration.
4203        (install_test_setup_scripts): Add the -quiet option to the build
4204        temporary_name command used in setup script generation.
4205
4206        * src/cmt_error.cxx (get_last_error):
4207        * src/cmt_error.h (class CmtError): Add get_last_error to retrieve
4208        the formatted text of the last error.
4209
4210        * src/cmt_symbol.cxx (create):
4211                             (all_print):
4212                             (print):
4213                             (build):
4214        * src/cmt_parser.cxx (select): Understand the "path" statement as
4215        a complete re-definition of a path-like variable.
4216
4217        * src/cmt_system.cxx (add_cmt_path):
4218        * src/cmt_error.cxx (class Error):
4219        * src/cmt_error.h (class CmtError): Adding "path not found" error
4220        code, for CMTPATH checking.
4221
4222        * src/cmt_pattern.cxx ((const cmt_string& name): Return a warning
4223        for pattern not found.
4224
4225        * src/cmt_error.h (class CmtError):
4226        * src/cmt_error.cxx (class Error): Adding "pattern not found" error
4227        code, for showing diagnostics in "cmt show pattern"
4228
4229        * src/cmt_parser.cxx (do_show_macro): Return a warning for symbol
4230        not found.
4231
4232        * src/cmt_error.h (class CmtError):
4233        * src/cmt_error.cxx (class Error): Adding "symbol not found" error
4234        code, for showing diagnostics in "cmt show macro/set"
4235
42362001-09-19  Christian Arnault  <carnault@lxplus045.cern.ch> 39
4237
4238        * mgr/cmt_make_shlib_common.sh : return a status value which
4239        reflects the success or failure of the shared library build
4240        command.
4241
4242        * src/cmt_cvs.cxx (class CvsImplementation): Discard the versions
4243        specified with wild cards in the recursive checkout.
4244
4245        * src/cmt_triggers.cxx: Protect the error messages in the trigger
4246        facility by Cmt::quiet.
4247
4248        * src/cmt_constituent.cxx (class constituents_action_iterator):
4249        temporarily discard the -triggers option.
4250
42512001-08-24  Christian Arnault  <carnault@lxplus011.cern.ch> 38
4252
4253        Tagging v1r9p2001p0824
4254
42552001-08-24  Christian Arnault  <carnault@lxplus011.cern.ch> 38
4256
4257        * mgr/cmt_system.sh: Improve the reliability of the cmt_system.sh
4258        script against variants of "fs sysname"
4259
42602001-08-23  Christian Arnault  <carnault@lxplus030.cern.ch> 37
4261
4262        * src/cmt_cvs.cxx (class CvsImplementation): Since the tag filter
4263        is back to cmtcvs.cxx, the temporary forced tag filter in CMT is
4264        removed.
4265
4266        * src/setup.zsh: upgrade the completion for the broadcast command.
4267
4268        * src/cmt_parser.cxx (do_broadcast): Make the -select independent
4269        of the -local or -global options. This is achieved by adding a
4270        "path_selections" list only managed by the -depth, -local -global
4271        modifiers while the "selections" list is managed by the -select
4272        modifier. The -exclude is left unchanged.
4273
42742001-08-22  Christian Arnault  <carnault@lxplus024.cern.ch> 36
4275
4276        * src/cmt_cvs.cxx (class CvsImplementation): Add the possibility
4277        to transmit a flag to the CVS pluggin, by inserting a /cmtcvstest
4278        in the module name to import. This will have to be decoded by the
4279        CVS pluggin itself !!
4280
42812001-08-21  Christian Arnault  <carnault@lxplus013.cern.ch> 35
4282
4283        * src/setup.tcsh: Improving the tcsh completion mechanism (for cmt co).
4284
4285        * src/setup.zsh: Improving the zsh completion mechanism (for cmt co).
4286
4287        * src/cmt_cvs.cxx (class CvsImplementation): Converging on HEAD
4288        management strategy...
4289
4290        Starting implementation of the Atlas filter for CVS tags right
4291        into cmt_cvs.cxx rather than inside the CVS pluggin...
4292
42932001-08-20  Christian Arnault  <carnault@lxplus028.cern.ch> 34
4294
4295        * src/cmt_cvs.cxx (class CvsImplementation): Improving the
4296        recursive checkout process
4297
42982001-08-20    <arnault@lal.in2p3.fr> 33
4299
4300        * src\cmt_cvs.cxx (class CvsImplementation): Reorganizing some CVS operations:<ul>
4301          <li> Apply the CMTCVSOFFSET env. variable to all actions (tags, branches, subpackages)
4302          <li> cleanup checkout algorithms (remove some obsolete variables)
4303          <li> add the -requirements <requirements-file-path> option to checkout according to
4304            a set of use statements.
4305          <li> remove the inheritance to Awk of CvsImplementation to split the filter into 2
4306            phases (implemented as 2 separated Awk derived classes) RecursivePass1 and
4307            RecursivePass2.</ul>
4308
43092001-08-16  Christian Arnault  <carnault@lxplus046.cern.ch> 32
4310
4311        * src/cmt_symbol.cxx (print): Bug in path_remove when the
4312        specified path variable only contained one item : the remove
4313        operation was not applied.
4314
43152001-07-20  Christian Arnault  <arnault@lal.in2p3.fr> 31
4316
4317        * src/cmt_version.h: setting the patch v1r9p20010720
4318
43192001-07-20  Christian Arnault  <carnault@lxplus019.cern.ch> 30
4320
4321        * src/cmt_regexp.h (cmt_regexp::begin): Add an optional pos
4322        argument to the begin method.
4323
4324        * doc/CMTDoc.html: Improvements, English cleanup...
4325
43262001-07-18  Christian Arnault  <carnault@lxplus041.cern.ch> 29
4327
4328        * src/cmt_cvs.cxx (CvsImplementation::checkout_package): Change
4329        the mechanism to get top files, since the " -d . " does not work
4330        anymore when CVSROOT is set to kserver!!!!
4331
43322001-07-16  Christian Arnault  <carnault@lxplus030.cern.ch> 28
4333
4334        * doc/CMTDoc.html: Old PREFIX fragment variable has been replaced
4335        by FILEPATH long ago. This was not upgraded in the doc.
4336
4337        * fragments/constituent: The -f <file> MUST be specified BEFORE
4338        other Make flags!!
4339
4340        * fragments/dependencies: Tried to comment out the dependencies to
4341        cmt_path.make etc... but it confused the dependencies fragment
4342        production. Uncomment it but need to understand the side effect.
4343
43442001-07-09  Christian Arnault  <carnault@lxplus012.cern.ch> 27
4345
4346        * src/cmt_generator.cxx (build_readme): Bug: the VERSION variable
4347        was not used for installing the readme_trailer (although the
4348        documentation was mentioning it)
4349
43502001-07-04  Christian Arnault  <carnault@lxplus034.cern.ch> 26
4351
4352        * src/cmt_version.h: setting the patch v1r9p20010704
4353
43542001-07-02  Christian Arnault  <carnault@lxplus034.cern.ch> 25
4355
4356        * fragments/dependencies: Cleaning some old debug printouts.
4357
4358        * src/cmt_cvs.cxx (class CvsImplementation): Bug in replacing the
4359        wild card expression. v5r* has to be replaced by v5r0 while v5*
4360        has to be replaced by v5 in case no matching tag exists in the CVS
4361        repository.  Other bug : All split operations should be performed
4362        against " \t" (include tab character)
4363
43642001-06-29  Christian Arnault  <carnault@lxplus047.cern.ch> 24
4365
4366        * src/cmt_cvs.cxx (class CvsImplementation): Final Validation of
4367        the change in the implementation of the m_installed stack used to
4368        avoid recursion due to dependency cycles.
4369
43702001-06-22  Christian Arnault  <carnault@lxplus020.cern.ch> 23
4371
4372        * src/cmt_cvs.cxx (class CvsImplementation): doing some
4373        optimizations for the big checkout operations.
4374
4375        * src/cmt_parser.cxx (do_config): Remove .[n]make files also from
4376        the binary directory.
4377
4378        * src/cmt_cvs.cxx (class CvsImplementation): Always fetch the cmt
4379        branch at HEAD even if the checkout operation is applied to a
4380        required tag (temporary feature).
4381
43822001-06-18    <arnault@lal.in2p3.fr> 22
4383
4384        * src\cmt_cvs.cxx (class CvsImplementation): insert a space
4385        between top tags and other tags.
4386
4387        * mgr\cmt_make_shlib.bat: Write extra options received through
4388        arguments into a temporary option file, used by @<optionfile> to
4389        resolve line-too-long prolems.
4390
4391        * fragments\nmake\cpp_library:
4392        * fragments\nmake\cpp:
4393        Add the /Tp qualifier for allowing non-standard file suffixes.
4394
43952001-06-05  Christian Arnault  <arnault@lal.in2p3.fr> 22
4396
4397        * src/cmt_use.cxx (class use_action_iterator): Default to the
4398        -no_auto_import was to keep the most recent specification. Change
4399        this to always request auto_import by default, (unless otherwise
4400        specified)
4401
44022001-06-01  Christian Arnault  <arnault@lal.in2p3.fr> 22
4403
4404        * src/cmt_parser.cxx (do_broadcast): Bug fix in do_broadcast: the
4405        -begin option wrongly implied the -global option.
4406
44072001-06-13    <arnault@lal.in2p3.fr> 22
4408
4409        * src/cmt_cvs.cxx (class CvsImplementation): Improving the
4410        strategy for getting version tags from the repository:
4411          o If a request specifies a tag which is not applied to the
4412            requirements file, the specified tag is used to create the
4413            version directory but the HEAD is used in the repository.
4414          o CvsImplementation::show_cvs_infos () :
4415            stores all received infos into xxx_info corresponding
4416            local properties. Thus this method is only called once per
4417            package.
4418          o Error messages are really obtained from the error_info field.
4419
44202001-05-30  Christian Arnault  <arnault@lal.in2p3.fr> 22
4421
4422        * src/cmt_generator.cxx (build_document_makefile):
4423        * src/cmt_system.cxx (get_dot_suffix): fix bug for file_names
4424        without any suffix
4425
4426        * src/cmt.h & src/cmt_parser.cxx (set_standard_macros): Add a
4427        state standard_macros_done to protect against multiple calls to
4428        set_standard_macros.
4429
44302001-05-28  Christian Arnault  <arnault@lal.in2p3.fr> 22
4431
4432        * src/cmt_cvs.cxx (class CvsImplementation): display the tags in a
4433        one-per-line basis instead of space separated when doing cmt
4434        cvstags.
4435
4436        * src/cmt_use.cxx (operate): Make the version selector operator a
4437        little bit more quiet...
4438
44392001-05-25  Christian Arnault  <arnault@lal.in2p3.fr> 22
4440
4441        * mgr/Makefile (demo): improve the gmake check action in the demo
4442        target.
4443
4444        * src/cmt_use.cxx (fill_macro_all): build use_xxx standard macros
4445        using macro_append instead of macro.
4446
44472001-05-22  Christian Arnault  <arnault@lal.in2p3.fr> 22
4448
4449        * src/cmt_parser.cxx (do_broadcast): Fix the default (-local)
4450        option to act as -depth=1.
4451        Improve some error messages.
4452
44532001-05-21    <arnault@lal.in2p3.fr> 21
4454
4455        * src\setup.bat: Improved skeleton for setup.bat. Base it on
4456        CMTBIN rather than on CMTCONFIG. Do not override CMTCONFIG if
4457        defined by the user. Do not care about PATH for Visual tools.
4458
4459        * mgr\install.mak: change the strategy for building the setup.bat
4460        script for CMT itself at INSTALL time. Now copy ..\src\setup.bat
4461        skeleton.
4462
4463        * mgr\requirements: Fix WIN32/VisualC tag definitions and PATH
4464        settings for cleaner handling of default tag overriding.
4465
4466        * src\cmt_use.cxx (operate): Implement the algorithm for using
4467        aliases to alternate version specification in uses.
4468
4469-------------------------------------------------------------------------------------
44702001-05-18  Christian Arnault  <arnault@lal.in2p3.fr> 21
4471
4472        -> Tag CMTv1r9p20010521
4473
4474        * src/cmt_use.cxx (show_sub_uses): Start the implementation of
4475        version_alias and path_alias for equivalencing two version naming
4476        policies.
4477
4478        * src/cmt_cvs.cxx (class CvsImplementation): Adding the -o offset
4479        option to cmt checkout for specifying a global offset to the base
4480        CVS repository. This offset will be prepended to all modules
4481        during the various CVS operations.
4482
4483        the m_offset attribute is added to the CvsImplementation class.
4484
4485        (class CvsImplementation): Improve protection against CVS modules
4486        not found.
4487       
4488        (class CvsImplementation): Added the --help option the cmt checkout.
4489
44902001-07-10  Christian Arnault  <carnault@lxplus017.cern.ch> b-21
4491
4492        * mgr/requirements: add the -tag=$(tag) option to the
4493        build_dependencies macro.
4494
4495        * fragments/dependencies: take the improvements into account.
4496
4497        * src/cmt_generator.cxx (build_dependencies): Improve the
4498        dependency builder: re-generate all entries of the
4499        <constituent>_dependencies.make that are missing from the complete
4500        source list (thus regenerate it when it is empty).
4501        Optimize the file scan for getting the new source list.
4502
4503        * src/cmt_parser.cxx (do_build_dependencies): Dynamically shifts
4504        arguments of the build dependencies command to keep only the
4505        new-source-list. The complete command being
4506        "cmt <args> build dependencies <constituent-name> <new-source-list>"
4507       
4508        (do_config): drop all makefile fragments from the mgr/cmt
4509        directory AND from the binary directory.
4510
45112001-05-11  Christian Arnault  <arnault@lal.in2p3.fr> 20
4512
4513        * Moving to v1r8
4514       
4515       
45162001-05-11  Christian Arnault  <arnault@lal.in2p3.fr> 19
4517
4518        * src/cmt_deps_builder.cxx (): Augmented local internal
4519        line buffer (from 1024 to 16384).
4520
4521        * doc/CMTDoc.html: document the new &lt;package>_root macro
4522
4523        * src/cmt_parser.cxx (set_standard_macros) (get_best_form): Define
4524        a new set of standard macros using the pattern <package>_root
4525        similar to <PACKAGE>ROOT except that this new definition uses the
4526        get_best_form, with a relative path to the package. The
4527        <PACKAGE>ROOT macro is restored to the previous convention, that
4528        it uses the absolute path.
4529       
4530        * src/cmt_use.cxx (fill_includes_macro): Adapt the
4531        fill_includes_macro to use the new <package>_root standard macro
4532
4533
45342001-05-10  Christian Arnault  <arnault@lal.in2p3.fr> 18
4535
4536        * src/cmt_parser.cxx (do_broadcast): Add the -begin=<pattern>
4537        option to start the broadcast loop from a given package. This
4538        option can be combined with other options such as -select or
4539        -exclude.
4540
4541        * src/cmt_generator.cxx (filter_paths): Suppress two unused
4542        variables.
4543
4544        * src/cmt_use.cxx (add): Bug fixing: during the discovery of
4545        versions requested for a given package, the discarded versions
4546        were not correctly replaced by the finally selected version,
4547        especially in the Use::get_paths method. The
4548        Use::get_selected_version has been added to obtain the effective
4549        replacement for a discarded version.
4550
4551        * fragments/check_application: suppress the ". setup.sh" before
4552        application run.
4553
45542001-05-04  Christian Arnault  <carnault@lxplus023.cern.ch> 17
4555
4556        * src/cmt_parser.cxx (set_standard_macros): The production of all
4557        use_xxx standard macros now is based on a "macro_append" keyword
4558        instead of "macro", since "macro" resets all previous
4559        definitions. Therefore if the user's requirements did augment
4560        those use_xxx macros, these specifications would be ignored.
4561       
4562        (do_broadcast): Set the -local option to broadcast the
4563        default. Add the -global option to revert to the old default (with
4564        no selection and to any depth)
4565
45662001-05-03  Christian Arnault  <carnault@lxplus019.cern.ch> 17
4567
4568        * src/cmt_symbol.cxx (add_value_to_list): A new macro or set
4569        keyword resets (discards) all previous definitions for the
4570        corresponding symbol.
4571
4572        * src/cmt_symbol.h (class SymbolValueList): Added an attribute
4573        discarded for symbol resetting.
4574
4575        * src/cmt_parser.cxx (print_macros): Exclude scripts from macros
4576        defined in the $(tag).make file.
4577
45782001-04-27  Christian Arnault  <carnault@lxplus022.cern.ch> 16
4579
4580        * src/cmt_parser.cxx (get_best_form): Validate the compression
4581        algorithm for paths to packages (only for the macro <PACKAGE>ROOT
4582        - this is still not true for the <PACKAGE>ROOT environment
4583        variable) into a relative form when it is shorter than the
4584        absolute form.
4585
4586        * src/cmt_system.cxx (compress_path): Fix the algorithm for
4587        compressing the patterns "aaaa/xxxx/../bbbb" into aaaa/bbbb.
4588
4589        * src/cmt_generator.cxx (filter_paths): use
4590        CmtSystem::compress_path instead of duplicating its algorithm for
4591        erasing "/aaa/.." patterns
4592
45932001-04-25  Christian Arnault  <carnault@lxplus022.cern.ch> 15
4594
4595        * src/cmt_parser.cxx (set_standard_macros): Prepare the production
4596        of <PACKAGE>ROOT macros as relative paths rather than absolute
4597        ones, when the relative expression is shorter than the absolute
4598        one. Temporarily, trigger that feature by setting the
4599        CMTTESTPREFIX environment variable until absence of side effects
4600        is confirmed.
4601
46022001-04-18  Christian Arnault  <carnault@atlas009.cern.ch> 15
4603
4604        * src/cmt_generator.cxx (build_readme): bug when generating the
4605        readme_trailer fragment : the PACKAGE variable should be reset to
4606        current.
4607
46082001-04-11  Christian Arnault  <arnault@lal.in2p3.fr> 15
4609
4610        * src/cmt_generator.h (class Generator):
4611        * src/cmt_parser.cxx (do_build_readme):
4612        * src/cmt.h (class Cmt): do_build_readme now propagates argument list
4613
4614        * fragments/readme_trailer:
4615        * src/cmt_generator.cxx (build_readme): Added DATE and USER information when building the README.html file. readme_trailer fragment updated accordingly.
4616       
4617        (build_readme): Add the -url=<url> argument to the cmt build
4618        readme command. The specified URL will be used in place of the
4619        package path when generating the URL for used packages.
4620
46212001-04-18  Christian Arnault  <arnault@lal.in2p3.fr> 14
4622
4623        * src/cmt_symbol.cxx (build): In all builder objects, symbol value
4624        lists registered by discarded Uses are now ignored.
4625
4626        * src/cmt_symbol.h (class SymbolValue): cleanup a comment.
4627
4628        * src/cmt_symbol.cxx (print): protect setup script execution
4629        against missing files.
4630
46312001-04-10  Christian Arnault  <arnault@lal.in2p3.fr> 13
4632
4633        * src/cmt_generator.cxx (build_readme):
4634        * fragments/readme_use: building readme.html requires to know the
4635        mgr/cmt style of each used package. This fragment now requires a
4636        fourth variable MGRSTYLE which reflects the use->mgr_style
4637        attribute. Generator::build_readme fills in this new variable.
4638
46392001-04-06  Christian Arnault  <arnault@lal.in2p3.fr> 12
4640
4641        * src/cmt_parser.cxx
4642        (reach_current_package): Use CmtSystem::getenv instead of base getenv
4643       
4644        * src/cmt_symbol.cxx (action): Now really private stuff is
4645        selected when access is at UserMode and scope is Private.
4646
4647        * src/cmt_use.cxx (add): This method does not need to maintain
4648        current scope and access mode any longer.
4649
4650        * src/cmt_parser.cxx (parse_requirements): Cmt::parse_requirements
4651        now manages the AccessMode and Scope when recursing into
4652        requirements files of used packages.
4653
4654        Cmt::scope          handles the sticky state provided by private/public statements
4655        Cmt::current_access handles the access mode that reflects the situation of the user
4656
4657        * src/cmt_parser.h (enum): introduce the AccessMode to distinguish
4658        between DeveloperMode (when pwd is in the current package
4659        directory) and UserMode (otherwise).
4660
4661        * src/cmt.h (class Cmt): Cmt::current_mode is now current_access
4662        and is of type AccessMode
4663
4664        * src/cmt_parser.cxx (reach_current_package): Use
4665        CmtSystem::getenv instead of base getenv
4666
4667        * src/cmt_use.cxx (Use::get_paths):
4668        * src/cmt_pattern.cxx (Pattern::apply ()) : bug in computing the
4669        path between two Uses. The result now includes the current Use.
4670
46712001-04-05    <arnault@lal.in2p3.fr> 12
4672
4673        * src\cmt_tag.cxx (Tag::add(const cmt_string& name, int priority):
4674        clear a newly created Tag object (to deal with the reuse of old
4675        objects)
4676
4677        * src\cmt_pattern.cxx (Pattern::add) : clear a newly created
4678        pattern object (to deal with the reuse of old objects)
4679
4680        * src\cmt_use.h (class Use): Add Use::author_action and
4681        Use::manager_action to fill in the author and manager information.
4682
4683        * src\cmt_parser.cxx (select): fill in author and manager values
4684        with the complete line. When several author and manager statements
4685        are provided, fill in as several lines (separated with a new-line).
4686
4687        * src\cmt_generator.cxx (analyze_file (const Constituent&
4688        constituent, const cmt_string& file) : production of objects for
4689        libraries and applications is strictly identical.
4690
46912001-04-03  Christian Arnault  <arnault@lal.in2p3.fr> 11
4692
4693        * src/cmt_constituent.cxx (clear): constituent.parameters was not
4694        cleared in Constituent::clear
4695
4696        * src/cmt_symbol.cxx (build): add cleanup ValueList objects after
4697        their addition for ensuring a really new value (due to cmt_string
4698        optimizing)
4699
47002001-04-03  Christian Arnault  <carnault@atlas006.cern.ch> 10
4701
4702        * mgr/Makefile: Operate the demo targets on different make action
4703        lines
4704
4705        * src/Makefile.header: Added -tag=$(tag) to cmt actions
4706
4707        * fragments/generator_header: create the output directory if
4708        needed
4709
47102001-04-02    <arnault@lal.in2p3.fr> 9
4711
4712        * fragments\nmake\constituent: added the -tag=$(tag) option to cmt
4713        build actions
4714
4715        * src\cmt_parser.cxx (parser): show_constituentxxx recursively
4716        reads used requirements files
4717
4718        * src\cmt_pattern.cxx (Pattern::apply () const): protection added
4719        for the case where the pattern is applied to the package that
4720        defines it.
4721
47222001-03-29  Christian Arnault  <carnault@atlas005.cern.ch> 8
4723
4724        * src/cmt_use.cxx (get_paths):
4725        * src/cmt_use.h (class Use):
4726        * src/cmt_pattern.h (class IgnorePattern):
4727        * src/cmt_pattern.cxx (const apply): Bug in apply global patterns
4728        : a pattern defined in one package should only be applied to the
4729        Uses that are on one of the paths between the current Use and the
4730        one wher the pattern is defined (and not to the Uses that never
4731        pretend to inherit that pattern!!!)
4732
4733        This required to implement the Use::get_paths which fills in the
4734        inclusive list of all Uses that are between two Uses.
4735
47362001-03-27  Christian Arnault  <carnault@lxplus017.cern.ch> 7
4737
4738        * fragments/dependencies: protection against missing dependency
4739        make fragment during clean operations.
4740
4741        * src/cmt_constituent.cxx (class constituents_action_iterator):
4742        the -suffix= option was hidden by the user variable specification
4743        while parsing the constituent parameters.
4744
47452001-03-23  Christian Arnault  <carnault@atlas007.cern.ch> 6
4746
4747        * mgr/requirements: clean up WIN32 tag variants definitions
4748
4749        * src/Makefile.header (setup.make): Display of the target in case
4750        of target not found (.DEFAULT)
4751
4752        * fragments/make_setup (csh): few checks
4753
4754        * fragments/installer: add the creation of $(install_dir) if
4755        needed
4756
47572001-03-21  Christian Arnault  <arnault@lal.in2p3.fr> 5
4758
4759        * src/cmt_parser.cxx (parse_arguments): When the tag specified in
4760        the command line arguments (using -tag=<tag>) is the same as
4761        CMTCONFIG, then still validate the tag given by uname
4762
4763        * fragments/dependencies: generate
4764        ${CONSTITUENT}_dependencies.make into $(bin)
4765
4766        * fragments/constituent: generate ${CONSTITUENT}.make into $(bin)
4767
4768        * src/cmt_constituent.cxx (parse):
4769        * src/cmt_constituent.h (class Constituent): Added the two-step
4770        parsing of the constituents specifications : first stage during
4771        parsing of the requirements file, parameters are simply stored in
4772        the constituent object and not interpreted. Second stage : after
4773        building the standard macros (once requirements files have
4774        entirely been read) then constituent objects are parsed.
4775
4776        * src/cmt_parser.cxx: Add Constituent::parse_all in
4777        Cmt::set_standard_macros to finalize the constituent
4778        parsing. Install set_standard_macros in several additional actions
4779
4780
4781
47822001-03-16  Christian Arnault  <arnault@lal.in2p3.fr> 4
4783
4784        * src/cmt_cvs.cxx (class CvsImplementation): Get the files at the
4785        top directory when doing a cmt checkout. 
4786
4787        Only checkout at head for the top package (ie do not recurse at
4788        head) and when -r is not specified.
4789
4790        * src/cmt_symbol.cxx (resolve_value_for_macros): Perform the
4791        substitution of ${} to %% (or reverse) even if the env. var. is
4792        not defined in CMT.
4793
4794        * src/cmt_parser.cxx (install_setup_scripts): Setup scripts on
4795        Windows generate the temporary expansion script in
4796        %HOMEDRIVE%%HOMEPATH%.
4797
47982001-03-16  Christian Arnault  <carnault@atlas009.cern.ch> 3
4799
4800        * mgr/requirements: clean up variants for VisualC and
4801        VisualC/debug
4802
48032001-03-15    <arnault@lal.in2p3.fr> 2
4804
4805        * src\cmt_use.cxx (class use_action_iterator): Strange name
4806        conflict: the use_action_iterator::set method is in conflict with
4807        something else when the class is named "action_iterator" (is it a
4808        conflict with the same private class defined in Symbol.cxx ??)
4809
4810        * src\NMakefile.header (cmtexe): Fix for re-building cmt when
4811        cmt.exe does not exist.
4812
48132001-03-13  Christian Arnault  <arnault@lal.in2p3.fr> 1
4814
4815        * src/cmt_use.cxx (class action_iterator): Introducing the
4816        action_iterator class for managing the local expansion of macros
4817        in the syntax parser (similart to what was done in Symbol::action)
4818
4819        * src/cmt_generator.cxx (Generator::build_make_setup) when
4820        generating setup.make, the default value for constituents is
4821        extracted from the constituents macro.
4822
48232001-03-06  Christian Arnault  <arnault@lal.in2p3.fr>
4824
4825        * src/cmt_cvs.cxx (class CvsImplementation): Show both top tags
4826        and non-top tags in cmt cvstags.
4827
4828        * doc/CMT.htm: Addition of several slide shows (from Atlas)
4829
4830        * mgr/cmt_buildcvsinfos2.sh (error): The awk script had to be
4831        protected against multiple ocurrences of the /symbols/,/locks/
4832        pattern.
4833
4834        Implement both in python and in shell script the differntiated
4835        production of top tags and non-top tags. Top tags are the set of
4836        tags sharing the most recent CVS tagged version id (ie. the HEAD
4837        may be more recent)
4838
48392001-03-05    <arnault@lal.in2p3.fr>
4840
4841        * src\cmt_parser.cxx (do_build_library_links): Handle libraries
4842        specified as a full path in <package>_libraries
4843
4844        * src\cmt_parser.cxx (print_context):
4845        * src\cmt_symbol.cxx (all_print): Use one line per
4846        env. var. assignment when generating setup scripts (instead of ;
4847        separated instructions) . The latter style should be no longer
4848        needed since we use temporary files.
4849
4850        * src\cmt_parser.cxx (set_standard_macros): Add CMTCONFIG to the
4851        standard sets, so as to let it known as a plain "symbol"
4852
48532001-03-02    <arnault@lal.in2p3.fr>
4854
4855        * src\cmt_system.h: introduce the CmtSystem::ev_open () and
4856        CmtSystem::ev_close () to get the OS-dependent pattern for
4857        environment variable definition.
4858
4859        * src\cmt_symbol.cxx (resolve_value_for_macros): Substitute
4860        patterns ${xxx} or %xxx% to the appropriate OS-dependent pattern
4861        when producing "set" values only (this is only done when the
4862        pattern is not already the good one)
4863
4864        * src\cmt_parser.cxx (install_setup_scripts): Changed
4865        >>${tempfile} into >${tempfile} in setup scripts (fix a constraint
4866        in csh)
4867
48682001-02-26  Christian Arnault  <arnault@lal.in2p3.fr>
4869
4870        * src/cmt_parser.cxx (do_build_temporary_name): Add the build
4871        temporary_name command to supply that missing function on various
4872        shells.
4873        (install_test_setup_scripts): Apply this new build service to
4874        setup scripts generation.
4875
4876        * src/Makefile.header: Needed a trailing end-of-line
4877
48782001-02-15  Christian Arnault  <arnault@lal.in2p3.fr>
4879
4880        * src/cmt_cvs.cxx (class CvsImplementation): Fix misuse of
4881        checkout_package arguments (confusion between package path and
4882        checkout directory)
4883
48842001-02-26    <arnault@lal.in2p3.fr>
4885
4886        * src\cmt_parser.cxx (install_test_setup_scripts): use mktemp for
4887        setup scripts.
4888
4889        * mgr\requirements: Suppress local private configuration of
4890        MSVC++. It has to be done previously to operate on CMT (even
4891        before making the INSTALL.bat)
4892
48932001-02-26  Christian Arnault  <arnault@lal.in2p3.fr>
4894
4895        * src/cmt_deps_builder.cxx ((char* ptr,
4896                              state_def& state,
4897                              const cmt_string& dir_name,
4898                              int current_path_index,
4899                              const CmtSystem::cmt_string_vector& include_paths,
4900                              const CmtSystem::cmt_string_vector& substitutions,
4901                              CmtSystem::cmt_string_vector& all_deps,
4902                              CmtSystem::cmt_string_vector& deps)
4903        * src/cmt_generator.cxx ((const cmt_string& file_name)
4904
4905        Rollback recent change to work on cmt_strings rather than char* to
4906        restore speed.
4907
49082001-02-15  Christian Arnault  <arnault@lal.in2p3.fr>
4909
4910        * src/cmt_generator.cxx (build_dependencies): Restore the
4911        mechanism that takes into account the arguments, and the source
4912        list when -all_sources option is provided.
4913
4914        * mgr/requirements: change /machine:I386 into /machine:IX86 as
4915        link option for VisualC
4916
49172001-02-13    <arnault@lal.in2p3.fr>
4918
4919        * src\cmt_generator.cxx (build_dependencies): Do not require the
4920        source list from the arguments. Instead, get the sources directly
4921        from the constituents definition.
4922
4923        The "cmt build dependencies" now only requires the constituent name.
4924
4925        * src\cmt_deps_builder.cxx: Read files at once into a cmt_string
4926        and work from the text instead of reainf line by line from the file.
4927
4928        Install the detection of fortran include statements
4929
49302001-02-06    <arnault@lal.in2p3.fr>
4931
4932        * src\cmt_use.cxx: clean up space & tabs
4933
4934        * cmt_parser.cxx (parse_requirements_text): Abort the parser in
4935        case of error, but only for check configuration command.
4936
4937        * NMakefile.header (lex_echo): Add -quiet option to cmt command
4938        except cmt check configuration
4939       
4940        * constituents.nmake: Add -quiet option to cmt command
4941
49422001-01-30    <arnault@lal.in2p3.fr>
4943
4944        * all dsp fragments : suppress the Win32 Release
4945        configuration. Only keep the Win32 Debug. This makes possible the
4946        generation of msdev using the syntax cmt build msdev
4947        -tag=VisualCdbg
4948
49492001-01-30    <arnault@lal.in2p3.fr>
4950
4951        * mgr/cmt_buildcvsinfos.py: first attempt to make the cvs script
4952        written in Python
4953
4954        * mgr/requirements: Consistently base Windows tag on VisualC rather
4955        than WIN32
4956
4957        upgraded setup.tcsh setup.zsh
4958
4959        introduced cmt show include_dirs
4960       
4961        introduced cmt show constituent <name>
4962
4963        bug in Pattern::add : overridden patterns were not cleared.
4964
4965        cmt config must recursively get used packages (at least to get patterns)
4966
4967        introduced cmt show pattern_names (at least for completion mechanisms)       
4968          new action : action_show_pattern_names
4969
4970        experimental work started on build triggers
4971       
4972          macro build_triggers
4973                implied_library_prefix
4974                implied_library_sufffix
4975
4976          new library option -triggers
4977          new constituent attribute build_triggers
4978          new fragment dependencies_and_triggers for libraries
4979
4980        bug in cmt_system.cxx::scan_dir
4981
4982        Recursively get all requirements file in cmt config action
4983
4984
4985        Changed strategy for argument parsing error detection
4986       
49872001-01-30    <arnault@lal.in2p3.fr>
4988
4989        * cmt_use.cxx ((const cmt_string& from_path) : bug in detection of
4990        "use pack " without version specification at all (ie equiv. to
4991        *). We needed to check we are on a real CMT package.
4992
4993        * cmt_constituent.cxx (class action_iterator): Expand the macros
4994        before acting upon a constituent specification. Each expanded word
4995        may then result in several words. Thus the line parser is
4996        re-implemented through a local operator class "action_iterator",
4997        in charge of filling up a new constituent object from the expanded
4998        statement. (Note that this mechanism could perfectly be reused for
4999        other statements eg "use" !!!)
5000
5001        * cmt_parser.cxx (set_standard_macros): Implement all_constituents
5002        and all_constituentsclean unconditionally.
5003
5004        * NMakefile.header (checkuses): if defined statements require that
5005        the macro to test is provided without quotes.
5006
5007        * cmt_generator.cxx: Apply the new convention of installing object
5008        files into $(bin)${CONSTITUENTS} also for applications (was only
5009        done for libraries)
5010
5011        * cmt_parser.cxx (print_context): Take the current CONFIG name
5012        from CmtSystem::get_cmt_config rather than recursively calling
5013        "cmt system", when generating setup scripts.
5014
5015        * cmt_cvs.cxx (class CvsImplementation): Use '/' ínstead of
5016        CmtSystem::file_separator for CVS-only file specs.
5017
50182000-12-26    <arnault@lal.in2p3.fr>
5019
5020        * cmt_fragment.h (class Fragment and FragmentHandle): Install all
5021        variants of (win)copy methods that act upon a cmt_string instead
5022        of a FILE*.
5023
5024        * cmt_model.cxx: Create the implementation file for CmtModel
5025
5026        * cmt_model.h (class CmtModel): Create the CmtModel class
5027
5028        * cmt_parser.cxx (do_expand_model): Add the new command verb :
5029        'expand model' and all associated features
5030        (do_expand_model): call the CmtModel::expand
5031
Note: See TracBrowser for help on using the repository browser.