source: CMT/HEAD/ChangeLog @ 84

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

Fix cmt_cvs WRT structure strategy - see CL#279

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