source: CMT/v1r18p20050901/ChangeLog @ 91

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

Fix bug when generating version.cmt file after checkout

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