Changeset 83
- Timestamp:
- Sep 5, 2005, 12:45:14 PM (19 years ago)
- Location:
- CMT/HEAD
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
CMT/HEAD/ChangeLog
r82 r83 1 2005-09-05 <arnault@lal.in2p3.fr> 278 2 3 * source\cmt_parser.cxx (do_create): Make use of the 4 structure strategy for creating package directory structure. 5 6 * source\cmt_cvs.cxx (class CvsImplementation): Make use of the 7 structure strategy for creating package directory structure. 8 9 * source\cmt_parser.cxx (do_show_strategies): Display the structure strategy 10 11 * source\cmt_syntax.cxx (class KwdStructureStrategy): Create the 12 parsing function for Structure strategies 13 14 * source\cmt_parser.h (enum CmtStructuringStyle): By default the 15 structuring style is initialized with default_structuring_style 16 instead of with_version_directory in order to remember whether the 17 default has been overridden using EV or command option. 18 19 * source\cmt_project.cxx (configure): Initialize the VersionDirectory strategy 20 (StrategyMgr): Create the VersionDirectory strategy entry. 21 22 * source\cmt_parser.h (enum): Add a StructureStrategy to define with/out version directory. 23 1 24 2005-09-05 Christian Arnault <arnault@lal.in2p3.fr> 277 2 25 -
CMT/HEAD/doc/CMTDoc.html
r46 r83 4 4 <head> 5 5 <style type="text/css"> 6 tt {color:#006600; font-weight: normal; %background-color: #eeffee}7 tt .cmt {color:#00AA00; font-weight: normal; %background-color: #eeeeee}6 body {font-face: Arial, Helvetica, Comic Sans MS, Times; color: #000000} 7 tt {color:#00AA00; font-weight: normal; background-color: #eeeeee} 8 8 pre {color:#FF0000; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4} 9 9 pre.cmt {font-family: courier; color:#00AA00; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4} … … 17 17 </head> 18 18 <body bgcolor="#ffffff" link="#550088" alink="#007777" alink="#007777"> 19 <font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">20 19 <h1><center>CMT</center> 21 20 <center>Configuration Management Tool</center></h1> 22 <h2><center>Version v1r18p20050 501</center>21 <h2><center>Version v1r18p20050901</center> 23 22 <center>Christian Arnault</center> 24 23 <center><tt>arnault@lal.in2p3.fr</tt></center></h2> 25 <center><i>Document revision date : 2005-0 5-02</i></center><hr><h2><a href="#index">General index</a></h2>24 <center><i>Document revision date : 2005-09-05</i></center><hr><h2><a href="#index">General index</a></h2> 26 25 <hr><h2><a name="Presentation"></a><a href="#index"><tt> 1</tt></a> - Presentation</h2> 27 26 <blockquote> … … 142 141 <p>Following these definitions, the basic configuration management 143 142 operations involved here (and serviced by the <tt>CMT</tt> 144 'tools)143 tools) 145 144 consist of : 146 145 <ul> … … 438 437 . It can receive the following 439 438 specifications:</p> 440 <pre class="cmt">439 <pre> 441 440 project <project-name> [1] 442 441 <i>project-use specifications...</i> [2] 443 <i>strategy specifications...</i> [3] 444 </pre> 442 <i>strategy specifications...</i> [3]</pre> 445 443 <ol> 446 444 <li>The project name specified here takes precedence over the … … 473 471 strategies to different sub-projects. The strategy 474 472 specifications may appear in requirements file of any package 475 of a project or in the <tt>cmt/project.cmt</tt>473 of a project or in the <tt>cmt/project.cmt</tt> 476 474 project file. 477 475 <p>By default a project inherits the strategies of its … … 487 485 <p>The project file can be created using the command:</p> 488 486 <pre> 489 > cmt create_project <project-name> [<release>] [<path>]</pre> 487 > cmt create_project <project-name> [<release>] [<path>] 488 > cmt create_project <project-name> [<release>] [<path>] [-use=<package>:<version>:<path>]...</pre> 490 489 <p>This will create the complete directory hierarchy from the 491 490 current directory (or, when it is specified from the optional 492 491 project path). It will also create a project file containing the 493 project name.</p> 492 project name, and optionnally will initialize it with some use 493 statements.</p> 494 494 <blockquote><i>Note that the <release> argument may be 495 495 left empty (or to an empty string). In this case, the directory 496 hierarchy will be limited to one level devoted tothe project496 hierarchy will be limited to the single level of the project 497 497 name.</i> 498 498 </blockquote> … … 505 505 > cmt create_project ProjectA 1.0 /test 506 506 > cmt create_project ProjectB 1.0 /test</pre> 507 <p>And we fill <tt>CMTPATH</tt>507 <p>And we manually fill <tt>CMTPATH</tt> 508 508 with:</p> 509 509 <pre> 510 510 /test/WorkArea:/test/ProjectA/1.0:/test/ProjectB/1.0</pre> 511 <p>Then the following projects will appear displayed from bottom 512 to top as</p> 511 <p>Then, when standing in the <tt>WorkArea</tt> 512 the following 513 projects will appear displayed from bottom to top as</p> 513 514 <pre> 514 515 > cd /test/WorkArea … … 534 535 <pre> 535 536 /test</pre> 537 <p>This complete sequence may also be shortened as follows:</p> 538 <pre> 539 > cmt create_project ProjectB 1.0 /test 540 > cmt create_project ProjectA 1.0 /test -use=ProjectB:1.0 541 > cmt create_project WorkArea "" /test -use=ProjectA:1.0</pre> 536 542 </blockquote> 537 543 <hr><h3><a name="Projects and strategies"></a><a href="#index"><tt> 4. 2</tt></a> - Projects and strategies</h3> 538 544 <blockquote> 539 <p>Every strategy setting defines two mutually exclusive tags 540 and activates one of them.</p> 545 <p>Few behaviours of the configuration management process can be 546 tailored with respect to CMT, via means of defining 547 <i>strategies</i> 548 . Then according to these strategies, CMT will 549 behave in well defined ways.</p> 550 <p>Every strategy setting is a boolean value, instructing CMT to 551 activate or not a given behaviour. As such it defines two 552 mutually exclusive CMT <i>tags</i> 553 and it activates one of 554 them.</p> 541 555 <pre class="cmt"> 542 556 <project>_<have_item> … … 544 558 <p>Examples</p> 545 559 <pre class="cmt"> 546 <project>_prototypes547 <project>_no_prototypes548 560 <project>_with_install_area 549 561 <project>_without_install_area … … 553 565 <project>_no_root 554 566 <project>_cleanup 555 <project>_no_cleanup</pre> 556 <p>In particular, the installation area mechanism is strongly 557 connected with the project hierarchy. This happens through 558 several mechanisms:</p> 567 <project>_no_cleanup 568 <project>_prototypes 569 <project>_no_prototypes</pre> 570 <p>In the context of a hierarchy - <i>a graph</i> 571 - of projects, 572 strategies are transmitted along the graph, according to the use 573 relationships specified between the projects. A project 574 transmits its strategies to its clients except when one of them 575 overrides those strategies.</p> 576 <p>Several mechanisms help defining project specific properties, 577 and more specifically making use of the strategies:</p> 559 578 <ul> 560 579 <li>The <tt><project></tt> … … 586 605 is 587 606 <tt>${cmt_installarea_prefix}</tt> 588 <p></p> 607 (which itself is a global 608 macro that receives a default value from CMT )<p></p> 589 609 </li> 590 610 </ul> … … 594 614 <p>This is an environment variable containing a search list, 595 615 very similar to the well know Unix or Windows <tt>PATH</tt> 596 environment variable , containing a list of file paths where CMT597 projects can be found. The syntax of this search list follows598 the standard syntax of search lists, i.e. items are separated599 using a <tt>:</tt>616 environment variable. It specifies a list of file paths where 617 CMT projects can be found. The syntax of this search list 618 follows the standard syntax of search lists, i.e. items are 619 separated using a <tt>:</tt> 600 620 character on Unix and a <tt>;</tt> 601 character 602 on Windows.</p> 621 character on Windows.</p> 603 622 <p><blockquote><i>One should understand this search list as the 604 623 primary mechanism to locate sub-projects in the software base, … … 652 671 /PB_A/... 653 672 /PB_B/... </pre> 673 <p>In this example:</p> 654 674 <ul> 655 <li>there are two project areas, one for the main 656 developments, and another one for managing external products</li> 675 <li>there are two project areas, one for the main developments 676 (<tt>/project-area1</tt> 677 ), and another one for managing 678 external products (<tt>/project-area1</tt> 679 )</li> 657 680 <li><tt>project-area1</tt> 658 681 offers three sub-projects … … 822 845 utilities, using for example the shell command: </p> 823 846 <pre> 824 csh> source /lal/CMT/v1r18p20050 501/mgr/setup.csh847 csh> source /lal/CMT/v1r18p20050901/mgr/setup.csh 825 848 826 849 or 827 850 828 ksh> . /lal/CMT/v1r18p20050 501/mgr/setup.sh851 ksh> . /lal/CMT/v1r18p20050901/mgr/setup.sh 829 852 830 853 or 831 854 832 dos> call \lal\CMT\v1r18p20050 501\mgr\setup.bat</pre>855 dos> call \lal\CMT\v1r18p20050901\mgr\setup.bat</pre> 833 856 <p>Obviously, this operation <i>must</i> 834 857 be performed (once) … … 872 895 <i><font COLOR="#000077" face="courier new, courier">------------------------------------------ 873 896 Configuring environment for project Dev 874 CMT version v1r18p20050 501.897 CMT version v1r18p20050901. 875 898 ------------------------------------------ 876 899 Installing the cmt directory … … 896 919 <i><font COLOR="#000077" face="courier new, courier">------------------------------------------ 897 920 Configuring environment for package Foo version v1. 898 CMT version v1r18p20050 501. [1]921 CMT version v1r18p20050901. [1] 899 922 Root set to /home/arnault/Dev. 900 923 System is Linux-i686 [2] … … 932 955 <i><font COLOR="#007700" face="courier new, courier">------------------------------------------ 933 956 Configuring environment for package Foo version v1. 934 CMT version v1r18p20050 501.957 CMT version v1r18p20050901. 935 958 Root set to /ProjectB. 936 959 System is Linux-i686 … … 955 978 <tt>requirements</tt> 956 979 ) installed in the <tt>cmt</tt> 957 980 branch. </li> 958 981 <p></p> 959 982 <li> A minimal <tt>Makefile</tt> … … 1027 1050 <i><font COLOR="#000077" face="courier new, courier">------------------------------------------ 1028 1051 Removing package Foo version v1. 1029 CMT version v1r18p20050 501.1052 CMT version v1r18p20050901. 1030 1053 Root set to /home/arnault/mydev. 1031 1054 System is Linux-i686 … … 1037 1060 <i><font COLOR="#000077" face="courier new, courier">------------------------------------------ 1038 1061 Removing package Foo version v1. 1039 CMT version v1r18p20050 501.1062 CMT version v1r18p20050901. 1040 1063 Root set to /ProjectB. 1041 1064 System is Linux-i686 … … 1337 1360 <li>compiler and linker options</li> 1338 1361 <li>run time settings such as environment variable definitions 1339 (PATH, LD_LIBRARY_PATH, etc..)</li> 1362 (<tt>PATH</tt> 1363 , <tt>LD_LIBRARY_PATH</tt> 1364 , etc..)</li> 1340 1365 <li>data file access</li> 1341 1366 <li>specification of local installation according to the … … 1992 2017 component. This is done using one 1993 2018 <tt>library</tt> 1994 2019 statement. </li> 1995 2020 </ol> 1996 2021 <p>The <tt>cmt create</tt> … … 2413 2438 same subdirectory, one of them will be the <i>header</i> 2414 2439 of 2415 the generated complete fragment, the other will be its2440 the generated complete fragment, the other will be its 2416 2441 <i>trailer</i> 2417 2442 </li> … … 3003 3028 features, graphical libraries) and therefore might require a 3004 3029 controled re-build. This is especially useful for having these 3005 constituents only rebuilt on demand rather than rebuilt3030 constituents only rebuilt on demand rather than rebuilt 3006 3031 automatically when the default make command is run.</p> 3007 3032 <p>One could, for instance specify within the requirements file :</p> … … 3175 3200 defined by a used package).</p> 3176 3201 <p>The translations occur while running either the setup 3177 3202 scripts (for alias, set or path) or the make command (for 3178 3203 macro and actions).</p> 3179 3204 <p>All these definitions follow the same pattern:</p> … … 3582 3607 generic syntax is :</p> 3583 3608 <pre class="cmt"> 3584 use <package> [ <version> [ <offset> ] ] </pre>3609 use <package> [ <version> [ <offset> ] ] [ -no_auto_imports=<package> ... ]</pre> 3585 3610 <p>Omitting the version specification means that the most 3586 3611 recent version (ie. the one with highest ids) that can be … … 3596 3621 precedence over the standard search path list (see 3597 3622 CMTPATH).</p> 3623 <p>The additional <tt>-no_auto_imports</tt> 3624 options 3625 suppress the automatic inheritance of some standard 3626 parameters from the specified used packages, such as 3627 include paths, compiler flags, ... </p> 3598 3628 <p> Examples of such relationships are :</p> 3599 3629 <pre class="cmt"> … … 3781 3811 <p>Then, in addition, user defined templates can be installed 3782 3812 within the pattern definitions. Their actual value will be 3783 provided as arguments to the apply_pattern statement.</p>3813 provided as arguments to the apply_pattern statement.</p> 3784 3814 <p>User defined templates that have not been assigned a 3785 3815 value when the pattern is applied are simply ignored … … 4134 4164 <tt>include_dirs</tt> 4135 4165 instead).</p> 4166 <blockquote><i> 4167 <p>Note that this behaviour is expected to become 4168 obsolete in some next release of CMT. The default 4169 include search path of <tt>../src</tt> 4170 will then simply 4171 disappear, and the <tt>include_path</tt> 4172 statement will 4173 become meaningless. When this happens, include search 4174 paths will always have to be explicitly specified using the 4175 <tt>include_dirs</tt> 4176 statement. In order to anticipate 4177 this evolution, it is suggested to always use 4178 <tt>include_path none</tt> 4179 and add all include search 4180 directories using the <tt>include_dirs</tt> 4181 statement.</p> 4182 </i> 4183 </blockquote> 4136 4184 </blockquote> 4137 4185 <hr><h4><a name="include_dirs"></a><a href="#index"><tt>13. 2.15</tt></a> - include_dirs</h4> 4138 4186 <blockquote> 4139 <p>Add explicit specifications for include access paths.</p> 4187 <p>Add explicit specifications for include access 4188 paths. The value may be provided through a macro 4189 reference.</p> 4190 <p>The statement is sensitive to private scoping.</p> 4140 4191 </blockquote> 4141 4192 <hr><h4><a name="make_fragment"></a><a href="#index"><tt>13. 2.16</tt></a> - make_fragment</h4> … … 4297 4348 <li>the declaration of make fragments</li> 4298 4349 <li>the declaration of patterns</li> 4350 <li>the declaration of include search paths (via the 4351 <tt>include_dirs</tt> 4352 statement)</li> 4299 4353 </ul> 4300 4354 <p>Public definitions are meant to be exported to any … … 4766 4820 per constituent source file), each containing the set of 4767 4821 found dependencies. </p> 4822 <p>CMT is able to recursively compute the dependencies 4823 implied by the <tt>include</tt> 4824 statements found in 4825 the source files. However it's also possible to make 4826 plain use of the standard mechanisms provided by some 4827 standard tools like <tt>cpp -M</tt> 4828 . In this case, it 4829 will be required to <i>format</i> 4830 the output produced 4831 by the selected tool so as to let CMT parse it and 4832 properly deduce the dependencies. Formatting the 4833 output of external tools may require to interface the 4834 tool itself e.g. using a shell script.</p> 4835 <p>The standard CMT macro 4836 <tt>$(build_dependencies)</tt> 4837 must be used to specify 4838 an alternate dependency builder. The default value is:</p> 4839 <pre>$(cmtexe) -quiet -tag=$(tags) build dependencies</pre> 4840 <p>The expected output format from any dependency builder is as follows:</p> 4841 <ul> 4842 <li>Each file corresponds to one single dependency line in the output</li> 4843 <li>A dependency line should be formatted as follows: 4844 <pre><file-name>_<file_suffix>_dependencies = <source> <file> ... </pre> 4845 <p>Where:</p> 4846 <ul> 4847 <li><tt><file-name></tt> 4848 is given without the file suffix</li> 4849 <li><tt><file_suffix></tt> 4850 is given without the dot</li> 4851 <li><tt><source></tt> 4852 is the path to the source file</li> 4853 <li>the list of <tt><file></tt> 4854 paths corresponds to the effective list of dependent files. This is a list of reative or absolute file paths.</li> 4855 </ul> 4856 </li> 4857 </ul> 4858 <p>A Unix shell script in 4859 <tt>${CMTROOT}/mgr/cmt_build_deps.sh</tt> 4860 is offered 4861 as an example of how to interface the standard <tt>cpp 4862 -M</tt> 4863 command with CMT. It can be declared as a 4864 substitute to the internal mechanism as follows:</p> 4865 <pre>macro build_dependencies "${CMTROOT}/mgr/cmt_build_deps.sh"</pre> 4866 <p>Of course this shell script should be considered as 4867 an example and might have to be adapted for other 4868 dependency builders, or for Windows.</p> 4768 4869 </li> 4769 4870 <li><tt>library_links</tt> … … 4827 4928 . The build strategy may be 4828 4929 freely and globally overridden from any <a HREF='#The requirements file'>requirements</a> file, 4829 using the <tt>build_strategy</tt>4930 using the <tt>build_strategy</tt> 4830 4931 cmt statement, providing 4831 4932 either the "prototypes" or the "no_prototypes" values. </p> … … 4846 4947 <li><tt>tag_makefile</tt> 4847 4948 <p> This command produces onto the standard output, the 4848 4949 exhaustive list of all macros controled by <tt>CMT</tt> 4849 4950 , 4850 4951 ie. those defined in the requirements files as well as the … … 4940 5041 <pre> 4941 5042 csh> cmt create Foo v1 </pre> 4942 5043 or: 4943 5044 <pre> 4944 5045 csh> cmt create Foo v1 ~/dev</pre> … … 4972 5073 <pre> 4973 5074 > cmt expand model "abcd $(CMTVERSION) efgh" 4974 <i><font COLOR="#000077" face="courier new, courier">abcd v1r18p20050 501 efgh</font></i></pre>5075 <i><font COLOR="#000077" face="courier new, courier">abcd v1r18p20050901 efgh</font></i></pre> 4975 5076 </li> 4976 5077 <li><i>Recursively</i> … … 5398 5499 <p>This command displays the current knowledge of 5399 5500 sub-project definitions and settings. It shows the 5400 project names and their location (ie the corresponding5501 project names and their location (ie the corresponding 5401 5502 item in <tt>CMTPATH</tt> 5402 5503 </p> … … 5458 5559 # 5459 5560 # Selection : [4] 5460 use CMT v1r18p20050 501 (/afs/cern.ch/sw/contrib)5561 use CMT v1r18p20050901 (/afs/cern.ch/sw/contrib) 5461 5562 use ExternalLibs v4r2p0 (/afs/cern.ch/atlas/offline/external/Gaudi/0.12.1.5) [5] 5462 5563 use CLHEP v2r1820p0 (/afs/cern.ch/atlas/offline/external/Gaudi/0.12.1.5) … … 6056 6157 <p>the basics of the mechanisms supported by CMT are the following:</p> 6057 6158 <ol> 6058 <li><p></p> 6059 All mechanisms are customizable on a per-project basis, 6060 so as to easily follow the project specific conventions</li> 6061 <li><p></p> 6062 However CMT proposes a minimal default behaviour based on the 6159 <li>The installation area mechanism is activated on demand via a 6160 dedicated strategy specification, that can be written either in a 6161 requirements file or in a project file. By default the mechanism 6162 is <i>not</i> 6163 active.<p></p> 6164 </li> 6165 <li>All mechanisms are customizable on a per-project basis, 6166 so as to easily follow the project specific conventions<p></p> 6167 </li> 6168 <li>However CMT proposes a minimal default behaviour based on the 6063 6169 concrete experience in large projects, as well as frequently met 6064 practices</li>6065 <li><p></p>6066 A typical well supported convention is to map the set of6170 practices<p></p> 6171 </li> 6172 <li>A typical well supported convention is to map the set of 6067 6173 installation areas onto the set of CMTPATH entries, associating the 6068 6174 concept of CMTPATH splitting with the sub-project 6069 organization</li>6070 <li><p></p>6071 A typical consequence of this approach is that many6175 organization<p></p> 6176 </li> 6177 <li>A typical consequence of this approach is that many 6072 6178 configuration parameters need to be set according to the list of 6073 6179 CMTPATH items. Eg on a Unix system, if one expects to find shared … … 6076 6182 LD_LIBRARY_PATH entries accordingly. The mechanism of 6077 6183 <tt>cmtpath_pattern</tt> 6078 is exactly designed for that.</li>6079 <li><p></p>6080 The mechanism easily supports the extension for installing6184 is exactly designed for that.<p></p> 6185 </li> 6186 <li>The mechanism easily supports the extension for installing 6081 6187 binary files (libraries, applications, java classes), runtime 6082 files, documentation and header files.</li> 6188 files, documentation and header files.<p></p> 6189 </li> 6083 6190 </ol> 6084 6191 <hr><h3><a name="The default implementation"></a><a href="#index"><tt>16. 1</tt></a> - The default implementation</h3> … … 6087 6194 <ol> 6088 6195 <li> 6089 <p></p>6090 6196 A set of <tt>cmtpath_pattern</tt> 6091 6197 s defined in the CMT requirements … … 6093 6199 <pre> 6094 6200 > cmt show cmtpath_patterns</pre> 6201 <p></p> 6095 6202 </li> 6096 6203 <li> 6097 <p></p>6098 6204 A consistent set of actions added to the following make_fragments 6099 6205 <table> 6100 <tr><td>application</td> 6206 <tr><td><tt>application</tt> 6207 </td> 6101 6208 <td>applications</td> 6102 6209 </tr> 6103 <tr><td>library</td> 6210 <tr><td><tt>library</tt> 6211 </td> 6104 6212 <td>shared libraries</td> 6105 6213 </tr> 6106 <tr><td>library_no_share</td> 6214 <tr><td><tt>library_no_share</tt> 6215 </td> 6107 6216 <td>static libraries</td> 6108 6217 </tr> 6109 <tr><td>java_header</td> 6218 <tr><td><tt>java_header</tt> 6219 </td> 6110 6220 <td>Java applications</td> 6111 6221 </tr> 6112 <tr><td>jar</td> 6222 <tr><td><tt>jar</tt> 6223 </td> 6113 6224 <td>Java libraries</td> 6114 6225 </tr> 6115 6226 </table> 6227 <p></p> 6116 6228 </li> 6117 6229 <li> 6118 <p></p>6119 6230 <p>One shell script for installing or uninstalling files or directories</p> 6120 6231 <pre> … … 6123 6234 ${CMTROOT}/mgr/cmt_install_action.bat 6124 6235 ${CMTROOT}/mgr/cmt_uninstall_action.bat</pre> 6125 </li> 6126 <p>The default architecture of this installation scheme is by 6127 default set for each CMTPATH entry to:</p> 6236 <p></p> 6237 </li> 6238 <li> 6239 <p>The default architecture of this installation scheme is by 6240 default set for each CMTPATH entry to:</p> 6128 6241 <pre> 6129 <path>/InstallationArea/$(tag)/bin/... [1] 6130 /$(tag)/lib/... [2] 6131 /include/<package>/... [3] 6132 /share/bin/... [4] 6133 /share/lib/... [5] 6134 /... [6] 6135 /doc/<package>/... [7] 6136 /... [8]</pre> 6137 <ol> 6138 <li>Platform dependent executables</li> 6139 <li>Platform dependent libraries</li> 6140 <li>Public header files </li> 6141 <li>Platform independent applications (eg Java applications)</li> 6142 <li>Platform independent libraries (eg Java libraries)</li> 6143 <li>other platform independent files</li> 6144 <li>package specific documentations</li> 6145 <li>project-wide documentation</li> 6146 </ol> 6242 <path>/$(<project>_installarea_prefix)/$(tag)/bin/... [1] 6243 /$(tag)/lib/... [2] 6244 /include/<package>/... [3] 6245 /share/bin/... [4] 6246 /share/lib/... [5] 6247 /... [6] 6248 /doc/<package>/... [7] 6249 /... [8]</pre> 6250 <ol> 6251 <li>Platform dependent executables</li> 6252 <li>Platform dependent libraries</li> 6253 <li>Public header files </li> 6254 <li>Platform independent applications (eg Java applications)</li> 6255 <li>Platform independent libraries (eg Java libraries)</li> 6256 <li>other platform independent files</li> 6257 <li>package specific documentations</li> 6258 <li>project-wide documentation</li> 6259 </ol> 6260 <p>The <tt><project>_installarea_prefix</tt> 6261 takes the 6262 default value of <tt>$(cmt_installarea_prefix)</tt> 6263 for all 6264 projects, which itself takes the default value of 6265 <tt>InstallArea</tt> 6266 . Of course it can be overridden to other 6267 values in each project</p> 6268 </li> 6147 6269 </ol> 6148 <p>The cmtpath_patterns are designed in this implementation for 6149 constructing a proper and consistent sequence of system specific 6150 environment variables (eg PATH, LD_LIBRARY_PATH, CLASSPATH) as 6151 well as compiler or linker options so as to transparently refer to 6152 the installation area only when it is appropriate to ovverride the 6153 local patterns.</p> 6270 <p>The <tt>cmtpath_patterns</tt> 6271 are designed in this 6272 implementation for constructing a proper and consistent sequence 6273 of system specific environment variables (eg <tt>PATH</tt> 6274 , 6275 <tt>LD_LIBRARY_PATH</tt> 6276 , <tt>CLASSPATH</tt> 6277 ) as well as compiler 6278 or linker options so as to transparently refer to the installation 6279 area only when it is appropriate to ovverride the local 6280 patterns.</p> 6154 6281 </blockquote> 6155 6282 <hr><h3><a name="Tuning the installation area mechanisms"></a><a href="#index"><tt>16. 2</tt></a> - Tuning the installation area mechanisms</h3> … … 6326 6453 csh> cd /Packages 6327 6454 csh> <get the tar file from the Web> 6328 csh> tar xzf CMTv1r18p20050 501.tar.gz6329 csh> cd CMT/v1r18p20050 501/mgr6455 csh> tar xzf CMTv1r18p20050901.tar.gz 6456 csh> cd CMT/v1r18p20050901/mgr 6330 6457 csh> ./INSTALL 6331 6458 csh> source setup.csh … … 6354 6481 special application): </p> 6355 6482 <UL> 6356 <li>HKEY_LOCAL_MACHINE/Software/CMT/root will contain the root 6357 directory where <tt>CMT</tt> 6358 is installed (eg. "e:"). </li> 6359 <li>HKEY_LOCAL_MACHINE/Software/CMT/version will contain the 6360 current version tag of <tt>CMT</tt> 6361 ("v1r18p20050501" for this version). </li> 6362 <li>HKEY_LOCAL_MACHINE/Software/CMT/path/ may optionally 6363 contain a set of text values corresponding to the different 6364 package global access paths. </li> 6365 <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the 6366 conventional site name. </li> 6367 <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of 6368 text of text values corresponding to the different package 6369 private access paths. </li> 6483 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/root</tt> 6484 will 6485 contain the root directory where <tt>CMT</tt> 6486 is installed 6487 (eg. <tt>"e:"</tt> 6488 ). </li> 6489 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/version</tt> 6490 will 6491 contain the current version tag of <tt>CMT</tt> 6492 (<tt>"v1r18p20050901"</tt> 6493 for this version). </li> 6494 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path/</tt> 6495 may 6496 optionally contain a set of text values corresponding to 6497 the different package global access paths. </li> 6498 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/site</tt> 6499 will 6500 contain the conventional site name. </li> 6501 <li><tt>HKEY_CURRENT_USER/Software/CMT/path/</tt> 6502 may 6503 contain a set of text of text values corresponding to the 6504 different package private access paths. </li> 6370 6505 </UL> 6371 6506 <p>CMT can also be configured to run on DOS-based environments … … 6377 6512 dos> cd Packages 6378 6513 dos> <get the tar file from the Web> 6379 dos> cd CMT\v1r18p20050 501\mgr6514 dos> cd CMT\v1r18p20050901\mgr 6380 6515 dos> call INSTALL 6381 6516 dos> call setup.bat … … 6534 6669 </td> 6535 6670 <td>gives the current complete version tag of CMT</td> 6536 <td><tt>v1r18p20050 501</tt>6671 <td><tt>v1r18p20050901</tt> 6537 6672 </td> 6538 6673 </tr> … … 7152 7287 to be rebuilt first (since each 7153 7288 constituent is associated with a target with the same 7154 name). This is especially needed when one want to use7289 name). This is especially needed when one want to use 7155 7290 the parallel gmake (ie. the -j option of gmake). 7156 7291 </td> … … 7232 7367 >ROOT</tt> 7233 7368 </td> 7234 <td width="400">The access path of the package (including the version branch)</td> 7369 <td width="400">The access path of the package (including 7370 the version branch). This is controlled by the 7371 <tt>setup_strategy [no_]root</tt> 7372 statement.</td> 7235 7373 </tr> 7236 7374 <tr> … … 7250 7388 >VERSION</tt> 7251 7389 </td> 7252 <td>The used version of the package </td>7390 <td>The used version of the package.</td> 7253 7391 </tr> 7254 7392 <tr> … … 7782 7920 </tr> 7783 7921 <tr> 7784 <td>ADDINCLUDE</td> 7922 <td><tt>ADDINCLUDE</tt> 7923 </td> 7785 7924 <td>additional include path</td> 7786 7925 <td><<i>language</i> … … 7788 7927 </tr> 7789 7928 <tr> 7790 <td>CONSTITUENT</td> 7929 <td><tt>CONSTITUENT</tt> 7930 </td> 7791 7931 <td>name of the constituent</td> 7792 7932 <td><<i>language</i> … … 7794 7934 </tr> 7795 7935 <tr> 7796 <td>DATE</td> 7936 <td><tt>DATE</tt> 7937 </td> 7797 7938 <td>now</td> 7798 7939 <td>make_header</td> 7799 7940 </tr> 7800 7941 <tr> 7801 <td>FILENAME</td> 7942 <td><tt>FILENAME</tt> 7943 </td> 7802 7944 <td>file name without path</td> 7803 7945 <td>buildproto <<i>language</i> … … 7806 7948 </tr> 7807 7949 <tr> 7808 <td>FILEPATH</td> 7950 <td><tt>FILEPATH</tt> 7951 </td> 7809 7952 <td>file path</td> 7810 7953 <td>buildproto <<i>language</i> … … 7813 7956 </tr> 7814 7957 <tr> 7815 <td>FILESUFFIX</td> 7958 <td><tt>FILESUFFIX</tt> 7959 </td> 7816 7960 <td>file suffix (without dot)</td> 7817 7961 <td><<i>language</i> … … 7819 7963 </tr> 7820 7964 <tr> 7821 <td>FILESUFFIX</td> 7965 <td><tt>FILESUFFIX</tt> 7966 </td> 7822 7967 <td>file suffix (with dot)</td> 7823 7968 <td><<i>document</i> … … 7825 7970 </tr> 7826 7971 <tr> 7827 <td>FULLNAME</td> 7972 <td><tt>FULLNAME</tt> 7973 </td> 7828 7974 <td>complete file path and name</td> 7829 7975 <td><<i>language</i> … … 7832 7978 </tr> 7833 7979 <tr> 7834 <td>GROUP</td> 7980 <td><tt>GROUP</tt> 7981 </td> 7835 7982 <td>group name</td> 7836 7983 <td>constituents_header</td> 7837 7984 </tr> 7838 7985 <tr> 7839 <td>LINE</td> 7986 <td><tt>LINE</tt> 7987 </td> 7840 7988 <td>source files</td> 7841 7989 <td><<i>language</i> … … 7843 7991 </tr> 7844 7992 <tr> 7845 <td>LINKMACRO</td> 7993 <td><tt>LINKMACRO</tt> 7994 </td> 7846 7995 <td>link macro</td> 7847 7996 <td>application</td> 7848 7997 </tr> 7849 7998 <tr> 7850 <td>NAME</td> 7999 <td><tt>NAME</tt> 8000 </td> 7851 8001 <td>file name without path and suffix</td> 7852 8002 <td>buildproto <<i>language</i> … … 7855 8005 </tr> 7856 8006 <tr> 7857 <td>OBJS</td> 8007 <td><tt>OBJS</tt> 8008 </td> 7858 8009 <td>object files</td> 7859 8010 <td>jar_header java_header jar library_no_share library application cleanup_java document_header trailer</td> 7860 8011 </tr> 7861 8012 <tr> 7862 <td>OUTPUTNAME</td> 8013 <td><tt>OUTPUTNAME</tt> 8014 </td> 7863 8015 <td>output file name</td> 7864 8016 <td>java</td> 7865 8017 </tr> 7866 8018 <tr> 7867 <td>PACKAGE</td> 8019 <td><tt>PACKAGE</tt> 8020 </td> 7868 8021 <td>current package name</td> 7869 8022 <td><<i>language</i> … … 7871 8024 </tr> 7872 8025 <tr> 7873 <td>PACKAGEPATH</td> 8026 <td><tt>PACKAGEPATH</tt> 8027 </td> 7874 8028 <td>current package location</td> 7875 8029 <td>readme_use</td> 7876 8030 </tr> 7877 8031 <tr> 7878 <td>PROTOSTAMPS</td> 8032 <td><tt>PROTOSTAMPS</tt> 8033 </td> 7879 8034 <td>prototype stamp files</td> 7880 8035 <td>protos_header</td> 7881 8036 </tr> 7882 8037 <tr> 7883 <td>PROTOTARGET</td> 8038 <td><tt>PROTOTARGET</tt> 8039 </td> 7884 8040 <td>prototype target name</td> 7885 8041 <td>library_header application_header</td> 7886 8042 </tr> 7887 8043 <tr> 7888 <td>SUFFIX</td> 8044 <td><tt>SUFFIX</tt> 8045 </td> 7889 8046 <td>document suffix</td> 7890 8047 <td><<i>document</i> … … 7892 8049 </tr> 7893 8050 <tr> 7894 <td>TITLE</td> 8051 <td><tt>TITLE</tt> 8052 </td> 7895 8053 <td>title for make header</td> 7896 8054 <td>make_header</td> 7897 8055 </tr> 7898 8056 <tr> 7899 <td>USER</td> 8057 <td><tt>USER</tt> 8058 </td> 7900 8059 <td>user name</td> 7901 8060 <td>make_header</td> 7902 8061 </tr> 7903 8062 <tr> 7904 <td>VERSION</td> 8063 <td><tt>VERSION</tt> 8064 </td> 7905 8065 <td>current package version tag</td> 7906 8066 <td>readme_header readme readme_use</td> … … 8028 8188 </p> 8029 8189 </blockquote> 8030 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18. 7</tt></a> - The complete requirements syntax</h3> 8190 <hr><h3><a name="The complete project file syntax"></a><a href="#index"><tt>18. 7</tt></a> - The complete project file syntax</h3> 8191 <blockquote> 8192 The syntax of specification statements that can be installed in a 8193 <tt>project.cmt</tt> 8194 file are : 8195 <center> 8196 <table cols="3"> 8197 <tr> 8198 <td width="220"></td> 8199 <td width="10"></td> 8200 <td></td> 8201 </tr> 8202 <tr> 8203 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-cmt-statement"></a>cmt-statement</i></font></td> 8204 <td class="rule">:</td> 8205 <td class="rule"> 8206 <font face="courier new, courier" COLOR="#770000"><i> 8207 <a href="#kwCMTProject-build_strategy">build_strategy</a> 8208 </i></font> 8209 </td> 8210 </tr> 8211 <tr> 8212 <td></td> 8213 <td>|</td> 8214 <td> 8215 <font face="courier new, courier" COLOR="#770000"><i> 8216 <a href="#kwCMTProject-container">container</a> 8217 </i></font> 8218 </td> 8219 </tr> 8220 <tr> 8221 <td></td> 8222 <td>|</td> 8223 <td> 8224 <font face="courier new, courier" COLOR="#770000"><i> 8225 <a href="#kwCMTProject-project">project</a> 8226 </i></font> 8227 </td> 8228 </tr> 8229 <tr> 8230 <td></td> 8231 <td>|</td> 8232 <td> 8233 <font face="courier new, courier" COLOR="#770000"><i> 8234 <a href="#kwCMTProject-setup_strategy">setup_strategy</a> 8235 </i></font> 8236 </td> 8237 </tr> 8238 <tr> 8239 <td></td> 8240 <td>|</td> 8241 <td> 8242 <font face="courier new, courier" COLOR="#770000"><i> 8243 <a href="#kwCMTProject-use">use</a> 8244 </i></font> 8245 </td> 8246 </tr> 8247 <tr> 8248 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-build_strategy"></a>build_strategy</i></font></td> 8249 <td class="rule">:</td> 8250 <td class="rule"> 8251 <font face="courier new, courier" COLOR="#FF0000"> 8252 build_strategy 8253 </font> 8254 <font face="courier new, courier" COLOR="#770000"><i> 8255 build-strategy-name 8256 </i></font> 8257 </td> 8258 </tr> 8259 <tr> 8260 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-build-strategy-name"></a>build-strategy-name</i></font></td> 8261 <td class="rule">:</td> 8262 <td class="rule"> 8263 <font face="courier new, courier" COLOR="#FF0000"> 8264 prototypes 8265 </font> 8266 </td> 8267 </tr> 8268 <tr> 8269 <td></td> 8270 <td>|</td> 8271 <td> 8272 <font face="courier new, courier" COLOR="#FF0000"> 8273 no_prototypes 8274 </font> 8275 </td> 8276 </tr> 8277 <tr> 8278 <td></td> 8279 <td>|</td> 8280 <td> 8281 <font face="courier new, courier" COLOR="#FF0000"> 8282 with_installarea 8283 </font> 8284 </td> 8285 </tr> 8286 <tr> 8287 <td></td> 8288 <td>|</td> 8289 <td> 8290 <font face="courier new, courier" COLOR="#FF0000"> 8291 without_installarea 8292 </font> 8293 </td> 8294 </tr> 8295 <tr> 8296 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-container"></a>container</i></font></td> 8297 <td class="rule">:</td> 8298 <td class="rule"> 8299 <font face="courier new, courier" COLOR="#FF0000"> 8300 container 8301 </font> 8302 <font face="courier new, courier" COLOR="#770000"><i> 8303 container-name 8304 </i></font> 8305 [ 8306 <font face="courier new, courier" COLOR="#770000"><i> 8307 <a href="#kwCMTProject-version-tag">version-tag</a> 8308 </i></font> 8309 [ 8310 <font face="courier new, courier" COLOR="#770000"><i> 8311 access-path 8312 </i></font> 8313 ] 8314 ] 8315 </td> 8316 </tr> 8317 <tr> 8318 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-project"></a>project</i></font></td> 8319 <td class="rule">:</td> 8320 <td class="rule"> 8321 <font face="courier new, courier" COLOR="#FF0000"> 8322 project 8323 </font> 8324 <font face="courier new, courier" COLOR="#770000"><i> 8325 project-name 8326 </i></font> 8327 </td> 8328 </tr> 8329 <tr> 8330 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-setup_strategy"></a>setup_strategy</i></font></td> 8331 <td class="rule">:</td> 8332 <td class="rule"> 8333 <font face="courier new, courier" COLOR="#FF0000"> 8334 setup_strategy 8335 </font> 8336 <font face="courier new, courier" COLOR="#770000"><i> 8337 setup-strategy-name 8338 </i></font> 8339 </td> 8340 </tr> 8341 <tr> 8342 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-setup-strategy-name"></a>setup-strategy-name</i></font></td> 8343 <td class="rule">:</td> 8344 <td class="rule"> 8345 <font face="courier new, courier" COLOR="#FF0000"> 8346 config 8347 </font> 8348 </td> 8349 </tr> 8350 <tr> 8351 <td></td> 8352 <td>|</td> 8353 <td> 8354 <font face="courier new, courier" COLOR="#FF0000"> 8355 no_config 8356 </font> 8357 </td> 8358 </tr> 8359 <tr> 8360 <td></td> 8361 <td>|</td> 8362 <td> 8363 <font face="courier new, courier" COLOR="#FF0000"> 8364 root 8365 </font> 8366 </td> 8367 </tr> 8368 <tr> 8369 <td></td> 8370 <td>|</td> 8371 <td> 8372 <font face="courier new, courier" COLOR="#FF0000"> 8373 no_root 8374 </font> 8375 </td> 8376 </tr> 8377 <tr> 8378 <td></td> 8379 <td>|</td> 8380 <td> 8381 <font face="courier new, courier" COLOR="#FF0000"> 8382 cleanup 8383 </font> 8384 </td> 8385 </tr> 8386 <tr> 8387 <td></td> 8388 <td>|</td> 8389 <td> 8390 <font face="courier new, courier" COLOR="#FF0000"> 8391 no_cleanup 8392 </font> 8393 </td> 8394 </tr> 8395 <tr> 8396 <td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwCMTProject-use"></a>use</i></font></td> 8397 <td class="rule">:</td> 8398 <td class="rule"> 8399 <font face="courier new, courier" COLOR="#FF0000"> 8400 use 8401 </font> 8402 <font face="courier new, courier" COLOR="#770000"><i> 8403 project-name 8404 </i></font> 8405 [ 8406 <font face="courier new, courier" COLOR="#770000"><i> 8407 <a href="#kwCMTProject-release-tag">release-tag</a> 8408 </i></font> 8409 [ 8410 <font face="courier new, courier" COLOR="#770000"><i> 8411 access-path 8412 </i></font> 8413 ] 8414 ] 8415 </td> 8416 </tr> 8417 </table> 8418 </center> 8419 </blockquote> 8420 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18. 8</tt></a> - The complete requirements syntax</h3> 8031 8421 <blockquote> 8032 8422 The syntax of specification statements that can be installed in a … … 9758 10148 </center> 9759 10149 </blockquote> 9760 <hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>18. 8</tt></a> - The default strategies defined in CMT</h3>10150 <hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>18. 9</tt></a> - The default strategies defined in CMT</h3> 9761 10151 <blockquote> 9762 10152 <pre class="cmt"> 9763 DefaultPrototypesStrategy = Prototypes,9764 DefaultInstallAreaStrategy = WithoutInstallArea</pre>9765 </blockquote> 9766 <hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>18. 9</tt></a> - The internal mechanism of cmt cvs operations</h3>10153 build_strategy prototypes | without_installarea 10154 setup_strategy config | root </pre> 10155 </blockquote> 10156 <hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>18.10</tt></a> - The internal mechanism of cmt cvs operations</h3> 9767 10157 <blockquote> 9768 10158 Generally, CVS does not handle queries upon the repository (such as … … 9812 10202 built as follows: 9813 10203 <pre> 9814 cvs -Q import -m cmt .cmtcvsinfos/< <i>package-name</i>> CMT v1 </pre>10204 cvs -Q import -m cmt .cmtcvsinfos/<protocol-level>/<<i>package-name</i>> CMT v1 </pre> 9815 10205 <p>Obviously this command is fake, since no file exist in the 9816 temporary directory we have just created. However, </p> 9817 </li> 9818 <li>This action actually triggers the 10206 temporary directory we have just created. The 10207 <tt>protocol-level</tt> 10208 referenced in this command is described 10209 in the standard macro <tt>$(cmt_cvs_protocol_level)</tt> 10210 .</p> 10211 </li> 10212 <li>This action actually triggers the CVS pluggin installed in the 10213 <tt>loginfo</tt> 10214 CVS metafile. A default pluggin is provided by 10215 CMT implemented as a shell script, 9819 10216 <tt>cmt_buildcvsinfos2.sh</tt> 9820 script, which simply receives in 9821 its argument the module name onto which we need 9822 information. This information is obtained by scanning the files 9823 into the repository, and an answer is built with the following 9824 syntax: 10217 , which simply receives in its 10218 argument the module name onto which we need information. This 10219 information is obtained by scanning the files into the 10220 repository, and an answer is built with the following syntax: 9825 10221 <pre> 9826 10222 [error=<i>error-text</i>] (1) … … 9839 10235 </ol> 9840 10236 </li> 10237 <li> 10238 Another version of this pluggin is also available as a C++ 10239 application. This application is available for download at the 10240 <a href="http://www.cmtsite.org">CMT web site</a> 10241 . 10242 </li> 9841 10243 </ol> 9842 10244 </blockquote> … … 10315 10717 <tr> 10316 10718 <td width="100"><tt>18. 7</tt></td> 10719 <td> <a href="#The complete project file syntax">The complete project file syntax</a></td> 10720 </tr> 10721 <tr> 10722 <td width="100"><tt>18. 8</tt></td> 10317 10723 <td> <a href="#The complete requirements syntax">The complete requirements syntax</a></td> 10318 10724 </tr> 10319 10725 <tr> 10320 <td width="100"><tt>18. 8</tt></td>10726 <td width="100"><tt>18. 9</tt></td> 10321 10727 <td> <a href="#The default strategies defined in CMT">The default strategies defined in CMT</a></td> 10322 10728 </tr> 10323 10729 <tr> 10324 <td width="100"><tt>18. 9</tt></td>10730 <td width="100"><tt>18.10</tt></td> 10325 10731 <td> <a href="#The internal mechanism of cmt cvs operations">The internal mechanism of cmt cvs operations</a></td> 10326 10732 </tr> … … 10341 10747 </table> 10342 10748 </blockquote> 10343 </font>10344 10749 <address> 10345 10750 <i>Christian Arnault</i> -
CMT/HEAD/doc/CMTDoc.xml
r46 r83 3 3 <!ENTITY nbsp " "> 4 4 <!ENTITY CMTrelease "18"> 5 <!ENTITY CMTVersion "v1r18p20050 501">5 <!ENTITY CMTVersion "v1r18p20050901"> 6 6 <!ENTITY CMTvTag "CMTv1"> 7 7 <!ENTITY CMTrTag "CMTr18"> 8 <!ENTITY CMTpTag "CMTp20050 501">8 <!ENTITY CMTpTag "CMTp20050901"> 9 9 <!ENTITY CMTrequirements " <a HREF='#The requirements file'>requirements</a> "> 10 10 ]> … … 138 138 139 139 <p>Following these definitions, the basic configuration management 140 operations involved here (and serviced by the <tt>CMT</tt> 'tools)140 operations involved here (and serviced by the <tt>CMT</tt> tools) 141 141 consist of : 142 142 … … 283 283 <p>examples of such organization can be : </p> 284 284 285 <cmt:image src="Images/PackageStructure.jpg" caption="Structuring a sofware base." />285 <cmt:image src="Images/PackageStructure.jpg" caption="Structuring a sofware base."></cmt:image> 286 286 287 287 </li> … … 465 465 specifications:</p> 466 466 467 <cmt:c mtcode>467 <cmt:code> 468 468 project <project-name> [1] 469 469 <i>project-use specifications...</i> [2] 470 <i>strategy specifications...</i> [3] 471 </cmt:cmtcode> 470 <i>strategy specifications...</i> [3]</cmt:code> 472 471 473 472 <ol> … … 511 510 512 511 <cmt:code> 513 > cmt create_project <project-name> [<release>] [<path>]</cmt:code> 512 > cmt create_project <project-name> [<release>] [<path>] 513 > cmt create_project <project-name> [<release>] [<path>] [-use=<package>:<version>:<path>]...</cmt:code> 514 514 515 515 <p>This will create the complete directory hierarchy from the 516 516 current directory (or, when it is specified from the optional 517 517 project path). It will also create a project file containing the 518 project name.</p> 518 project name, and optionnally will initialize it with some use 519 statements.</p> 519 520 520 521 <blockquote><i>Note that the <release> argument may be 521 522 left empty (or to an empty string). In this case, the directory 522 hierarchy will be limited to one level devoted tothe project523 hierarchy will be limited to the single level of the project 523 524 name.</i></blockquote> 524 525 … … 534 535 > cmt create_project ProjectB 1.0 /test</cmt:code> 535 536 536 <p>And we fill <tt>CMTPATH</tt> with:</p>537 <p>And we manually fill <tt>CMTPATH</tt> with:</p> 537 538 538 539 <cmt:code> 539 540 /test/WorkArea:/test/ProjectA/1.0:/test/ProjectB/1.0</cmt:code> 540 541 541 <p>Then the following projects will appear displayed from bottom542 to top as</p>542 <p>Then, when standing in the <tt>WorkArea</tt> the following 543 projects will appear displayed from bottom to top as</p> 543 544 544 545 <cmt:code> … … 571 572 /test</cmt:code> 572 573 574 <p>This complete sequence may also be shortened as follows:</p> 575 576 <cmt:code> 577 > cmt create_project ProjectB 1.0 /test 578 > cmt create_project ProjectA 1.0 /test -use=ProjectB:1.0 579 > cmt create_project WorkArea "" /test -use=ProjectA:1.0</cmt:code> 580 573 581 </cmt:section> 574 582 575 583 <cmt:section title="Projects and strategies"> 576 584 577 <p>Every strategy setting defines two mutually exclusive tags 578 and activates one of them.</p> 585 <p>Few behaviours of the configuration management process can be 586 tailored with respect to CMT, via means of defining 587 <i>strategies</i>. Then according to these strategies, CMT will 588 behave in well defined ways.</p> 589 590 <p>Every strategy setting is a boolean value, instructing CMT to 591 activate or not a given behaviour. As such it defines two 592 mutually exclusive CMT <i>tags</i> and it activates one of 593 them.</p> 579 594 580 595 <cmt:cmtcode> … … 585 600 586 601 <cmt:cmtcode> 587 <project>_prototypes588 <project>_no_prototypes589 602 <project>_with_install_area 590 603 <project>_without_install_area … … 594 607 <project>_no_root 595 608 <project>_cleanup 596 <project>_no_cleanup</cmt:cmtcode> 597 598 <p>In particular, the installation area mechanism is strongly 599 connected with the project hierarchy. This happens through 600 several mechanisms:</p> 609 <project>_no_cleanup 610 <project>_prototypes 611 <project>_no_prototypes</cmt:cmtcode> 612 613 <p>In the context of a hierarchy - <i>a graph</i> - of projects, 614 strategies are transmitted along the graph, according to the use 615 relationships specified between the projects. A project 616 transmits its strategies to its clients except when one of them 617 overrides those strategies.</p> 618 619 <p>Several mechanisms help defining project specific properties, 620 and more specifically making use of the strategies:</p> 601 621 602 622 <ul> … … 620 640 <tt><project>_installarea_prefix</tt> macro. The default 621 641 value of any <tt><project>_installarea_prefix</tt> is 622 <tt>${cmt_installarea_prefix}</tt> <p></p></li> 642 <tt>${cmt_installarea_prefix}</tt> (which itself is a global 643 macro that receives a default value from CMT )<p></p></li> 623 644 624 645 </ul> … … 630 651 <p>This is an environment variable containing a search list, 631 652 very similar to the well know Unix or Windows <tt>PATH</tt> 632 environment variable , containing a list of file paths where CMT633 projects can be found. The syntax of this search list follows634 the standard syntax of search lists, i.e. items are separated635 using a <tt>:</tt> character on Unix and a <tt>;</tt> character636 on Windows.</p>653 environment variable. It specifies a list of file paths where 654 CMT projects can be found. The syntax of this search list 655 follows the standard syntax of search lists, i.e. items are 656 separated using a <tt>:</tt> character on Unix and a <tt>;</tt> 657 character on Windows.</p> 637 658 638 659 <p><blockquote><i>One should understand this search list as the … … 695 716 /PB_B/... </cmt:code> 696 717 718 <p>In this example:</p> 719 697 720 <ul> 698 721 699 <li>there are two project areas, one for the main 700 developments, and another one for managing external products</li> 722 <li>there are two project areas, one for the main developments 723 (<tt>/project-area1</tt>), and another one for managing 724 external products (<tt>/project-area1</tt>)</li> 701 725 702 726 <li><tt>project-area1</tt> offers three sub-projects … … 1444 1468 1445 1469 <li>run time settings such as environment variable definitions 1446 ( PATH, LD_LIBRARY_PATH, etc..)</li>1470 (<tt>PATH</tt>, <tt>LD_LIBRARY_PATH</tt>, etc..)</li> 1447 1471 1448 1472 <li>data file access</li> … … 3612 3636 3613 3637 <cmt:cmtcode> 3614 use <package> [ <version> [ <offset> ] ] </cmt:cmtcode>3638 use <package> [ <version> [ <offset> ] ] [ -no_auto_imports=<package> ... ]</cmt:cmtcode> 3615 3639 3616 3640 <p>Omitting the version specification means that the most … … 3627 3651 precedence over the standard search path list (see 3628 3652 CMTPATH).</p> 3653 3654 <p>The additional <tt>-no_auto_imports</tt> options 3655 suppress the automatic inheritance of some standard 3656 parameters from the specified used packages, such as 3657 include paths, compiler flags, ... </p> 3629 3658 3630 3659 <p> Examples of such relationships are :</p> … … 4195 4224 <tt>include_dirs</tt> instead).</p> 4196 4225 4226 <blockquote><i> 4227 <p>Note that this behaviour is expected to become 4228 obsolete in some next release of CMT. The default 4229 include search path of <tt>../src</tt> will then simply 4230 disappear, and the <tt>include_path</tt> statement will 4231 become meaningless. When this happens, include search 4232 paths will always have to be explicitly specified using the 4233 <tt>include_dirs</tt> statement. In order to anticipate 4234 this evolution, it is suggested to always use 4235 <tt>include_path none</tt> and add all include search 4236 directories using the <tt>include_dirs</tt> 4237 statement.</p> 4238 </i></blockquote> 4239 4197 4240 </cmt:section> 4198 4241 4199 4242 <cmt:section title="include_dirs"> 4200 4243 4201 <p>Add explicit specifications for include access paths.</p> 4244 <p>Add explicit specifications for include access 4245 paths. The value may be provided through a macro 4246 reference.</p> 4247 4248 <p>The statement is sensitive to private scoping.</p> 4202 4249 4203 4250 </cmt:section> … … 4368 4415 4369 4416 <li>the declaration of patterns</li> 4417 4418 <li>the declaration of include search paths (via the 4419 <tt>include_dirs</tt> statement)</li> 4370 4420 4371 4421 </ul> … … 4836 4886 found dependencies. </p> 4837 4887 4888 <p>CMT is able to recursively compute the dependencies 4889 implied by the <tt>include</tt> statements found in 4890 the source files. However it's also possible to make 4891 plain use of the standard mechanisms provided by some 4892 standard tools like <tt>cpp -M</tt>. In this case, it 4893 will be required to <i>format</i> the output produced 4894 by the selected tool so as to let CMT parse it and 4895 properly deduce the dependencies. Formatting the 4896 output of external tools may require to interface the 4897 tool itself e.g. using a shell script.</p> 4898 4899 <p>The standard CMT macro 4900 <tt>$(build_dependencies)</tt> must be used to specify 4901 an alternate dependency builder. The default value is:</p> 4902 4903 <cmt:code>$(cmtexe) -quiet -tag=$(tags) build dependencies</cmt:code> 4904 4905 <p>The expected output format from any dependency builder is as follows:</p> 4906 4907 <ul> 4908 <li>Each file corresponds to one single dependency line in the output</li> 4909 <li>A dependency line should be formatted as follows: 4910 <cmt:code><file-name>_<file_suffix>_dependencies = <source> <file> ... </cmt:code> 4911 <p>Where:</p> 4912 <ul> 4913 <li><tt><file-name></tt> is given without the file suffix</li> 4914 <li><tt><file_suffix></tt> is given without the dot</li> 4915 <li><tt><source></tt> is the path to the source file</li> 4916 <li>the list of <tt><file></tt> paths corresponds to the effective list of dependent files. This is a list of reative or absolute file paths.</li> 4917 </ul> 4918 </li> 4919 </ul> 4920 4921 4922 <p>A Unix shell script in 4923 <tt>${CMTROOT}/mgr/cmt_build_deps.sh</tt> is offered 4924 as an example of how to interface the standard <tt>cpp 4925 -M</tt> command with CMT. It can be declared as a 4926 substitute to the internal mechanism as follows:</p> 4927 4928 <cmt:code>macro build_dependencies "${CMTROOT}/mgr/cmt_build_deps.sh"</cmt:code> 4929 4930 <p>Of course this shell script should be considered as 4931 an example and might have to be adapted for other 4932 dependency builders, or for Windows.</p> 4933 4838 4934 </li> 4839 4935 … … 6220 6316 <ol> 6221 6317 6222 <li><p></p>All mechanisms are customizable on a per-project basis, 6223 so as to easily follow the project specific conventions</li> 6224 6225 <li><p></p>However CMT proposes a minimal default behaviour based on the 6318 <li>The installation area mechanism is activated on demand via a 6319 dedicated strategy specification, that can be written either in a 6320 requirements file or in a project file. By default the mechanism 6321 is <i>not</i> active.<p></p></li> 6322 6323 <li>All mechanisms are customizable on a per-project basis, 6324 so as to easily follow the project specific conventions<p></p></li> 6325 6326 <li>However CMT proposes a minimal default behaviour based on the 6226 6327 concrete experience in large projects, as well as frequently met 6227 practices< /li>6228 6229 <li> <p></p>A typical well supported convention is to map the set of6328 practices<p></p></li> 6329 6330 <li>A typical well supported convention is to map the set of 6230 6331 installation areas onto the set of CMTPATH entries, associating the 6231 6332 concept of CMTPATH splitting with the sub-project 6232 organization< /li>6233 6234 <li> <p></p>A typical consequence of this approach is that many6333 organization<p></p></li> 6334 6335 <li>A typical consequence of this approach is that many 6235 6336 configuration parameters need to be set according to the list of 6236 6337 CMTPATH items. Eg on a Unix system, if one expects to find shared … … 6238 6339 in a corresponding CMTPATH entry, one also expects to have 6239 6340 LD_LIBRARY_PATH entries accordingly. The mechanism of 6240 <tt>cmtpath_pattern</tt> is exactly designed for that.< /li>6241 6242 <li> <p></p>The mechanism easily supports the extension for installing6341 <tt>cmtpath_pattern</tt> is exactly designed for that.<p></p></li> 6342 6343 <li>The mechanism easily supports the extension for installing 6243 6344 binary files (libraries, applications, java classes), runtime 6244 files, documentation and header files.< /li>6345 files, documentation and header files.<p></p></li> 6245 6346 6246 6347 </ol> … … 6254 6355 <li> 6255 6356 6256 <p></p>6257 6357 A set of <tt>cmtpath_pattern</tt>s defined in the CMT requirements 6258 6358 file. This can be displayed using the command … … 6261 6361 > cmt show cmtpath_patterns</cmt:code> 6262 6362 6363 <p></p> 6263 6364 </li> 6264 6365 6265 6366 <li> 6266 6367 6368 A consistent set of actions added to the following make_fragments 6369 6370 <table> 6371 <tr><td><tt>application</tt></td><td>applications</td></tr> 6372 <tr><td><tt>library</tt></td><td>shared libraries</td></tr> 6373 <tr><td><tt>library_no_share</tt></td><td>static libraries</td></tr> 6374 <tr><td><tt>java_header</tt></td><td>Java applications</td></tr> 6375 <tr><td><tt>jar</tt></td><td>Java libraries</td></tr> 6376 </table> 6377 6267 6378 <p></p> 6268 A consistent set of actions added to the following make_fragments6269 6270 <table>6271 <tr><td>application</td><td>applications</td></tr>6272 <tr><td>library</td><td>shared libraries</td></tr>6273 <tr><td>library_no_share</td><td>static libraries</td></tr>6274 <tr><td>java_header</td><td>Java applications</td></tr>6275 <tr><td>jar</td><td>Java libraries</td></tr>6276 </table>6277 6278 6379 </li> 6279 6380 6280 6381 <li> 6281 <p></p>6282 6382 <p>One shell script for installing or uninstalling files or directories</p> 6283 6383 … … 6288 6388 ${CMTROOT}/mgr/cmt_uninstall_action.bat</cmt:code> 6289 6389 6390 <p></p> 6290 6391 </li> 6392 6393 <li> 6291 6394 6292 6395 <p>The default architecture of this installation scheme is by … … 6294 6397 6295 6398 <cmt:code> 6296 <path>/ InstallationArea/$(tag)/bin/... [1]6297 /$(tag)/lib/... [2]6298 /include/<package>/... [3]6299 /share/bin/... [4]6300 /share/lib/... [5]6301 /... [6]6302 /doc/<package>/... [7]6303 /... [8]</cmt:code>6399 <path>/$(<project>_installarea_prefix)/$(tag)/bin/... [1] 6400 /$(tag)/lib/... [2] 6401 /include/<package>/... [3] 6402 /share/bin/... [4] 6403 /share/lib/... [5] 6404 /... [6] 6405 /doc/<package>/... [7] 6406 /... [8]</cmt:code> 6304 6407 6305 6408 <ol> … … 6314 6417 </ol> 6315 6418 6419 <p>The <tt><project>_installarea_prefix</tt> takes the 6420 default value of <tt>$(cmt_installarea_prefix)</tt> for all 6421 projects, which itself takes the default value of 6422 <tt>InstallArea</tt>. Of course it can be overridden to other 6423 values in each project</p> 6424 6425 </li> 6426 6316 6427 </ol> 6317 6428 6318 <p>The cmtpath_patterns are designed in this implementation for 6319 constructing a proper and consistent sequence of system specific 6320 environment variables (eg PATH, LD_LIBRARY_PATH, CLASSPATH) as 6321 well as compiler or linker options so as to transparently refer to 6322 the installation area only when it is appropriate to ovverride the 6323 local patterns.</p> 6429 <p>The <tt>cmtpath_patterns</tt> are designed in this 6430 implementation for constructing a proper and consistent sequence 6431 of system specific environment variables (eg <tt>PATH</tt>, 6432 <tt>LD_LIBRARY_PATH</tt>, <tt>CLASSPATH</tt>) as well as compiler 6433 or linker options so as to transparently refer to the installation 6434 area only when it is appropriate to ovverride the local 6435 patterns.</p> 6324 6436 6325 6437 </cmt:section> … … 6529 6641 <UL> 6530 6642 6531 <li>HKEY_LOCAL_MACHINE/Software/CMT/root will contain the root 6532 directory where <tt>CMT</tt> is installed (eg. "e:"). </li> 6533 6534 <li>HKEY_LOCAL_MACHINE/Software/CMT/version will contain the 6535 current version tag of <tt>CMT</tt> ("&CMTVersion;" for this version). </li> 6536 6537 <li>HKEY_LOCAL_MACHINE/Software/CMT/path/ may optionally 6538 contain a set of text values corresponding to the different 6539 package global access paths. </li> 6540 6541 <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the 6542 conventional site name. </li> 6543 6544 <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of 6545 text of text values corresponding to the different package 6546 private access paths. </li> 6547 </UL> 6643 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/root</tt> will 6644 contain the root directory where <tt>CMT</tt> is installed 6645 (eg. <tt>"e:"</tt>). </li> 6646 6647 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/version</tt> will 6648 contain the current version tag of <tt>CMT</tt> 6649 (<tt>"&CMTVersion;"</tt> for this version). </li> 6650 6651 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path/</tt> may 6652 optionally contain a set of text values corresponding to 6653 the different package global access paths. </li> 6654 6655 <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/site</tt> will 6656 contain the conventional site name. </li> 6657 6658 <li><tt>HKEY_CURRENT_USER/Software/CMT/path/</tt> may 6659 contain a set of text of text values corresponding to the 6660 different package private access paths. </li> </UL> 6548 6661 6549 6662 <p>CMT can also be configured to run on DOS-based environments … … 7263 7376 <tr> 7264 7377 <td width="200"><tt><<i>PACKAGE</i>>ROOT</tt></td> 7265 <td width="400">The access path of the package (including the version branch)</td> 7378 <td width="400">The access path of the package (including 7379 the version branch). This is controlled by the 7380 <tt>setup_strategy [no_]root</tt> statement.</td> 7266 7381 </tr> 7267 7382 <tr> … … 7276 7391 <tr> 7277 7392 <td><tt><<i>PACKAGE</i>>VERSION</tt></td> 7278 <td>The used version of the package </td>7393 <td>The used version of the package.</td> 7279 7394 </tr> 7280 7395 <tr> … … 7715 7830 </tr> 7716 7831 <tr> 7717 <td> ADDINCLUDE</td>7832 <td><tt>ADDINCLUDE</tt></td> 7718 7833 <td>additional include path</td> 7719 7834 <td><<i>language</i>> java</td> 7720 7835 </tr> 7721 7836 <tr> 7722 <td> CONSTITUENT</td>7837 <td><tt>CONSTITUENT</tt></td> 7723 7838 <td>name of the constituent</td> 7724 7839 <td><<i>language</i>> java jar make_header jar_header java_header library_header application_header protos_header library_no_share library application dependencies cleanup_header cleanup_library cleanup_application check_application document_header <document> trailer dsw_all_project_dependency dsw_project dsp_library_header dsp_shared_library_header dsp_windows_header dsp_application_header dsp_trailer constituent check_application_header</td> 7725 7840 </tr> 7726 7841 <tr> 7727 <td> DATE</td>7842 <td><tt>DATE</tt></td> 7728 7843 <td>now</td> 7729 7844 <td>make_header</td> 7730 7845 </tr> 7731 7846 <tr> 7732 <td> FILENAME</td>7847 <td><tt>FILENAME</tt></td> 7733 7848 <td>file name without path</td> 7734 7849 <td>buildproto <<i>language</i>> <<i>document</i>></td> 7735 7850 </tr> 7736 7851 <tr> 7737 <td> FILEPATH</td>7852 <td><tt>FILEPATH</tt></td> 7738 7853 <td>file path</td> 7739 7854 <td>buildproto <<i>language</i>> <<i>document</i>></td> 7740 7855 </tr> 7741 7856 <tr> 7742 <td> FILESUFFIX</td>7857 <td><tt>FILESUFFIX</tt></td> 7743 7858 <td>file suffix (without dot)</td> 7744 7859 <td><<i>language</i>></td> 7745 7860 </tr> 7746 7861 <tr> 7747 <td> FILESUFFIX</td>7862 <td><tt>FILESUFFIX</tt></td> 7748 7863 <td>file suffix (with dot)</td> 7749 7864 <td><<i>document</i>></td> 7750 7865 </tr> 7751 7866 <tr> 7752 <td> FULLNAME</td>7867 <td><tt>FULLNAME</tt></td> 7753 7868 <td>complete file path and name</td> 7754 7869 <td><<i>language</i>> cleanup <<i>document</i>> dsp_contents</td> 7755 7870 </tr> 7756 7871 <tr> 7757 <td> GROUP</td>7872 <td><tt>GROUP</tt></td> 7758 7873 <td>group name</td> 7759 7874 <td>constituents_header</td> 7760 7875 </tr> 7761 7876 <tr> 7762 <td> LINE</td>7877 <td><tt>LINE</tt></td> 7763 7878 <td>source files</td> 7764 7879 <td><<i>language</i>> dependencies constituent</td> 7765 7880 </tr> 7766 7881 <tr> 7767 <td> LINKMACRO</td>7882 <td><tt>LINKMACRO</tt></td> 7768 7883 <td>link macro</td> 7769 7884 <td>application</td> 7770 7885 </tr> 7771 7886 <tr> 7772 <td> NAME</td>7887 <td><tt>NAME</tt></td> 7773 7888 <td>file name without path and suffix</td> 7774 7889 <td>buildproto <<i>language</i>> java <<i>document</i>></td> 7775 7890 </tr> 7776 7891 <tr> 7777 <td> OBJS</td>7892 <td><tt>OBJS</tt></td> 7778 7893 <td>object files</td> 7779 7894 <td>jar_header java_header jar library_no_share library application cleanup_java document_header trailer</td> 7780 7895 </tr> 7781 7896 <tr> 7782 <td> OUTPUTNAME</td>7897 <td><tt>OUTPUTNAME</tt></td> 7783 7898 <td>output file name</td> 7784 7899 <td>java</td> 7785 7900 </tr> 7786 7901 <tr> 7787 <td> PACKAGE</td>7902 <td><tt>PACKAGE</tt></td> 7788 7903 <td>current package name</td> 7789 7904 <td><<i>language</i>> dsw_header dsw_all_project dsw_all_project_trailer dsw_trailer dsp_all readme_header readme readme_use readme_trailer</td> 7790 7905 </tr> 7791 7906 <tr> 7792 <td> PACKAGEPATH</td>7907 <td><tt>PACKAGEPATH</tt></td> 7793 7908 <td>current package location</td> 7794 7909 <td>readme_use</td> 7795 7910 </tr> 7796 7911 <tr> 7797 <td> PROTOSTAMPS</td>7912 <td><tt>PROTOSTAMPS</tt></td> 7798 7913 <td>prototype stamp files</td> 7799 7914 <td>protos_header</td> 7800 7915 </tr> 7801 7916 <tr> 7802 <td> PROTOTARGET</td>7917 <td><tt>PROTOTARGET</tt></td> 7803 7918 <td>prototype target name</td> 7804 7919 <td>library_header application_header</td> 7805 7920 </tr> 7806 7921 <tr> 7807 <td> SUFFIX</td>7922 <td><tt>SUFFIX</tt></td> 7808 7923 <td>document suffix</td> 7809 7924 <td><<i>document</i>></td> 7810 7925 </tr> 7811 7926 <tr> 7812 <td> TITLE</td>7927 <td><tt>TITLE</tt></td> 7813 7928 <td>title for make header</td> 7814 7929 <td>make_header</td> 7815 7930 </tr> 7816 7931 <tr> 7817 <td> USER</td>7932 <td><tt>USER</tt></td> 7818 7933 <td>user name</td> 7819 7934 <td>make_header</td> 7820 7935 </tr> 7821 7936 <tr> 7822 <td> VERSION</td>7937 <td><tt>VERSION</tt></td> 7823 7938 <td>current package version tag</td> 7824 7939 <td>readme_header readme readme_use</td> … … 7937 8052 7938 8053 </cmt:section> 8054 8055 <cmt:section title="The complete project file syntax"> 8056 8057 The syntax of specification statements that can be installed in a 8058 <tt>project.cmt</tt> file are : 8059 8060 <cmt:syntax rule-width="220" name="CMTProject"> 8061 <cmt:rule name="cmt-statement"> 8062 <cmt:alt><cmt:ruleref name="build_strategy"/></cmt:alt> 8063 <cmt:alt><cmt:ruleref name="container"/></cmt:alt> 8064 <cmt:alt><cmt:ruleref name="project"/></cmt:alt> 8065 <cmt:alt><cmt:ruleref name="setup_strategy"/></cmt:alt> 8066 <cmt:alt><cmt:ruleref name="use"/></cmt:alt> 8067 </cmt:rule> 8068 <cmt:rule name="build_strategy"> 8069 <cmt:alt> 8070 <cmt:kwd/> 8071 <cmt:term name="build-strategy-name"/> 8072 </cmt:alt> 8073 </cmt:rule> 8074 <cmt:rule name="build-strategy-name"> 8075 <cmt:alt><cmt:kwd name="prototypes"/></cmt:alt> 8076 <cmt:alt><cmt:kwd name="no_prototypes"/></cmt:alt> 8077 <cmt:alt><cmt:kwd name="with_installarea"/></cmt:alt> 8078 <cmt:alt><cmt:kwd name="without_installarea"/></cmt:alt> 8079 </cmt:rule> 8080 <cmt:rule name="container"> 8081 <cmt:alt> 8082 <cmt:kwd/> <cmt:term name="container-name"/> 8083 <cmt:option> 8084 <cmt:ruleref name="version-tag"/> 8085 <cmt:option> 8086 <cmt:term name="access-path"/> 8087 </cmt:option> 8088 </cmt:option> 8089 </cmt:alt> 8090 </cmt:rule> 8091 <cmt:rule name="project"> 8092 <cmt:alt> 8093 <cmt:kwd/> 8094 <cmt:term name="project-name"/> 8095 </cmt:alt> 8096 </cmt:rule> 8097 <cmt:rule name="setup_strategy"> 8098 <cmt:alt> 8099 <cmt:kwd/> 8100 <cmt:term name="setup-strategy-name"/> 8101 </cmt:alt> 8102 </cmt:rule> 8103 <cmt:rule name="setup-strategy-name"> 8104 <cmt:alt><cmt:kwd name="config"/></cmt:alt> 8105 <cmt:alt><cmt:kwd name="no_config"/></cmt:alt> 8106 <cmt:alt><cmt:kwd name="root"/></cmt:alt> 8107 <cmt:alt><cmt:kwd name="no_root"/></cmt:alt> 8108 <cmt:alt><cmt:kwd name="cleanup"/></cmt:alt> 8109 <cmt:alt><cmt:kwd name="no_cleanup"/></cmt:alt> 8110 </cmt:rule> 8111 <cmt:rule name="use"> 8112 <cmt:alt> 8113 <cmt:kwd/> <cmt:term name="project-name"/> 8114 <cmt:option> 8115 <cmt:ruleref name="release-tag"/> 8116 <cmt:option> 8117 <cmt:term name="access-path"/> 8118 </cmt:option> 8119 </cmt:option> 8120 </cmt:alt> 8121 </cmt:rule> 8122 </cmt:syntax> 8123 8124 </cmt:section> 7939 8125 7940 8126 <cmt:section title="The complete requirements syntax"> … … 8497 8683 8498 8684 <cmt:cmtcode> 8499 DefaultPrototypesStrategy = Prototypes,8500 DefaultInstallAreaStrategy = WithoutInstallArea</cmt:cmtcode>8685 build_strategy prototypes | without_installarea 8686 setup_strategy config | root </cmt:cmtcode> 8501 8687 8502 8688 </cmt:section> … … 8549 8735 8550 8736 <cmt:code> 8551 cvs -Q import -m cmt .cmtcvsinfos/< <i>package-name</i>> CMT v1 </cmt:code>8737 cvs -Q import -m cmt .cmtcvsinfos/<protocol-level>/<<i>package-name</i>> CMT v1 </cmt:code> 8552 8738 8553 8739 <p>Obviously this command is fake, since no file exist in the 8554 temporary directory we have just created. However, </p> 8740 temporary directory we have just created. The 8741 <tt>protocol-level</tt> referenced in this command is described 8742 in the standard macro <tt>$(cmt_cvs_protocol_level)</tt>.</p> 8555 8743 8556 8744 </li> 8557 8745 8558 <li>This action actually triggers the 8559 8560 <tt>cmt_buildcvsinfos2.sh</tt> script, which simply receives in 8561 its argument the module name onto which we need 8562 information. This information is obtained by scanning the files 8563 into the repository, and an answer is built with the following 8564 syntax: 8746 <li>This action actually triggers the CVS pluggin installed in the 8747 <tt>loginfo</tt> CVS metafile. A default pluggin is provided by 8748 CMT implemented as a shell script, 8749 8750 <tt>cmt_buildcvsinfos2.sh</tt>, which simply receives in its 8751 argument the module name onto which we need information. This 8752 information is obtained by scanning the files into the 8753 repository, and an answer is built with the following syntax: 8565 8754 8566 8755 <cmt:code> … … 8586 8775 </ol> 8587 8776 </li> 8777 8778 <li> 8779 Another version of this pluggin is also available as a C++ 8780 application. This application is available for download at the 8781 <a href="http://www.cmtsite.org">CMT web site</a>. 8782 </li> 8588 8783 </ol> 8589 8784 -
CMT/HEAD/doc/ReleaseNotes.html
r46 r83 48 48 49 49 <li> 50 <b>v1r18p20050901</b> 51 52 <ul> 53 54 <!-- 55 <li class="new"></li> 56 <li class="bug"></li> 57 <li class="int"></li> 58 --> 59 60 <li class="new">Support dependency building using external 61 tools such as cpp -M. Fix the cmt_build_des.sh wrapper 62 script to properly format the command output.</li> 63 64 <li class="new">Perform the cmt checkout onto a project even 65 if the basic directory structure of the project is already 66 in place.</li> 67 68 <li class="new">When no current project is defined the 69 strategies are taken from the top project (eg obtained from 70 the CMTPATH)</li> 71 72 <li class="new">The include_dirs statement can now be hidden 73 in a private section.</li> 74 75 <li class="new">The include_dirs statement now accepts a 76 macro reference as its value</li> 77 78 79 80 <li class="bug">Fix incorrect generation of XXXROOT and 81 XXXCONFIG environment variables according to strategies</li> 82 83 <li class="bug">Protect against missing un/install targets</li> 84 85 <li class="bug">Fix a typo in cmt_uninstall_action.bat 86 resulting in bad management of make cleanup on Windows</li> 87 88 <li class="bug">When creating a parent-less project, link it 89 to exisiting top project(s) and upgrade strategies 90 accordingly. Avoid confusions when mixing explicit CMTPATH, 91 CMTPROJECTPATH and project files </li> 92 93 <li class="bug">Don't apply include_dirs when their expanded 94 value is empty (avoid killing -I"")</li> 95 96 <li class="bug">Reset CMTPATH to empty when filling in 97 CMTPATH from projects (avoid confusions and 98 dupplications)</li> 99 100 <li class="bug">Fix a bug in dependency builder that missed 101 some statements after a single line C++ comment</li> 102 103 <li class="bug">Cleanup unneeded duplicate path 104 separators</li> 105 106 <li class="bug">Fix a bug in standard macro generation for 107 projects</li> 108 109 </ul> 110 111 </li> 112 113 <li> 50 114 <b>v1r18p20050501</b> 51 115 -
CMT/HEAD/doc/gendoc.py
r42 r83 171 171 print '<head>' 172 172 print ' <style type="text/css">' 173 print ' tt {color:#006600; font-weight: normal; %background-color: #eeffee}' 174 print ' tt.cmt {color:#00AA00; font-weight: normal; %background-color: #eeeeee}' 173 print ' body {font-face: Arial, Helvetica, Comic Sans MS, Times; color: #000000}' 174 ##print ' tt {color:#006600; font-weight: normal; background-color: #eeffee}' 175 print ' tt {color:#00AA00; font-weight: normal; background-color: #eeeeee}' 175 176 print ' pre {color:#FF0000; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}' 176 177 print ' pre.cmt {font-family: courier; color:#00AA00; background-color: #eeeeee; border-style: solid; border-width: 1; border-color: black; padding: 4}' … … 185 186 print '<body bgcolor="#ffffff" link="#550088" alink="#007777" alink="#007777">' 186 187 ##print '<font face="Arial, Helvetica" color="#000000">' 187 print '<font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">'188 ##print '<font face="Arial, Helvetica, Comic Sans MS, Times" color="#000000">' 188 189 print '<h1><center>' + self.name + '</center>' 189 190 print '<center>' + self.title + '</center></h1>' … … 213 214 print '</table>' 214 215 print '</blockquote>' 215 print '</font>'216 ##print '</font>' 216 217 print '<address>' 217 218 print '<i>' + self.author + '</i>' -
CMT/HEAD/mgr/cmt.nmake
r82 r83 3 3 # Application cmt 4 4 # 5 # Generated Thu Sep 01 15:10:41 2005 by carnault5 # Generated Mon Sep 05 12:44:26 2005 by ARNAULT 6 6 # 7 7 #==================================== -
CMT/HEAD/mgr/requirements
r45 r83 680 680 <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${tag}/bin" ; \ 681 681 path_prepend PATH "" \ 682 <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \ 682 <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${tag}/lib" \ 683 <project>_with_installarea&CYGWIN "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \ 683 684 path_prepend LD_LIBRARY_PATH "" \ 684 685 <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${tag}/lib" ; \ -
CMT/HEAD/source/cmt_commands.cxx
r42 r83 1898 1898 { 1899 1899 cmt.m_current_structuring_style = with_version_directory; 1900 1901 StrategyDef* def = StrategyMgr::find_strategy ("VersionDirectory"); 1902 if (def != 0) 1903 { 1904 def->m_default_value = true; 1905 def->m_priority_value = false; 1906 } 1900 1907 } 1901 1908 … … 1903 1910 { 1904 1911 cmt.m_current_structuring_style = without_version_directory; 1912 1913 StrategyDef* def = StrategyMgr::find_strategy ("VersionDirectory"); 1914 if (def != 0) 1915 { 1916 def->m_default_value = false; 1917 def->m_priority_value = true; 1918 } 1905 1919 } 1906 1920 -
CMT/HEAD/source/cmt_cvs.cxx
r78 r83 912 912 } 913 913 914 bool do_need_version () 915 { 916 bool need_version = false; 917 918 if (structure_info == "project") 919 { 920 need_version = true; 921 } 922 else 923 { 924 CmtStructuringStyle style = Cmt::get_current_structuring_style (); 925 926 if (style == default_structuring_style) 927 { 928 Use& current_use = Use::current (); 929 if (current_use.get_strategy ("version_directory")) 930 { 931 need_version = true; 932 } 933 } 934 else if (style == with_version_directory) 935 { 936 need_version = true; 937 } 938 } 939 940 return (need_version); 941 } 942 914 943 /** 915 944 Take care of structuring style for packages and of project vs package conventions … … 933 962 dir += CmtSystem::file_separator (); 934 963 dir += product; 935 936 if ( (structure_info == "project") || (Cmt::get_current_structuring_style () == with_version_directory))964 965 if (do_need_version ()) 937 966 { 938 967 dir += CmtSystem::file_separator (); … … 1186 1215 command += version; 1187 1216 } 1188 1189 if (Cmt::get_current_structuring_style () == with_version_directory) 1217 1218 bool need_version = do_need_version (); 1219 1220 if (need_version) 1190 1221 { 1191 1222 command += " -d "; … … 1207 1238 execute_and_retry (command, "Error getting package CMT contents"); 1208 1239 1209 if ( Cmt::get_current_structuring_style () == with_version_directory)1240 if (need_version) 1210 1241 { 1211 1242 if (!mkdir (version)) return (false); … … 1316 1347 cout << echo_ppath << " in " << dir << endl; 1317 1348 1318 if ( (structure_info == "project") || (Cmt::get_current_structuring_style () == with_version_directory))1349 if (do_need_version ()) 1319 1350 { 1320 1351 // Move back to the product name. … … 1713 1744 CmtSystem::cd ("cmt"); 1714 1745 1715 if ( Cmt::get_current_structuring_style () == without_version_directory)1746 if (do_need_version ()) 1716 1747 { 1717 1748 cmt_string text = version; -
CMT/HEAD/source/cmt_parser.cxx
r81 r83 85 85 m_current_access = UserMode; 86 86 m_current_style = cmt_style; 87 m_current_structuring_style = with_version_directory;87 m_current_structuring_style = default_structuring_style; 88 88 m_all_sets_done = false; 89 89 m_autoconfigure_cmtpath = false; … … 2284 2284 CmtSystem::cd (package); 2285 2285 2286 if (Me.m_current_structuring_style == with_version_directory) 2286 Use& current_use = Use::current (); 2287 2288 bool with_version_dir = current_use.get_strategy ("VersionDirectory"); 2289 2290 CmtStructuringStyle style = get_current_structuring_style (); 2291 2292 if (style != default_structuring_style) 2293 { 2294 if (with_version_dir) 2295 { 2296 if (style == without_version_directory) 2297 { 2298 with_version_dir = false; 2299 } 2300 } 2301 else 2302 { 2303 if (style == with_version_directory) 2304 { 2305 with_version_dir = true; 2306 } 2307 } 2308 } 2309 2310 if (with_version_dir) 2287 2311 { 2288 2312 if (!CmtSystem::test_directory (version)) … … 2321 2345 else 2322 2346 { 2323 if ( Me.m_current_structuring_style == with_version_directory)2347 if (with_version_dir) 2324 2348 { 2325 2349 Me.m_current_style = cmt_style; … … 2335 2359 else 2336 2360 { 2337 if ( Me.m_current_structuring_style == with_version_directory)2361 if (with_version_dir) 2338 2362 { 2339 2363 Me.m_current_style = mgr_style; … … 2349 2373 else 2350 2374 { 2351 if ( Me.m_current_structuring_style == with_version_directory)2375 if (with_version_dir) 2352 2376 { 2353 2377 Me.m_current_style = cmt_style; … … 2403 2427 } 2404 2428 2405 if ( Me.m_current_structuring_style == without_version_directory)2429 if (!with_version_dir) 2406 2430 { 2407 2431 ofstream f ("version.cmt"); … … 3631 3655 */ 3632 3656 3633 cout << "Structuring style : "; 3634 3635 switch (Me.m_current_structuring_style) 3636 { 3637 case without_version_directory: 3638 cout << "without_version_directory"; 3639 break; 3640 case with_version_directory: 3641 cout << "with_version_directory"; 3642 break; 3643 } 3644 3645 cout << endl; 3646 3647 cout << "Build strategy : "; 3657 cout << "Build strategy : "; 3648 3658 3649 3659 if (current_use.get_strategy ("BuildPrototypes")) … … 3667 3677 cout << endl; 3668 3678 3669 cout << "Setup strategy : ";3679 cout << "Setup strategy : "; 3670 3680 3671 3681 if (current_use.get_strategy ("SetupConfig")) … … 3695 3705 cout << " no_cleanup"; 3696 3706 } 3707 3708 cout << endl; 3709 3710 cout << "Structure strategy : "; 3711 3712 if (current_use.get_strategy ("VersionDirectory")) 3713 { 3714 cout << "with_version_directory"; 3715 } 3716 else 3717 { 3718 cout << "without_version_directory"; 3719 } 3697 3720 3698 3721 cout << endl; 3722 3723 if (Me.m_current_structuring_style != default_structuring_style) 3724 { 3725 cout << "Structuring style : "; 3726 3727 switch (Me.m_current_structuring_style) 3728 { 3729 case without_version_directory: 3730 cout << "without_version_directory"; 3731 break; 3732 case with_version_directory: 3733 cout << "with_version_directory"; 3734 break; 3735 } 3736 3737 cout << endl; 3738 } 3699 3739 } 3700 3740 -
CMT/HEAD/source/cmt_parser.h
r42 r83 30 30 typedef enum 31 31 { 32 default_structuring_style, 32 33 with_version_directory, 33 34 without_version_directory … … 91 92 CommandSetupScript, 92 93 CommandSetupStrategy, 94 CommandStructureStrategy, 93 95 CommandTag, 94 96 CommandTagExclude, … … 187 189 DefaultSetupStrategy = SetupConfig | SetupRoot | SetupCleanup 188 190 } SetupStrategy; 191 192 typedef enum 193 { 194 WithVersionDirectory = 0x1, 195 WithoutVersionDirectory = WithVersionDirectory << 1, 196 DefaultVersionDirectoryStrategy = WithVersionDirectory, 197 VersionDirectoryMask = WithVersionDirectory | WithoutVersionDirectory, 198 199 StructureStrategyMask = VersionDirectoryMask, 200 201 DefaultStructureStrategy = DefaultVersionDirectoryStrategy 202 } StructureStrategy; 189 203 190 204 typedef enum -
CMT/HEAD/source/cmt_project.cxx
r79 r83 1378 1378 set_default_strategy ("BuildPrototypes"); 1379 1379 set_default_strategy ("InstallArea"); 1380 set_default_strategy ("VersionDirectory"); 1380 1381 } 1381 1382 … … 1971 1972 1972 1973 m_defs.push_back (s); 1974 1975 s = new StrategyDef; 1976 s->m_keyword = "structure"; 1977 s->m_name = "VersionDirectory"; 1978 s->m_on_value = "with_version_directory"; 1979 s->m_off_value = "without_version_directory"; 1980 if (Cmt::get_current_structuring_style () == with_version_directory) 1981 { 1982 s->m_default_value = true; 1983 s->m_priority_value = false; 1984 } 1985 else 1986 { 1987 s->m_default_value = false; 1988 s->m_priority_value = true; 1989 } 1990 1991 m_defs.push_back (s); 1973 1992 } 1974 1993 -
CMT/HEAD/source/cmt_syntax.cxx
r41 r83 743 743 { 744 744 strategy = "SetupCleanup"; 745 } 746 else 747 { 748 result = false; 749 } 750 751 return (result); 752 } 753 754 void action (const CmtSystem::cmt_string_vector& words, 755 Use* use, 756 const cmt_string& file_name, 757 int line_number) 758 { 759 cmt_string cmtpath; 760 cmt_string offset; 761 762 use->get_cmtpath_and_offset (cmtpath, offset); 763 764 Project* p = Project::find_by_cmtpath (cmtpath); 765 766 for (int i = 1; i < words.size (); i++) 767 { 768 const cmt_string& w = words[i]; 769 770 cmt_string strategy; 771 cmt_string value; 772 773 bool in_error = false; 774 775 if (decode (w, strategy, value)) 776 { 777 if (p != 0) p->set_strategy (strategy, value, use->get_package_name ()); 778 } 779 else 780 { 781 in_error = true; 782 783 CmtError::set (CmtError::syntax_error, "ParseRequirements> bad strategy keyword"); 784 } 785 } 786 } 787 788 void action (const CmtSystem::cmt_string_vector& words, 789 Project* project, 790 const cmt_string& file_name, 791 int line_number) 792 { 793 for (int i = 1; i < words.size (); i++) 794 { 795 const cmt_string& w = words[i]; 796 797 cmt_string strategy; 798 cmt_string value; 799 800 bool in_error = false; 801 802 if (decode (w, strategy, value)) 803 { 804 if (project != 0) project->set_strategy (strategy, value, ""); 805 } 806 else 807 { 808 in_error = true; 809 810 CmtError::set (CmtError::syntax_error, "ParseRequirements> bad strategy keyword"); 811 } 812 } 813 } 814 }; 815 816 class KwdStructureStrategy : public Kwd 817 { 818 public: 819 bool decode (const cmt_string& w, cmt_string& strategy, cmt_string& value) 820 { 821 bool result = true; 822 823 value = w; 824 825 if (w == "with_version_directory") 826 { 827 strategy = "VersionDirectory"; 828 } 829 else if (w == "without_version_directory") 830 { 831 strategy = "VersionDirectory"; 745 832 } 746 833 else … … 1077 1164 m_keywords.add ("setup_script", new KwdSetupScript ()); 1078 1165 m_keywords.add ("setup_strategy", new KwdSetupStrategy ()); 1166 m_keywords.add ("structure_strategy", new KwdStructureStrategy ()); 1079 1167 m_keywords.add ("tag", new KwdTag ()); 1080 1168 m_keywords.add ("tag_exclude", new KwdTagExclude ()); … … 1087 1175 m_project_keywords.add ("project", new KwdProject ()); 1088 1176 m_project_keywords.add ("setup_strategy", new KwdSetupStrategy ()); 1177 m_project_keywords.add ("structure_strategy", new KwdStructureStrategy ()); 1089 1178 m_project_keywords.add ("use", new KwdUse ()); 1090 1179 } -
CMT/HEAD/source/cmt_version.h
r78 r83 8 8 #define __cmt_version_h__ 9 9 10 //#define CMTVERSION "v1r18p20050501"11 #define CMTVERSION "HEAD"10 #define CMTVERSION "v1r18p20050901" 11 //#define CMTVERSION "HEAD" 12 12 13 13 #endif
Note: See TracChangeset
for help on using the changeset viewer.