source: CMT/HEAD/ChangeLog @ 66

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

Fix a bug in setting project macros - see CL-273

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