Changeset 21


Ignore:
Timestamp:
Mar 30, 2005, 4:55:04 PM (19 years ago)
Author:
arnault
Message:

Work on the doc

Location:
CMT/v1r19
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • CMT/v1r19/ChangeLog

    r19 r21  
     12005-03-30    <arnault@lal.in2p3.fr>
     2
     3        * doc/table.html: Install link to the Trac bug reporting system. 
     4
    152005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 261
    26
  • CMT/v1r19/doc/CMTDoc.html

    r18 r21  
    2323<center>Christian Arnault</center>
    2424<center><tt>arnault@lal.in2p3.fr</tt></center></h2>
    25 <center><i>Document revision date : 2005-03-21</i></center><hr><h2><a href="#index">General index</a></h2>
     25<center><i>Document revision date : 2005-03-30</i></center><hr><h2><a href="#index">General index</a></h2>
    2626<hr><h2><a name="Presentation"></a><a href="#index"><tt>&nbsp;1</tt></a> - Presentation</h2>
    2727<blockquote>
     
    270270      <i>sub-projects</i>
    271271       which correspond to the practical
    272             organization of the software developments.</p>
    273       <p>There are no constraints on the number of such areas into
    274               which <tt>CMT</tt>
    275        packages are installed. We'll see <a HREF="#Localizing a package">later</a>
    276        how the different areas
    277               or sub-projects can be declared and identified by
     272            organization of the software base.</p>
     273      <p>There are no constraints on the number of such sub-projects
     274              or areas into which <tt>CMT</tt>
     275       packages are installed. We'll
     276              see <a HREF="#Localizing a package">later</a>
     277       how the
     278              different sub-projects can be declared and identified by
    278279      <tt>CMT</tt>
    279280    .</p>
     
    400401    <li>a structuration in software domains, such as Reconstruction,
    401402        Simulation, Graphics, Core, etc.</li>
    402     <li>how responsibilities or management policy are defined and
     403    <li>how responsibilities or management policies are defined and
    403404        assigned </li>
    404405    <li>reusing or sharing different software products from
     
    406407</ul>
    407408  <p>Considering the simple structuring aspects of sub-projects, two
    408       important configuration parameters handled by CMT must be
    409       understood before attempting to manage packages. These are the
    410     following environment variables:</p>
     409      important configuration parameters (environment variables) handled
     410      by CMT must be understood before attempting to manage
     411    packages:</p>
    411412  <ul>
    412     <li><tt>CMTPROJECTPATH</tt>
    413   </li>
    414     <li><tt>CMTPATH</tt>
    415   </li>
     413      <li><a href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt>
     414    </a>
     415     for a
     416          global specification of where projects can be found. This
     417          specification should be considered as the standard mechanism for
     418          structuring the software base since from it, CMT can and will
     419          deduce all other localization parameters (like
     420    <tt>CMTPATH</tt>
     421    ).<p></p>
     422  </li>
     423      <li><a href="#CMTPATH"><tt>CMTPATH</tt>
     424    </a>
     425     offers a more
     426          internal mechanism for localizing packages. It's not generally
     427          meant to be defined manually since CMT will construct it from
     428    <tt>CMTPROJECTPATH</tt>
     429    . However, it's important to understand
     430          how this configuration parameter is used to locate
     431        packages.</li>
    416432</ul>
    417 <hr><h3><a name="CMTPROJECTPATH"></a><a href="#index"><tt>&nbsp;4.&nbsp;1</tt></a> - CMTPROJECTPATH</h3>
     433  <p>Projects receive detailed descriptions or specifications in a
     434      dedicated <i>project file</i>
     435  , always located in a <tt>cmt</tt>
     436      directory at their top directory level, and named
     437  <tt>cmt/project.cmt</tt>
     438  . It can receive the following
     439    specifications:</p>
     440<pre class="cmt">
     441project &lt;project-name&gt;          [1]
     442<i>project-use specifications...</i>   [2]
     443<i>strategy specifications...</i>      [3]
     444</pre>
     445  <ol>
     446    <li>The project name specified here takes precedence over the
     447          project name specified in the directory structure. However when
     448    <tt>CMTPROJECTPATH</tt>
     449     is not specified, this may cause
     450          conflicts in the localization of projects. In this case it's
     451          highly recommended to always use the same naming convention in
     452          project files as in the directory hierarchy.<p></p>
     453  </li>
     454    <li>Projects are hierarchized as a directed acyclic graph. The
     455          minimal hierarchy simply corresponds to the order of the
     456    <tt>CMTPATH</tt>
     457     items. A more complex hierarchy can be
     458          specified through use statements between sub-projects. This
     459          hierarchy also defines a <i>parent/child</i>
     460     relationship between
     461          projects. If a project <tt>A</tt>
     462     uses another project
     463    <tt>B</tt>
     464    , <tt>A</tt>
     465     is also named the <i>parent</i>
     466     and
     467    <tt>B</tt>
     468     the <i>child</i>
     469    <p></p>
     470  </li>
     471    <li>CMT Strategies (for build or setup) are separately
     472           collected into each project. Therefore one can apply different
     473           strategies to different sub-projects. The strategy
     474           specifications may appear in requirements file of any package
     475    of a project or in the <tt>cmt/project.cmt</tt>
     476     project file.
     477      <p>By default a project inherits the strategies of its
     478             parents. Or if it's the top project, it follows the default
     479             strategies defined by CMT (Refer to this
     480      <a href="#The default strategies defined in CMT">appendix</a>
     481           to see the default strategies currently defined by CMT).</p>
     482    <p></p>
     483  </li>
     484</ol>
     485<hr><h3><a name="The project file"></a><a href="#index"><tt>&nbsp;4.&nbsp;1</tt></a> - The project file</h3>
     486<blockquote>
     487<p>The project file can be created using the command:</p>
     488<pre>
     489&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]</pre>
     490  <p>This will create the complete directory hierarchy from the
     491        current directory (or, when it is specified from the optional
     492        project path). It will also create a project file containing the
     493      project name.</p>
     494    <blockquote><i>Note that the &lt;release&gt; argument may be
     495          left empty (or to an empty string). In this case, the directory
     496          hierarchy will be limited to one level devoted to the project
     497        name.</i>
     498</blockquote>
     499<pre>
     500&lt;path&gt;/&lt;project-name&gt;/&lt;release&gt;/cmt/project.cmt
     501&lt;path&gt;/&lt;project-name&gt;/cmt/project.cmt</pre>
     502<p>As an example, we create the following projects:</p>
     503<pre>
     504&gt; cmt create_project WorkArea "" /test
     505&gt; cmt create_project ProjectA 1.0 /test
     506&gt; cmt create_project ProjectB 1.0 /test</pre>
     507  <p>And we fill <tt>CMTPATH</tt>
     508 with:</p>
     509<pre>
     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>
     513<pre>
     514&gt; cd /test/WorkArea
     515&gt; cmt show projects
     516<i><font COLOR="#000077" face="courier new, courier">WorkArea (in /test/WorkArea) (current)
     517  ProjectA 1.0 (in /test/ProjectA/1.0)
     518    ProjectB 1.0 (in /test/ProjectB/1.0)</font></i></pre>
     519  <p>Of course the preferred way to characterize this software
     520        base should rather be based on specifying the relationships
     521        between those three sub-projects, through the use statements in
     522      the projects files.</p>
     523  <p>For instance in our little example, we could add the
     524      following statement into the project file of WorkArea:</p>
     525<pre>
     526use ProjectA 1.0</pre>
     527<p>and the following statement into the project file of ProjectB:</p>
     528<pre>
     529use ProjectB 1.0</pre>
     530  <p>Then instead of specifying <tt>CMTPATH</tt>
     531   we'd rather
     532        simply define <tt>CMTPROJECTPATH</tt>
     533 as:</p>
     534<pre>
     535/test</pre>
     536</blockquote>
     537<hr><h3><a name="Projects and strategies"></a><a href="#index"><tt>&nbsp;4.&nbsp;2</tt></a> - Projects and strategies</h3>
     538<blockquote>
     539  <p>Every strategy setting defines two mutually exclusive tags
     540      and activates one of them.</p>
     541<pre class="cmt">
     542&lt;project&gt;_&lt;have_item&gt;
     543&lt;project&gt;_&lt;have_not_item&gt; </pre>
     544<p>Examples</p>
     545<pre class="cmt">
     546&lt;project&gt;_prototypes
     547&lt;project&gt;_no_prototypes
     548&lt;project&gt;_with_install_area
     549&lt;project&gt;_without_install_area
     550&lt;project&gt;_config
     551&lt;project&gt;_no_config
     552&lt;project&gt;_root
     553&lt;project&gt;_no_root
     554&lt;project&gt;_cleanup
     555&lt;project&gt;_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>
     559  <ul>
     560    <li>The <tt>&lt;project&gt;</tt>
     561     parameter is expanded in the
     562    <tt>cmtpath_pattern</tt>
     563     construct in addition to the
     564    <tt>&lt;path&gt;</tt>
     565     parameter. This parameter is assigned
     566            the name of the project associated with the running
     567    <tt>CMTPATH</tt>
     568     entry.  <p></p>
     569  </li>
     570    <li>The <tt>&lt;project&gt;</tt>
     571     parameter is also available
     572            for normal patterns. In this case it is assigned the project
     573            name associated with the cmtpath parameter for the current
     574            package.<p></p>
     575  </li>
     576    <li>Every project defines a tag of the same name, and the tag
     577            of the current project is active.<p></p>
     578  </li>
     579    <li>The <tt>cmt_installarea_prefix</tt>
     580     macro is specialized
     581    <i>per project</i>
     582     and every project may override the
     583    <tt>&lt;project&gt;_installarea_prefix</tt>
     584     macro. The default
     585            value of any <tt>&lt;project&gt;_installarea_prefix</tt>
     586     is
     587    <tt>${cmt_installarea_prefix}</tt>
     588    <p></p>
     589  </li>
     590</ul>
     591</blockquote>
     592<hr><h3><a name="CMTPROJECTPATH"></a><a href="#index"><tt>&nbsp;4.&nbsp;3</tt></a> - CMTPROJECTPATH</h3>
    418593<blockquote>
    419594  <p>This is an environment variable containing a search list,
    420         very similar to the well know <tt>PATH</tt>
    421    environment
    422         variable, containing a list of file paths where CMT projects can
    423         be found. The syntax of this search list follows the standard
    424         syntax of search lists, i.e. items are separated using a
    425   <tt>:</tt>
     595        very similar to the well know Unix or Windows <tt>PATH</tt>
     596        environment variable, containing a list of file paths where CMT
     597        projects can be found. The syntax of this search list follows
     598        the standard syntax of search lists, i.e. items are separated
     599        using a <tt>:</tt>
    426600   character on Unix and a <tt>;</tt>
    427    character on
    428       Windows.</p>
    429       <p><blockquote><i>One should understand this search list as the primary
    430             mechanism to locate sub-projects in the software base, and
    431             therefore packages. This in particular can completely replace
    432             the <tt>CMTPATH</tt>
    433       -based search mechanism for packages that
    434             was used before <tt>v1r18</tt>
    435       . However the two mechanisms are
    436           still supported together.</i>
     601   character
     602      on Windows.</p>
     603      <p><blockquote><i>One should understand this search list as the
     604            primary mechanism to locate sub-projects in the software base,
     605            and therefore packages. This in particular can completely
     606            replace the <tt>CMTPATH</tt>
     607      -based search mechanism for packages
     608            that was used before <tt>v1r18</tt>
     609      . However the two mechanisms
     610            are still both supported and in fact interact with each
     611          other.</i>
    437612  </blockquote>
    438613</p>
    439   <p>A sub-project in itself is a two-level directory structure,
     614  <p>A sub-project in itself is a multi-level directory structure,
    440615        located below one of the items of this search list, and composed
    441616      of:</p>
    442617  <ul>
    443618  <li>the sub-project name</li>
    444   <li>the sub-project release</li>
     619  <li>the sub-project release (which may span several directory levels)</li>
    445620</ul>
    446621<p>Then, below this directory structure, we find</p>
     
    508683  </li>
    509684</ul>
    510   <p>This search list is considered to interpret the <i>use</i>
     685  <p>This search list is used to interpret the <i>use</i>
    511686        statements written in the project files. This project use
    512687      statement takes the form:</p>
     
    541716use Core 1.0
    542717use ProductA 1.1.2</pre>
    543     <p><i>Note that sub-project release identifiers are considered
    544         using a perfect-match principle.</i>
     718    <p><i>Note that sub-project release identifiers are always
     719        considered using a perfect-match principle.</i>
    545720</p>
    546721  <p>Structuring the set of sub-projects comprising a software
    547         base is sufficient to permit CMT to find all sub-projects and
    548         thus all packages in them. Defining <tt>CMTPROJECTPATH</tt>
     722        base is sufficient to permit CMT to find <i>all</i>
     723   sub-projects
     724        and thus <i>all</i>
     725   packages in them. Defining
     726  <tt>CMTPROJECTPATH</tt>
    549727  <i>and</i>
    550    installing the list of use statements in all
    551         appropriate project files entirely suppress the need of manually
    552         defining the <tt>CMTPATH</tt>
    553  search list.</p>
    554 </blockquote>
    555 <hr><h3><a name="CMTPATH"></a><a href="#index"><tt>&nbsp;4.&nbsp;2</tt></a> - CMTPATH</h3>
     728   installing the list of use
     729        statements in all appropriate project files entirely suppress
     730        the need of manually defining the <tt>CMTPATH</tt>
     731   search
     732      list.</p>
     733</blockquote>
     734<hr><h3><a name="CMTPATH"></a><a href="#index"><tt>&nbsp;4.&nbsp;4</tt></a> - CMTPATH</h3>
    556735<blockquote>
    557736  <p>This is an environment variable containing a search list,
     
    566745      Windows.</p>
    567746      <p><blockquote><i>When the software base is organized and
    568             configured using the <tt>CMTPROJECTPATH</tt>
    569        search list and
    570             project-use statements in the project files, this search list is
    571             automatically and internally generated by CMT, and therefore it
    572             should not be manually defined nor manipulated. If this is your
    573           case, you can skip this section</i>
     747              configured using the <a href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt>
     748      </a>
     749       search list
     750            and project-use statements in the project files, this search
     751            list is automatically and internally generated by CMT, and
     752            therefore it should not be manually defined nor manipulated. If
     753            this is your case, you can skip this
     754          section</i>
    574755  </blockquote>
    575756</p>
    576 <p>There should be one entry</p>
     757  <p>It is possible to manually define this search list (when
     758  <tt>CMTPROJECTPATH</tt>
     759   is not defined or when project files are
     760      not provided)</p>
     761  <p>There should be one entry per package area, and the list is
     762        ordered. The order of items is used to prioritize the package
     763      search.</p>
     764  <p><tt>CMTPATH</tt>
     765 can be specified:</p>
     766  <ul>
     767    <li>as the environment variable named <tt>CMTPATH</tt>
     768<pre>
     769sh&gt; export CMTPATH=/home/arnault/mydev:/ProjectB </pre>
     770<pre>
     771bat&gt; set CMTPATH=/home/arnault/mydev;/ProjectB </pre>
     772              or (in a <tt>requirements</tt>
     773     file)
     774<pre class="cmt">
     775path_append CMTPATH "/home/arnault/mydev"
     776path_append CMTPATH "/ProjectB"</pre>
     777  </li>
     778    <li>in <tt>.cmtrc</tt>
     779     files, which can be located either in
     780            the current directory, in the <i>home</i>
     781     directory of the
     782            developper or in <tt>${CMTROOT}/mgr</tt>
     783    . The syntax to use in this
     784            configuration file is:
     785<pre>
     786CMTPATH=/home/arnault/mydev:/ProjectB </pre>
     787  </li>
     788    <li>In the Windows environment, this configuration parameter
     789            may also be installed as a <i>Registry</i>
     790     under the alternate
     791            keys:
     792      <ul>
     793        <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path</tt>
     794      </li>
     795        <li><tt>HKEY_CURRENT_USER/Software/CMT/path</tt>
     796      </li>
     797    </ul>
     798  </li>
     799</ul>
     800    <blockquote><i>The project file (i.e. the file
     801    <tt>cmt/project.cmt</tt>
     802    ), when it exists for the current
     803          package (i.e. upstream in the directory hierarchy), also
     804          provides an automatic value for the <tt>CMTPATH</tt>
     805     search
     806        list.</i>
     807</blockquote>
    577808</blockquote>
    578809</blockquote>
     
    645876Installing the cmt directory
    646877Creating a new project file </font></i></pre>
    647   <p>This creates a project structure (i.e. a
    648   <tt>cmt/project.cmt</tt>
    649    file) from the current directory. Once
     878  <p>This creates a project structure
     879  <tt>Dev/cmt/project.cmt</tt>
     880   from the current directory. Once
    650881      this project has been created we have a complete environment to
    651     start creating packages and working out our software base.</p>
     882      start creating packages below <tt>Dev</tt>
     883 and working out our software base.</p>
    652884  <p> A package is primarily defined by a <i>name</i>
    653885   and a
     
    660892</p>
    661893<pre>
    662 csh&gt; cd mydev
     894csh&gt; cd Dev
    663895csh&gt; cmt create Foo v1
    664896<i><font COLOR="#000077" face="courier new, courier">------------------------------------------
    665897Configuring environment for package Foo version v1.
    666898CMT version v1r18p20041201.                              [1]
    667 Root set to /home/arnault/mydev.
     899Root set to /home/arnault/Dev.
    668900System is Linux-i686                                     [2]
    669901------------------------------------------
     
    8651097  <p>The first ingredient we need at this level is to understand how
    8661098      projects themselves are localized, since packages will be found
    867     inside project areas.</p>
    868   <p>Projects are localized according to the <tt>CMTPATH</tt>
    869    path
    870       list. Thus it is <i>always</i>
    871    required to define this environment
    872       variable as soon as several project areas are expected. However,
    873       there is one special case where this path list can be avoided,
    874       i.e. when only one project area is considered. In this case, the
    875       knowledge of this single project area can simply be deduced from
    876       the detection of the project file, created at the top of its disk
    877     space.</p>
     1099      inside project areas. You should therefore refer to the
     1100  <a href="#Defining and managing projects">section on projects</a>
     1101        where the complete mechanism based on <a href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt>
     1102  </a>
     1103     or <a href="#CMTPATH"><tt>CMTPATH</tt>
     1104  </a>
     1105 is described.</p>
     1106  <p>However, there is one special case where this path list can be
     1107      avoided, i.e. when only one project is considered. In this case,
     1108      the knowledge of this single project area can simply be deduced
     1109      from the detection of the project file, created at the top of its
     1110    disk space.</p>
    8781111  <p>A given version of a given package is always referred to by
    8791112      using a <i>use</i>
     
    9061139     is
    9071140        absolute (case #3), </li>
    908     <li> the access paths optionally registered in the configuration
    909           parameter - see below - <tt>CMTPATH</tt>
     1141    <li> the access paths registered in the configuration parameter
     1142      <a href="#CMTPATH"><tt>CMTPATH</tt>
     1143    </a>
    9101144     (and in decreasing
    9111145        priority, the first element being searched for first).</li>
    9121146</ol>
    913 <blockquote><hr>
    914   <i>
    915           The configuration parameter <tt>CMTPATH</tt>
    916    can be specified
    917           either in the environment variable named <tt>CMTPATH</tt>
    918    or in
    919   <tt>.cmtrc</tt>
    920    files, which can themselves be located either in
    921           the current directory, in the <i>home</i>
    922    directory of the
    923           developper or in <tt>${CMTROOT}/mgr</tt>
    924   . In the Windows
    925           environment, this configuration parameter may also be
    926           installed as a <i>Registry</i>
    927    under either the keys:
    928     <ul>
    929       <li><tt>HKEY_LOCAL_MACHINE/Software/CMT/path</tt>
    930     </li>
    931       <li><tt>HKEY_CURRENT_USER/Software/CMT/path</tt>
    932     </li>
    933   </ul>
    934     <p>The project file (i.e. the file <tt>cmt/project.cmt</tt>
    935     ),
    936             when it exists for the current package area, is able to
    937             provide an automatic value for the <tt>CMTPATH</tt>
    938      search
    939           list.</p>
    940 </i>
    941 <hr></blockquote>
    9421147  <p>If the <i>path</i>
    943   argument is specified as a relative path
     1148   argument is specified as a relative path
    9441149      (case #2 above) (ie. there is no leading <i>slash</i>
    9451150   character or
     
    9501155      from the list specified in the <tt>CMTPATH</tt>
    9511156   configuration
    952       parameter, then using the default root; and the offset is appended
    953     at each searched location.</p>
    954   <p>The <tt>CMTPATH</tt>
    955    parameter is thus used as a search list for
    956       the packages, and the individual paths are separated in this list
    957       by <i>colons</i>
    958    (<i>semi-colons</i>
    959  on Windows). </p>
    960   <p>A very typical usage of thie <tt>CMTPATH</tt>
    961    search list is to
    962       assign one entry per project or sub-project considered in the
    963       workning context. This is consistent with an approach where every
    964       sub-project will have a dedicated management style, access rights,
    965     rsponsible persons, etc.</p>
    966   <p>As an example, if we specify the <tt>CMTPATH</tt>
    967    parameter as
    968     follows : </p>
     1157      parameter; and the offset is appended at each searched
     1158    location.</p>
     1159  <p>As an example, if the <tt>CMTPATH</tt>
     1160 parameter contains: </p>
    9691161<pre>
    970 csh&gt; setenv CMTPATH /home/arnault/mydev:/ProjectB </pre>
    971 <pre>
    972 sh&gt; export CMTPATH=/home/arnault/mydev:/ProjectB </pre>
    973 <pre>
    974 bat&gt; set CMTPATH=/home/arnault/mydev;/ProjectB </pre>
    975     or (in a <tt>requirements</tt>
    976  file)
    977 <pre class="cmt">
    978 path_append CMTPATH "/home/arnault/mydev"
    979 path_append CMTPATH "/ProjectB"</pre>
    980     or (in a <tt>.cmtrc</tt>
    981  file)
    982 <pre>
    983 CMTPATH=/home/arnault/mydev:/ProjectB </pre>
     1162/home/arnault/mydev:/ProjectB </pre>
    9841163  <p>Then a <i>use</i>
    9851164   statement (defined within a given package)
     
    10311210</p>
    10321211</blockquote>
    1033 <hr><h2><a name="The concept of project"></a><a href="#index"><tt>&nbsp;7</tt></a> - The concept of project</h2>
    1034 <blockquote>
    1035     The purpose of the concept of <i>project</i>
    1036  or <i>sub-project</i>
    1037     is to structure the software bases developed using CMT. This
    1038     concept basically assigns a semantics to the physical structuring
    1039     mechanism of the software areas already described by the <tt>CMTPATH</tt>
    1040     search list.
    1041   <p>Some general properties can describe the knowledge of projects
    1042     in CMT:</p>
    1043   <ul>
    1044     <li>One project is always explicitly or implicitly associated
    1045           with every CMTPATH entry.<p></p>
    1046   </li>
    1047     <li>Every project can be <i>named</i>
    1048      inside a dedicated text
    1049           file (the <i>project file</i>
    1050     ) named <tt>cmt/project.cmt</tt>
    1051     ,
    1052           located immediately below the corresponding <tt>CMTPATH</tt>
    1053           entry. The format of this file is
    1054 <pre class="cmt">
    1055 project &lt;project-name&gt;
    1056 <i>strategy specifications...</i></pre>
    1057     <p></p>
    1058   </li>
    1059     <li>When not explicitly named, a sub-project is automatically
    1060           assigned the default name <tt>Project&lt;N&gt;</tt>
    1061      by CMT,
    1062           where <tt>&lt;N&gt;</tt>
    1063      is the sequence number of the project
    1064           in the list<p></p>
    1065   </li>
    1066     <li>The project file can be created using one of the commands:
    1067 <pre>
    1068   &gt; cmt create_project &lt;project-name&gt;
    1069   &gt; cmt -project=&lt;project-name&gt; create ...
    1070   &gt; cmt -project=&lt;project-name&gt; checkout ...</pre>
    1071     <p></p>
    1072   </li>
    1073     <li>When being within one project area where a project file has
    1074           been installed, its CMTPATH is automatically generated as the
    1075           location where the first visible project file is
    1076           detected.<p></p>
    1077   </li>
    1078     <li>The same project may be associated with several CMTPATH
    1079            entries, typically when one entry is a development area of
    1080            another one being the production area of the same
    1081            sub-project<p></p>
    1082   </li>
    1083     <li>Since CMTPATH entries are ordered the projects are
    1084            hierarchized accordingly. The last CMTPATH entry (i.e. the
    1085            rightmost one) corresponds to the top project while the first
    1086            CMTPATH entry (i.e. the leftmost one) corresponds to the bottom
    1087            project. A project may have a predecessor and/or a successor.
    1088       <p>As an example, suppose we have set up the following
    1089       <tt>CMTPATH</tt>
    1090     :</p>
    1091 <pre>
    1092 $HOME/work-for-A:/ProjectA:/ProjectB</pre>
    1093              Then the following projects will appear displayed from bottom
    1094              to top as
    1095 <pre>
    1096 &gt; cmt show projects
    1097 <i><font COLOR="#000077" face="courier new, courier">Project1 (in /.../work-for-A)
    1098 Project2 (in /ProjectA)
    1099 Project3 (in /ProjectB)
    1100 CMT (in /afs/cern.ch/sw/contrib)</font></i></pre>
    1101              And if projects have been explicitly named this display will become:
    1102 <pre>
    1103 &gt; cmt show projects
    1104 <i><font COLOR="#000077" face="courier new, courier">A (in /.../work-for-A)
    1105 A (in /ProjectA)
    1106 Project3 (in /ProjectB)
    1107 CMT (in /afs/cern.ch/sw/contrib)</font></i></pre>
    1108     <p></p>
    1109   </li>
    1110     <li>CMT Strategies (for build or setup) are separately
    1111            collected into each project. Therefore one can apply different
    1112            strategies to different sub-projects. The strategy
    1113            specifications may appear in requirements file of any package
    1114            of a project or in the <tt>cmt/project.cmt</tt>
    1115      project file.
    1116       <p>By default a project inherits the strategies of its
    1117              predecessor. Or if it's the top project, it follows the default
    1118              strategies defined by CMT (Refer to this
    1119       <a href="#The default strategies defined in CMT">appendix</a>
    1120        to see the default
    1121            strategies currently defined by CMT).</p>
    1122     <p></p>
    1123   </li>
    1124     <li>A CMT command displays the projects and their associated CMTPATH:
    1125 <pre>
    1126 &gt; cmt show projects
    1127 &gt; cmt show project &lt;project-name&gt;</pre>
    1128     <p></p>
    1129   </li>
    1130     <li>The installation area mechanism is strongly connected with
    1131            the <tt>CMTPATH</tt>
    1132      hierarchy. Therefore it will also be connected with
    1133            the project concept. This will happen through several
    1134            mechanisms:<p></p>
    1135       <ul>
    1136         <li>The <tt>&lt;project&gt;</tt>
    1137          parameter is expanded in the
    1138         <tt>cmtpath_pattern</tt>
    1139          construct in addition to the
    1140         <tt>&lt;path&gt;</tt>
    1141          parameter. This parameter is assigned
    1142                    the name of the project associated with the running
    1143         <tt>CMTPATH</tt>
    1144          entry.  <p></p>
    1145       </li>
    1146         <li>The <tt>&lt;project&gt;</tt>
    1147          parameter is also available
    1148                    for normal patterns. In this case it is assigned the
    1149                    project name associated with the cmtpath parameter for the
    1150                    current package.<p></p>
    1151       </li>
    1152         <li>Every project defines a tag of the same name, and the
    1153                    tag of the current project is active.<p></p>
    1154       </li>
    1155         <li>The <tt>cmt_installarea_prefix</tt>
    1156          macro is specialized
    1157         <i>per project</i>
    1158          and every project may override the
    1159         <tt>&lt;project&gt;_installarea_prefix</tt>
    1160          macro. The
    1161                    default value of any
    1162         <tt>&lt;project&gt;_installarea_prefix</tt>
    1163          is
    1164         <tt>${cmt_installarea_prefix}</tt>
    1165         <p></p>
    1166       </li>
    1167     </ul>
    1168     <p></p>
    1169   </li>
    1170     <li>Every strategy setting defines two mutually exclusive tags and activates one of them.
    1171 <pre class="cmt">
    1172 &lt;project&gt;_&lt;have_item&gt;
    1173 &lt;project&gt;_&lt;have_not_item&gt; </pre>
    1174              Examples
    1175 <pre class="cmt">
    1176 &lt;project&gt;_prototypes
    1177 &lt;project&gt;_no_prototypes
    1178 &lt;project&gt;_with_install_area
    1179 &lt;project&gt;_without_install_area
    1180 &lt;project&gt;_config
    1181 &lt;project&gt;_no_config
    1182 &lt;project&gt;_root
    1183 &lt;project&gt;_no_root
    1184 &lt;project&gt;_cleanup
    1185 &lt;project&gt;_no_cleanup</pre>
    1186     <p></p>
    1187   </li>
    1188 </ul>
    1189 </blockquote>
    1190 <hr><h2><a name="Assigning semantics to packages. Common practices"></a><a href="#index"><tt>&nbsp;8</tt></a> - Assigning semantics to packages. Common practices</h2>
     1212<hr><h2><a name="Assigning semantics to packages. Common practices"></a><a href="#index"><tt>&nbsp;7</tt></a> - Assigning semantics to packages. Common practices</h2>
    11911213<blockquote>
    11921214    Generally speaking, CMT makes no assumption on how or why is used
    11931215    a package. However past experience has shown that packages can be
    11941216    categorized according to their purpose or their type of contents.
    1195 <hr><h3><a name="The primary package"></a><a href="#index"><tt>&nbsp;8.&nbsp;1</tt></a> - The primary package</h3>
     1217<hr><h3><a name="The primary package"></a><a href="#index"><tt>&nbsp;7.&nbsp;1</tt></a> - The primary package</h3>
    11961218<blockquote>
    11971219      This is the most general and basic pakage type, which provides
     
    12211243 statements.</p>
    12221244</blockquote>
    1223 <hr><h3><a name="The policy package"></a><a href="#index"><tt>&nbsp;8.&nbsp;2</tt></a> - The policy package</h3>
     1245<hr><h3><a name="The policy package"></a><a href="#index"><tt>&nbsp;7.&nbsp;2</tt></a> - The policy package</h3>
    12241246<blockquote>
    12251247      This kind of package only provides conventions, working methods,
     
    12641286      Then the global policy package will use them
    12651287</blockquote>
    1266 <hr><h3><a name="The container or management package"></a><a href="#index"><tt>&nbsp;8.&nbsp;3</tt></a> - The container or management package</h3>
     1288<hr><h3><a name="The container or management package"></a><a href="#index"><tt>&nbsp;7.&nbsp;3</tt></a> - The container or management package</h3>
    12671289<blockquote>
    12681290      In large projects, it's often useful to decompose the software
     
    12901312      packages of the domain.</p>
    12911313</blockquote>
    1292 <hr><h3><a name="The release package"></a><a href="#index"><tt>&nbsp;8.&nbsp;4</tt></a> - The release package</h3>
     1314<hr><h3><a name="The release package"></a><a href="#index"><tt>&nbsp;7.&nbsp;4</tt></a> - The release package</h3>
    12931315<blockquote>
    12941316      This package is one particular example of the container concept,
     
    12981320      assigned to the project releases themselves.
    12991321</blockquote>
    1300 <hr><h3><a name="The glue or interface package"></a><a href="#index"><tt>&nbsp;8.&nbsp;5</tt></a> - The glue or interface package</h3>
     1322<hr><h3><a name="The glue or interface package"></a><a href="#index"><tt>&nbsp;7.&nbsp;5</tt></a> - The glue or interface package</h3>
    13011323<blockquote>
    13021324      This kind of package defines an interface to an existing
     
    13261348</blockquote>
    13271349</blockquote>
    1328 <hr><h2><a name="Managing site dependent features - The CMTSITE environment variable"></a><a href="#index"><tt>&nbsp;9</tt></a> - Managing site dependent features - The CMTSITE environment variable</h2>
     1350<hr><h2><a name="Managing site dependent features - The CMTSITE environment variable"></a><a href="#index"><tt>&nbsp;8</tt></a> - Managing site dependent features - The CMTSITE environment variable</h2>
    13291351<blockquote>
    13301352  <p>Software bases managed by <tt>CMT</tt>
     
    13621384      LBNL  "/auto/atlas/sw/lhcxx"</pre>
    13631385</blockquote>
    1364 <hr><h2><a name="Configuring a package"></a><a href="#index"><tt>10</tt></a> - Configuring a package</h2>
     1386<hr><h2><a name="Configuring a package"></a><a href="#index"><tt>&nbsp;9</tt></a> - Configuring a package</h2>
    13651387<blockquote>
    13661388  <p>The first ingredient of a proper package configuration is the
     
    14611483</ul>
    14621484</blockquote>
    1463 <hr><h2><a name="Selecting a specific configuration"></a><a href="#index"><tt>11</tt></a> - Selecting a specific configuration</h2>
     1485<hr><h2><a name="Selecting a specific configuration"></a><a href="#index"><tt>10</tt></a> - Selecting a specific configuration</h2>
    14641486<blockquote>
    14651487    A configuration describes the conditions in which the package has
     
    14971519 between machines running different operating
    14981520    systems, or when a project has to be deployed on several sites.
    1499 <hr><h3><a name="Describing a configuration"></a><a href="#index"><tt>11.&nbsp;1</tt></a> - Describing a configuration</h3>
     1521<hr><h3><a name="Describing a configuration"></a><a href="#index"><tt>10.&nbsp;1</tt></a> - Describing a configuration</h3>
    15001522<blockquote>
    15011523  <p><tt>CMT</tt>
     
    16991721</ol>
    17001722</blockquote>
    1701 <hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>11.&nbsp;2</tt></a> - Defining the user tags</h3>
     1723<hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>10.&nbsp;2</tt></a> - Defining the user tags</h3>
    17021724<blockquote>
    17031725  <p>The user configuration tags can generally be specified though
     
    17651787</ul>
    17661788</blockquote>
    1767 <hr><h3><a name="Activating tags"></a><a href="#index"><tt>11.&nbsp;3</tt></a> - Activating tags</h3>
     1789<hr><h3><a name="Activating tags"></a><a href="#index"><tt>10.&nbsp;3</tt></a> - Activating tags</h3>
    17681790<blockquote>
    17691791      By default, <tt>CMTCONFIG</tt>
     
    19111933</blockquote>
    19121934</blockquote>
    1913 <hr><h2><a name="Working on a package"></a><a href="#index"><tt>12</tt></a> - Working on a package</h2>
     1935<hr><h2><a name="Working on a package"></a><a href="#index"><tt>11</tt></a> - Working on a package</h2>
    19141936<blockquote>
    19151937  <p>In this section, we'll see, through a quite simple scenario,
     
    19181940   of the <tt>Foo</tt>
    19191941    package already used in this document. </p>
    1920 <hr><h3><a name="Working on a library"></a><a href="#index"><tt>12.&nbsp;1</tt></a> - Working on a library</h3>
     1942<hr><h3><a name="Working on a library"></a><a href="#index"><tt>11.&nbsp;1</tt></a> - Working on a library</h3>
    19211943<blockquote>
    19221944  <p>Let's assume, as a first example, that the <tt>Foo</tt>
     
    20662088      operation</p>
    20672089</blockquote>
    2068 <hr><h3><a name="Working on an application"></a><a href="#index"><tt>12.&nbsp;2</tt></a> - Working on an application</h3>
     2090<hr><h3><a name="Working on an application"></a><a href="#index"><tt>11.&nbsp;2</tt></a> - Working on an application</h3>
    20692091<blockquote>
    20702092  <p>Assume we now want to add a test program to our
     
    21512173</ul>
    21522174</blockquote>
    2153 <hr><h3><a name="Working on a test or external application"></a><a href="#index"><tt>12.&nbsp;3</tt></a> - Working on a test or external application</h3>
     2175<hr><h3><a name="Working on a test or external application"></a><a href="#index"><tt>11.&nbsp;3</tt></a> - Working on a test or external application</h3>
    21542176<blockquote>
    21552177      It is also possible to work on a <i>test</i>
     
    21782200      interface are still available in these conditions. </p>
    21792201</blockquote>
    2180 <hr><h3><a name="Construction of a global environment"></a><a href="#index"><tt>12.&nbsp;4</tt></a> - Construction of a global environment</h3>
    2181 <blockquote>
    2182   <p>A software base generally consists in many <i>packages</i>
    2183   ,
    2184         some of them providing <i>libraries</i>
    2185    or <i>documents</i>
    2186   ,
    2187         others providing <i>applications</i>
    2188   , some providing both, some
    2189         providing just <i>glues</i>
    2190    towards external software
    2191       products.</p>
    2192   <p> On another view, this software base may a mix of packages
    2193         shared between several projects and sets of packages specific to
    2194         various projects. One may have several software bases as well
    2195         (combined using the <tt>CMTPATH</tt>
    2196  environment variable). </p>
    2197   <p> In such contexts, it is often desirable that a given project
    2198         defines its own selection of all existing packages. This can
    2199         easily be done with <tt>CMT</tt>
    2200    by defining a <i>project</i>
    2201         package, containing only <tt>use</tt>
    2202    statements towards the
    2203         appropriate selection of packages for this particular
    2204       project. </p>
    2205   <p>Let's consider as an example the project named
    2206   <tt>MyProject</tt>
    2207   . We may create the package named
    2208   <tt>MyProject</tt>
    2209  similarly to any other package : </p>
    2210 <pre>
    2211 csh&gt; cd .....
    2212 csh&gt; cmt create MyProject v1 /ProjectB</pre>
    2213   <p> Then the <tt>&nbsp;<a HREF='#The requirements file'>requirements</a>&nbsp;</tt>
    2214    file of this new package
    2215         will simply contain a set of <tt>use</tt>
    2216    statements, defining the
    2217   <i>official</i>
    2218    set of validated versions of the packages
    2219         required for the project. This mechanism also represents the
    2220         notion of <i>global release</i>
    2221    traditionally addressed in
    2222       configuration management environments </p>
    2223 <pre class="cmt">
    2224 package MyProject
    2225 
    2226 use Cm v7r6
    2227 use Db v4r3
    2228 use El v4r2
    2229 use Su v5
    2230 use DbUI v1r2 Db
    2231 use ElUI v1r1 El
    2232 use VSUUI v3  Su/VSU
    2233 use VMM   v1
    2234 use VPC   v3 </pre>
    2235   <p>Then any user wanting to access the so-called <i>official</i>
    2236         release of the package set appropriate to the project
    2237   <tt>MyProject</tt>
    2238    will simply do (typically within its login
    2239       shell script) : </p>
    2240 <pre>
    2241 # a login script
    2242 
    2243 ...
    2244 
    2245 source /ProjectB/MyProject/v1/cmt/setup.csh </pre>
    2246   <p>Later on, future evolutions of the <tt>MyProject</tt>
    2247    package
    2248         will reflect progressive integration steps, which
    2249   <i>validate</i>
    2250  the evolutions of each referenced package. </p>
    2251 </blockquote>
    2252 </blockquote>
    2253 <hr><h2><a name="Defining a document generator"></a><a href="#index"><tt>13</tt></a> - Defining a document generator</h2>
     2202</blockquote>
     2203<hr><h2><a name="Defining a document generator"></a><a href="#index"><tt>12</tt></a> - Defining a document generator</h2>
    22542204<blockquote>
    22552205  <p> In a Unix environment, documents are built using <tt>make</tt>
     
    23122262      containing one main target. Both the resulting make fragment and
    23132263    the make target will have the name of the constituent.</p>
    2314 <hr><h3><a name="An example : the tex document-style"></a><a href="#index"><tt>13.&nbsp;1</tt></a> - An example : the tex document-style</h3>
     2264<hr><h3><a name="An example : the tex document-style"></a><a href="#index"><tt>12.&nbsp;1</tt></a> - An example : the tex document-style</h3>
    23152265<blockquote>
    23162266  <p>
     
    24402390</ul>
    24412391</blockquote>
    2442 <hr><h3><a name="How to create and install a new document style"></a><a href="#index"><tt>13.&nbsp;2</tt></a> - How to create and install a new document style</h3>
     2392<hr><h3><a name="How to create and install a new document style"></a><a href="#index"><tt>12.&nbsp;2</tt></a> - How to create and install a new document style</h3>
    24432393<blockquote>
    24442394<blockquote><hr>
     
    24632413            same subdirectory, one of them will be the <i>header</i>
    24642414     of
    2465             the generated complete fragment, the other will be its
     2415     the generated complete fragment, the other will be its
    24662416    <i>trailer</i>
    24672417  </li>
     
    25942544</center>
    25952545</blockquote>
    2596 <hr><h3><a name="Examples"></a><a href="#index"><tt>13.&nbsp;3</tt></a> - Examples</h3>
     2546<hr><h3><a name="Examples"></a><a href="#index"><tt>12.&nbsp;3</tt></a> - Examples</h3>
    25972547<blockquote>
    25982548  <ol>
     
    26512601</blockquote>
    26522602</blockquote>
    2653 <hr><h2><a name="The tools provided by CMT"></a><a href="#index"><tt>14</tt></a> - The tools provided by CMT</h2>
     2603<hr><h2><a name="The tools provided by CMT"></a><a href="#index"><tt>13</tt></a> - The tools provided by CMT</h2>
    26542604<blockquote>
    26552605        The set of conventions and tools provided by <tt>CMT</tt>
     
    26852635            commands available through the <tt>cmt</tt>
    26862636 user interface. </p>
    2687 <hr><h3><a name="The requirements file"></a><a href="#index"><tt>14.&nbsp;1</tt></a> - The requirements file</h3>
    2688 <blockquote>
    2689 <hr><h4><a name="The general requirements syntax"></a><a href="#index"><tt>14.&nbsp;1.&nbsp;1</tt></a> - The general requirements syntax</h4>
     2637<hr><h3><a name="The requirements file"></a><a href="#index"><tt>13.&nbsp;1</tt></a> - The requirements file</h3>
     2638<blockquote>
     2639<hr><h4><a name="The general requirements syntax"></a><a href="#index"><tt>13.&nbsp;1.&nbsp;1</tt></a> - The general requirements syntax</h4>
    26902640<blockquote>
    26912641  <ul>
     
    27012651                      by space characters).</p>
    27022652      <p>Each statement is composed of words separated with spaces
    2703                or tabulations.</p>
     2653                      or tabulations.</p>
    27042654      <p>The first word of a statement is the name of the
    27052655                      configuration parameter.</p>
     
    27522702      <p>Comments : they start with the <tt>#</tt>
    27532703       character and
    2754                   extend up to the end of the current line.
     2704                        extend up to the end of the current line.
    27552705    </p>
    27562706  </li>
     
    27602710</blockquote>
    27612711</blockquote>
    2762 <hr><h3><a name="The concepts handled in the requirements file"></a><a href="#index"><tt>14.&nbsp;2</tt></a> - The concepts handled in the requirements file</h3>
    2763 <blockquote>
    2764 <hr><h4><a name="The package structuring style "></a><a href="#index"><tt>14.&nbsp;2.&nbsp;1</tt></a> - The package structuring style </h4>
    2765 <blockquote>
    2766 </blockquote>
    2767 <hr><h4><a name="Meta-information : author, manager"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;2</tt></a> - Meta-information : author, manager</h4>
     2712<hr><h3><a name="The concepts handled in the requirements file"></a><a href="#index"><tt>13.&nbsp;2</tt></a> - The concepts handled in the requirements file</h3>
     2713<blockquote>
     2714<hr><h4><a name="The package structuring style "></a><a href="#index"><tt>13.&nbsp;2.&nbsp;1</tt></a> - The package structuring style </h4>
     2715<blockquote>
     2716</blockquote>
     2717<hr><h4><a name="Meta-information : author, manager"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;2</tt></a> - Meta-information : author, manager</h4>
    27682718<blockquote>
    27692719            The author and manager names
    27702720</blockquote>
    2771 <hr><h4><a name="package, version"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;3</tt></a> - package, version</h4>
     2721<hr><h4><a name="package, version"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;3</tt></a> - package, version</h4>
    27722722<blockquote>
    27732723            The package name and version. These statements are purely
    27742724            informational.
    27752725</blockquote>
    2776 <hr><h4><a name="Constituents : application, library, document"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;4</tt></a> - Constituents : application, library, document</h4>
     2726<hr><h4><a name="Constituents : application, library, document"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;4</tt></a> - Constituents : application, library, document</h4>
    27772727<blockquote>
    27782728  <p>Describe the composition of a constituent. Application
     
    30342984</ol>
    30352985</blockquote>
    3036 <hr><h4><a name="Groups"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;5</tt></a> - Groups</h4>
     2986<hr><h4><a name="Groups"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;5</tt></a> - Groups</h4>
    30372987<blockquote>
    30382988            Groups permit the organization of the constituents that must
     
    30533003                features, graphical libraries) and therefore might require a
    30543004                controled re-build. This is especially useful for having these
    3055                 constituents only rebuilt on demand rather than rebuilt
     3005      constituents only rebuilt on demand rather than rebuilt
    30563006              automatically when the default make command is run.</p>
    30573007<p>One could, for instance specify within the requirements file :</p>
     
    30833033 related constituents.</p>
    30843034</blockquote>
    3085 <hr><h4><a name="Languages"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;6</tt></a> - Languages</h4>
     3035<hr><h4><a name="Languages"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;6</tt></a> - Languages</h4>
    30863036<blockquote>
    30873037            Some computer languages are known by default by <tt>CMT</tt>
     
    31793129.
    31803130</blockquote>
    3181 <hr><h4><a name="Symbols"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;7</tt></a> - Symbols</h4>
     3131<hr><h4><a name="Symbols"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;7</tt></a> - Symbols</h4>
    31823132<blockquote>
    31833133  <p>This is a generic concept supporting the notion of
     
    35533503      VisualC         "link.exe /nologo /machine:IX86 "
    35543504</pre>
    3555 <hr><h5><a name="actions"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;7.&nbsp;1</tt></a> - actions</h5>
     3505<hr><h5><a name="actions"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;7.&nbsp;1</tt></a> - actions</h5>
    35563506<blockquote>
    35573507              Actions are one of the possible symbols. Their
     
    36273577</blockquote>
    36283578</blockquote>
    3629 <hr><h4><a name="use"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;8</tt></a> - use</h4>
     3579<hr><h4><a name="use"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;8</tt></a> - use</h4>
    36303580<blockquote>
    36313581  <p>Describe the relationships with other packages; the
     
    37143664</ul>
    37153665</blockquote>
    3716 <hr><h4><a name="patterns"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;9</tt></a> - patterns</h4>
     3666<hr><h4><a name="patterns"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;9</tt></a> - patterns</h4>
    37173667<blockquote>
    37183668  <p>Often, similar configuration items are needed over a
     
    38313781  <p>Then, in addition, user defined templates can be installed
    38323782                within the pattern definitions. Their actual value will be
    3833               provided as arguments to the apply_pattern statement.</p>
     3783provided as arguments to the apply_pattern statement.</p>
    38343784  <p>User defined templates that have not been assigned a
    38353785              value when the pattern is applied are simply ignored
     
    38423792      <tt>${&lt;package&gt;_root}/src</tt>
    38433793      . However, often projects
    3844                 need to override this default convention, and typical
     3794                        need to override this default convention, and typical
    38453795                        example is to set it to a branch named with the package
    38463796                        name. This convention is easily applied by defining a
     
    38813831    <p>Installing a systematic test application in all packages</p>
    38823832      <p>Quality assurance requirements might specify that every
    3883             package should provide a test program. One way to enforce
     3833                        package should provide a test program. One way to enforce
    38843834                        this is to build a global pattern declaring this
    38853835                        application. Then every make command would naturally
     
    38933843  </li>
    38943844</ol>
    3895 <hr><h5><a name="Applying a pattern"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;9.&nbsp;1</tt></a> - Applying a pattern</h5>
     3845<hr><h5><a name="Applying a pattern"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;9.&nbsp;1</tt></a> - Applying a pattern</h5>
    38963846<blockquote>
    38973847              According to whether the <tt>-global</tt>
     
    39583908</blockquote>
    39593909</blockquote>
    3960 <hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>14.&nbsp;2.10</tt></a> - cmtpath_patterns</h4>
     3910<hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>13.&nbsp;2.10</tt></a> - cmtpath_patterns</h4>
    39613911<blockquote>
    39623912  <p>These patterns act quite similarly to the <i>global</i>
     
    40053955</p>
    40063956</blockquote>
    4007 <hr><h4><a name="branches"></a><a href="#index"><tt>14.&nbsp;2.11</tt></a> - branches</h4>
     3957<hr><h4><a name="branches"></a><a href="#index"><tt>13.&nbsp;2.11</tt></a> - branches</h4>
    40083958<blockquote>
    40093959  <p>Describe the specific directory branches to be added while
     
    40203970.</p>
    40213971</blockquote>
    4022 <hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>14.&nbsp;2.12</tt></a> - Strategy specifications</h4>
     3972<hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>13.&nbsp;2.12</tt></a> - Strategy specifications</h4>
    40233973<blockquote>
    40243974  <p>Users can control the behaviour of <tt>CMT</tt>
     
    41414091&lt;project&gt;_no_cleanup</pre>
    41424092</blockquote>
    4143 <hr><h4><a name="setup_script, cleanup_script"></a><a href="#index"><tt>14.&nbsp;2.13</tt></a> - setup_script, cleanup_script</h4>
     4093<hr><h4><a name="setup_script, cleanup_script"></a><a href="#index"><tt>13.&nbsp;2.13</tt></a> - setup_script, cleanup_script</h4>
    41444094<blockquote>
    41454095  <p>Specify user defined configuration scripts, which will be
     
    41674117).</p>
    41684118</blockquote>
    4169 <hr><h4><a name="include_path"></a><a href="#index"><tt>14.&nbsp;2.14</tt></a> - include_path</h4>
     4119<hr><h4><a name="include_path"></a><a href="#index"><tt>13.&nbsp;2.14</tt></a> - include_path</h4>
    41704120<blockquote>
    41714121  <p>Override the specification for the default include search
     
    41854135 instead).</p>
    41864136</blockquote>
    4187 <hr><h4><a name="include_dirs"></a><a href="#index"><tt>14.&nbsp;2.15</tt></a> - include_dirs</h4>
     4137<hr><h4><a name="include_dirs"></a><a href="#index"><tt>13.&nbsp;2.15</tt></a> - include_dirs</h4>
    41884138<blockquote>
    41894139<p>Add explicit specifications for include access paths.</p>
    41904140</blockquote>
    4191 <hr><h4><a name="make_fragment"></a><a href="#index"><tt>14.&nbsp;2.16</tt></a> - make_fragment</h4>
     4141<hr><h4><a name="make_fragment"></a><a href="#index"><tt>13.&nbsp;2.16</tt></a> - make_fragment</h4>
    41924142<blockquote>
    41934143  <p>This statement specifies a specialized makefile fragment,
     
    42674217                of language definitions (C, C++, Fortran, Java, Lex, Yacc)
    42684218                is provided by CMT itself but it is expected that projects
    4269              add new languages according to their needs. Event if the
     4219                add new languages according to their needs. Event if the
    42704220                make fragment meant to be the implementation of a language
    42714221                support is declared, the language support itself must be
     
    43334283</p>
    43344284</blockquote>
    4335 <hr><h4><a name="public, private"></a><a href="#index"><tt>14.&nbsp;2.17</tt></a> - public, private</h4>
     4285<hr><h4><a name="public, private"></a><a href="#index"><tt>13.&nbsp;2.17</tt></a> - public, private</h4>
    43364286<blockquote>
    43374287  <p>The <tt>public</tt>
     
    43674317            the sub-trees whether they are public or private (in order
    43684318            to ensure the hierarchy dependencies)</p>
    4369 <hr><h5><a name="Scoping sections"></a><a href="#index"><tt>14.&nbsp;2.17.&nbsp;1</tt></a> - Scoping sections</h5>
     4319<hr><h5><a name="Scoping sections"></a><a href="#index"><tt>13.&nbsp;2.17.&nbsp;1</tt></a> - Scoping sections</h5>
    43704320<blockquote>
    43714321              By using the <tt>public</tt>
     
    44274377</blockquote>
    44284378</blockquote>
    4429 <hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>14.&nbsp;2.18</tt></a> - tag, apply_tag</h4>
     4379<hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>13.&nbsp;2.18</tt></a> - tag, apply_tag</h4>
    44304380<blockquote>
    44314381  <p>The <tt>tag</tt>
     
    44784428</blockquote>
    44794429</blockquote>
    4480 <hr><h3><a name="The general cmt user interface"></a><a href="#index"><tt>14.&nbsp;3</tt></a> - The general cmt user interface</h3>
     4430<hr><h3><a name="The general cmt user interface"></a><a href="#index"><tt>13.&nbsp;3</tt></a> - The general cmt user interface</h3>
    44814431<blockquote>
    44824432          This utility (a shell script combined with a <tt>C++</tt>
     
    45184468   config                  : generate setup and cleanup scripts
    45194469   create &lt;package&gt; &lt;version&gt; [&lt;path&gt;] : create and configure a new package
    4520    create_project &lt;project&gt; : create and configure a new project
     4470   create_project &lt;project&gt; &lt;name&gt; [&lt;path&gt;] : create and configure a new project
    45214471   cvsbranches &lt;module&gt;      : display the subdirectories for a module
    45224472   cvssubpackagess &lt;module&gt;  : display the subpackages for a module
     
    45984548   -no_cleanup             : inhibit install area cleanup</font></i></pre>
    45994549<p>The following sections present the detail of each available command. </p>
    4600 <hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;1</tt></a> - cmt broadcast</h4>
     4550<hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;1</tt></a> - cmt broadcast</h4>
    46014551<blockquote>
    46024552            This command tries to repeatedly execute a shell command in the
     
    46634613   list</li>
    46644614</ol>
    4665 <hr><h5><a name="Specifying the shell command"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;1.&nbsp;1</tt></a> - Specifying the shell command</h5>
     4615<hr><h5><a name="Specifying the shell command"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;1.&nbsp;1</tt></a> - Specifying the shell command</h5>
    46664616<blockquote>
    46674617  <p>A priori any Unix or DOS shell command can be specified
     
    46804630            sometimes useful to have two levels of quotes</p>
    46814631</blockquote>
    4682 <hr><h5><a name="Templates in the shell command"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;1.&nbsp;2</tt></a> - Templates in the shell command</h5>
     4632<hr><h5><a name="Templates in the shell command"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;1.&nbsp;2</tt></a> - Templates in the shell command</h5>
    46834633<blockquote>
    46844634  <p>Similarly to what exists in the <a href="#patterns">pattern</a>
     
    47474697</blockquote>
    47484698</blockquote>
    4749 <hr><h4><a name="cmt build &lt;option&gt;"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;2</tt></a> - cmt build &lt;option&gt;</h4>
     4699<hr><h4><a name="cmt build &lt;option&gt;"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;2</tt></a> - cmt build &lt;option&gt;</h4>
    47504700<blockquote>
    47514701  <p>The actions associated with the build options are
     
    48024752       for Unix environments. The main makefile is
    48034753                        expected to be named <tt>NMake</tt>
    4804       and the standard header
     4754       and the standard header
    48054755                        is named <tt>NMakefile.header</tt>
    48064756    </p>
     
    48364786    <li><tt>msdev</tt>
    48374787      <p>This command generates workspace (.dsw) and project
    4838                       (.dsp) files required for the MSDev tool. </p>
     4788     (.dsp) files required for the MSDev tool. </p>
    48394789  </li>
    48404790    <li><tt>vsnet</tt>
     
    48784828                        using the <tt>build_strategy</tt>
    48794829       cmt statement, providing
    4880                       either the "prototypes" or the "no_prototypes" values. </p>
     4830               either the "prototypes" or the "no_prototypes" values. </p>
    48814831      <p>In addition, any constituent may locally override this
    48824832                        strategy using the "-prototypes" or "-no_prototypes"
     
    49044854</ul>
    49054855</blockquote>
    4906 <hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;3</tt></a> - cmt check configuration</h4>
     4856<hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;3</tt></a> - cmt check configuration</h4>
    49074857<blockquote>
    49084858            This command reads the hierarchy of requirements files
     
    49114861<p>An empty output means that everything is fine. </p>
    49124862</blockquote>
    4913 <hr><h4><a name="cmt check files &lt;reference-file&gt; &lt;new-file&gt;"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;4</tt></a> - cmt check files &lt;reference-file&gt; &lt;new-file&gt;</h4>
     4863<hr><h4><a name="cmt check files &lt;reference-file&gt; &lt;new-file&gt;"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;4</tt></a> - cmt check files &lt;reference-file&gt; &lt;new-file&gt;</h4>
    49144864<blockquote>
    49154865            This command compares the reference file to the new file, and
     
    49204870) is produced. </p>
    49214871</blockquote>
    4922 <hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>14.&nbsp;3.&nbsp;5</tt></a> - cmt checkout ...</h4>
    4923 <blockquote>
    4924             See the <a href="#Using cvs together with CMT">paragraph</a>
     4872<hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>13.&nbsp;3.&nbsp;5</tt></a> - cmt checkout ...</h4>
     4873<blockquote>
     4874        See the <a href="#Using cvs together with CMT">paragraph</a>
    49254875            on how to use cvs together with <tt>CMT</tt>
    49264876, and more specifically the
     
    49284878.
    49294879</blockquote>
    4930 <hr><h4><a name="cmt co ..."></a><a href="#index"><tt>14.&nbsp;3.&nbsp;6</tt></a> - cmt co ...</h4>
     4880<hr><h4><a name="cmt co ..."></a><a href="#index"><tt>13.&nbsp;3.&nbsp;6</tt></a> - cmt co ...</h4>
    49314881<blockquote>
    49324882            This is simply a short cut to the <tt>cmt checkout</tt>
    49334883 command.
    49344884</blockquote>
    4935 <hr><h4><a name="cmt cleanup [-csh|-sh]"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;7</tt></a> - cmt cleanup [-csh|-sh]</h4>
     4885<hr><h4><a name="cmt cleanup [-csh|-sh]"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;7</tt></a> - cmt cleanup [-csh|-sh]</h4>
    49364886<blockquote>
    49374887            This command generates (to the standard output) a set of shell
     
    49434893 command. </p>
    49444894</blockquote>
    4945 <hr><h4><a name="cmt config"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;8</tt></a> - cmt config</h4>
     4895<hr><h4><a name="cmt config"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;8</tt></a> - cmt config</h4>
    49464896<blockquote>
    49474897  <p>This command (re-)generates the setup scripts and the
     
    49834933 are required any longer.</p>
    49844934</blockquote>
    4985 <hr><h4><a name="cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;9</tt></a> - cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</h4>
     4935<hr><h4><a name="cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;9</tt></a> - cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</h4>
    49864936<blockquote>
    49874937  <p>
     
    50064956</ul>
    50074957</blockquote>
    5008 <hr><h4><a name="cmt expand model [-strict] &lt;model-string&gt;"></a><a href="#index"><tt>14.&nbsp;3.10</tt></a> - cmt expand model [-strict] &lt;model-string&gt;</h4>
     4958<hr><h4><a name="cmt expand model [-strict] &lt;model-string&gt;"></a><a href="#index"><tt>13.&nbsp;3.10</tt></a> - cmt expand model [-strict] &lt;model-string&gt;</h4>
    50094959<blockquote>
    50104960            This command produces on the standard output an
     
    51365086</ul>
    51375087</blockquote>
    5138 <hr><h4><a name="cmt filter &lt;in-file&gt; &lt;out-file&gt;"></a><a href="#index"><tt>14.&nbsp;3.11</tt></a> - cmt filter &lt;in-file&gt; &lt;out-file&gt;</h4>
     5088<hr><h4><a name="cmt filter &lt;in-file&gt; &lt;out-file&gt;"></a><a href="#index"><tt>13.&nbsp;3.11</tt></a> - cmt filter &lt;in-file&gt; &lt;out-file&gt;</h4>
    51395089<blockquote>
    51405090            This command reads &lt;in-file&gt;, substitutes all occurences
     
    51535103              configuration files, etc... </p>
    51545104</blockquote>
    5155 <hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>14.&nbsp;3.12</tt></a> - cmt help | --help</h4>
     5105<hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>13.&nbsp;3.12</tt></a> - cmt help | --help</h4>
    51565106<blockquote>
    51575107            This command shows the list of options of the <tt>cmt</tt>
    51585108 driver.
    51595109</blockquote>
    5160 <hr><h4><a name="cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]"></a><a href="#index"><tt>14.&nbsp;3.13</tt></a> - cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</h4>
     5110<hr><h4><a name="cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]"></a><a href="#index"><tt>13.&nbsp;3.13</tt></a> - cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</h4>
    51615111<blockquote>
    51625112            This command tries to set a lock onto the current package (or onto the
     
    51835133</ol>
    51845134</blockquote>
    5185 <hr><h4><a name="cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]"></a><a href="#index"><tt>14.&nbsp;3.14</tt></a> - cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</h4>
     5135<hr><h4><a name="cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]"></a><a href="#index"><tt>13.&nbsp;3.14</tt></a> - cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</h4>
    51865136<blockquote>
    51875137            This command removes one version of the specified package. If
     
    51975147              will be deleted.</p>
    51985148</blockquote>
    5199 <hr><h4><a name="cmt remove library_links"></a><a href="#index"><tt>14.&nbsp;3.15</tt></a> - cmt remove library_links</h4>
     5149<hr><h4><a name="cmt remove library_links"></a><a href="#index"><tt>13.&nbsp;3.15</tt></a> - cmt remove library_links</h4>
    52005150<blockquote>
    52015151            This command removes symbolic links towards all imported
     
    52065156            when one runs <tt>gmake clean</tt>
    52075157</blockquote>
    5208 <hr><h4><a name="cmt run [shell-command]"></a><a href="#index"><tt>14.&nbsp;3.16</tt></a> - cmt run [shell-command]</h4>
     5158<hr><h4><a name="cmt run [shell-command]"></a><a href="#index"><tt>13.&nbsp;3.16</tt></a> - cmt run [shell-command]</h4>
    52095159<blockquote>
    52105160            This command runs any shell command, in the context of the
     
    52265176            to any package context. </p>
    52275177</blockquote>
    5228 <hr><h4><a name="cmt set version &lt;version&gt;"></a><a href="#index"><tt>14.&nbsp;3.17</tt></a> - cmt set version &lt;version&gt;</h4>
     5178<hr><h4><a name="cmt set version &lt;version&gt;"></a><a href="#index"><tt>13.&nbsp;3.17</tt></a> - cmt set version &lt;version&gt;</h4>
    52295179<blockquote>
    52305180            This command creates and/or fills in the
     
    52385188            one CMT package.</p>
    52395189</blockquote>
    5240 <hr><h4><a name="cmt set versions"></a><a href="#index"><tt>14.&nbsp;3.18</tt></a> - cmt set versions</h4>
     5190<hr><h4><a name="cmt set versions"></a><a href="#index"><tt>13.&nbsp;3.18</tt></a> - cmt set versions</h4>
    52415191<blockquote>
    52425192              This command applies recursively the <tt>cmt set version
     
    52495199 files</p>
    52505200</blockquote>
    5251 <hr><h4><a name="cmt setup [-csh|-sh|-bat]"></a><a href="#index"><tt>14.&nbsp;3.19</tt></a> - cmt setup [-csh|-sh|-bat]</h4>
     5201<hr><h4><a name="cmt setup [-csh|-sh|-bat]"></a><a href="#index"><tt>13.&nbsp;3.19</tt></a> - cmt setup [-csh|-sh|-bat]</h4>
    52525202<blockquote>
    52535203            This command generates (to the standard output) a set of shell
     
    52645214 command.</p>
    52655215</blockquote>
    5266 <hr><h4><a name="cmt show &lt;option&gt;"></a><a href="#index"><tt>14.&nbsp;3.20</tt></a> - cmt show &lt;option&gt;</h4>
     5216<hr><h4><a name="cmt show &lt;option&gt;"></a><a href="#index"><tt>13.&nbsp;3.20</tt></a> - cmt show &lt;option&gt;</h4>
    52675217<blockquote>
    52685218  <ul>
     
    53205270      <li><tt>groups</tt>
    53215271        <p>This command displays all groups possibly defined
    5322                     in constituents of the current package (using the
     5272                        in constituents of the current package (using the
    53235273          <tt>-group=&lt;<i>group-name</i>
    53245274        &gt;</tt>
     
    55675517</ul>
    55685518</blockquote>
    5569 <hr><h4><a name="cmt system"></a><a href="#index"><tt>14.&nbsp;3.21</tt></a> - cmt system</h4>
     5519<hr><h4><a name="cmt system"></a><a href="#index"><tt>13.&nbsp;3.21</tt></a> - cmt system</h4>
    55705520<blockquote>
    55715521            This command displays the current value assigned by default to
     
    55735523 environment variable.
    55745524</blockquote>
    5575 <hr><h4><a name="cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]"></a><a href="#index"><tt>14.&nbsp;3.22</tt></a> - cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</h4>
     5525<hr><h4><a name="cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]"></a><a href="#index"><tt>13.&nbsp;3.22</tt></a> - cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</h4>
    55765526<blockquote>
    55775527            This command tries to remove a lock from the current package (or from the
     
    55965546</p>
    55975547</blockquote>
    5598 <hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>14.&nbsp;3.23</tt></a> - cmt version | --version</h4>
     5548<hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>13.&nbsp;3.23</tt></a> - cmt version | --version</h4>
    55995549<blockquote>
    56005550            This command shows the current verion of <tt>CMT</tt>
     
    56045554 sources.
    56055555</blockquote>
    5606 <hr><h4><a name="cmt cvstags &lt;module&gt;"></a><a href="#index"><tt>14.&nbsp;3.24</tt></a> - cmt cvstags &lt;module&gt;</h4>
     5556<hr><h4><a name="cmt cvstags &lt;module&gt;"></a><a href="#index"><tt>13.&nbsp;3.24</tt></a> - cmt cvstags &lt;module&gt;</h4>
    56075557<blockquote>
    56085558            (see the section on <i>how tu use </i>
     
    56125562 for more details on this command)
    56135563</blockquote>
    5614 <hr><h4><a name="cmt cvsbranches &lt;module&gt;"></a><a href="#index"><tt>14.&nbsp;3.25</tt></a> - cmt cvsbranches &lt;module&gt;</h4>
    5615 <blockquote>
    5616 </blockquote>
    5617 <hr><h4><a name="cmt cvssubpackages &lt;module&gt;"></a><a href="#index"><tt>14.&nbsp;3.26</tt></a> - cmt cvssubpackages &lt;module&gt;</h4>
    5618 <blockquote>
    5619 </blockquote>
    5620 </blockquote>
    5621 <hr><h3><a name="The setup and cleanup scripts"></a><a href="#index"><tt>14.&nbsp;4</tt></a> - The setup and cleanup scripts</h3>
     5564<hr><h4><a name="cmt cvsbranches &lt;module&gt;"></a><a href="#index"><tt>13.&nbsp;3.25</tt></a> - cmt cvsbranches &lt;module&gt;</h4>
     5565<blockquote>
     5566</blockquote>
     5567<hr><h4><a name="cmt cvssubpackages &lt;module&gt;"></a><a href="#index"><tt>13.&nbsp;3.26</tt></a> - cmt cvssubpackages &lt;module&gt;</h4>
     5568<blockquote>
     5569</blockquote>
     5570</blockquote>
     5571<hr><h3><a name="The setup and cleanup scripts"></a><a href="#index"><tt>13.&nbsp;4</tt></a> - The setup and cleanup scripts</h3>
    56225572<blockquote>
    56235573          They are produced by the <tt>cmt config</tt>
     
    56495599                the <tt>cmt setup</tt>
    56505600     utility into a temporary file and
    5651               running this temporary file.  </li>
     5601           running this temporary file.  </li>
    56525602    <li>
    56535603                  Activation of the user defined setup and cleanup scripts
     
    56695619          development area.
    56705620</blockquote>
    5671 <hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>14.&nbsp;5</tt></a> - cmt build prototype</h3>
     5621<hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>13.&nbsp;5</tt></a> - cmt build prototype</h3>
    56725622<blockquote>
    56735623          This command is only provided for development of <tt>C</tt>
     
    57115661</blockquote>
    57125662</blockquote>
    5713 <hr><h2><a name="Using cvs together with CMT"></a><a href="#index"><tt>15</tt></a> - Using cvs together with CMT</h2>
     5663<hr><h2><a name="Using cvs together with CMT"></a><a href="#index"><tt>14</tt></a> - Using cvs together with CMT</h2>
    57145664<blockquote>
    57155665  <p>Nothing special is apriori required by <tt>CMT</tt>
     
    57355685  <a href="#The internal mechanism of cmt cvs operations">appendix</a>
    57365686.</p>
    5737 <hr><h3><a name="Importing a package into a cvs repository"></a><a href="#index"><tt>15.&nbsp;1</tt></a> - Importing a package into a cvs repository</h3>
     5687<hr><h3><a name="Importing a package into a cvs repository"></a><a href="#index"><tt>14.&nbsp;1</tt></a> - Importing a package into a cvs repository</h3>
    57385688<blockquote>
    57395689  <p>Generally, everything composing a package (below the
     
    57875737 form. </p>
    57885738</blockquote>
    5789 <hr><h3><a name="Checking a package out from a cvs repository"></a><a href="#index"><tt>15.&nbsp;2</tt></a> - Checking a package out from a cvs repository</h3>
     5739<hr><h3><a name="Checking a package out from a cvs repository"></a><a href="#index"><tt>14.&nbsp;2</tt></a> - Checking a package out from a cvs repository</h3>
    57905740<blockquote>
    57915741  <p>Assuming the previous conventions on module name and version
     
    58145764  </li>
    58155765    <li>
    5816           creating a base directory with the package name is mandatory
     5766            creating a base directory with the package name is mandatory
    58175767            here, and is <i>not</i>
    58185768     taken into account by <tt>cvs</tt>
     
    58715821csh&gt; [g]make</pre>
    58725822</blockquote>
    5873 <hr><h3><a name="Querying CVS about some important infos"></a><a href="#index"><tt>15.&nbsp;3</tt></a> - Querying CVS about some important infos</h3>
     5823<hr><h3><a name="Querying CVS about some important infos"></a><a href="#index"><tt>14.&nbsp;3</tt></a> - Querying CVS about some important infos</h3>
    58745824<blockquote>
    58755825    It is possible, using the commands :
     
    59375887</ol>
    59385888</blockquote>
    5939 <hr><h3><a name="Working on a package, creating a new release"></a><a href="#index"><tt>15.&nbsp;4</tt></a> - Working on a package, creating a new release</h3>
     5889<hr><h3><a name="Working on a package, creating a new release"></a><a href="#index"><tt>14.&nbsp;4</tt></a> - Working on a package, creating a new release</h3>
    59405890<blockquote>
    59415891  <p>This section presents the way to instanciate a new release of
     
    59805930</ol>
    59815931</blockquote>
    5982 <hr><h3><a name="Getting a particular tagged version out of CVS"></a><a href="#index"><tt>15.&nbsp;5</tt></a> - Getting a particular tagged version out of CVS</h3>
     5932<hr><h3><a name="Getting a particular tagged version out of CVS"></a><a href="#index"><tt>14.&nbsp;5</tt></a> - Getting a particular tagged version out of CVS</h3>
    59835933<blockquote>
    59845934  <p>The previous example presented the standard case where one gets
     
    60085958</blockquote>
    60095959</blockquote>
    6010 <hr><h2><a name="Interfacing an external package with CMT"></a><a href="#index"><tt>16</tt></a> - Interfacing an external package with CMT</h2>
     5960<hr><h2><a name="Interfacing an external package with CMT"></a><a href="#index"><tt>15</tt></a> - Interfacing an external package with CMT</h2>
    60115961<blockquote>
    60125962  <p>Very often, external packages (typically commercial products, or
     
    60886038          packages. </p>
    60896039</blockquote>
    6090 <hr><h2><a name="The installation area mechanism"></a><a href="#index"><tt>17</tt></a> - The installation area mechanism</h2>
     6040<hr><h2><a name="The installation area mechanism"></a><a href="#index"><tt>16</tt></a> - The installation area mechanism</h2>
    60916041<blockquote>
    60926042  <p>CMT proposes and implements a flexible architecture for
     
    61256075      files, documentation and header files.</li>
    61266076</ol>
    6127 <hr><h3><a name="The default implementation"></a><a href="#index"><tt>17.&nbsp;1</tt></a> - The default implementation</h3>
     6077<hr><h3><a name="The default implementation"></a><a href="#index"><tt>16.&nbsp;1</tt></a> - The default implementation</h3>
    61286078<blockquote>
    61296079<p>It is provided in terms of</p>
     
    61966146    local patterns.</p>
    61976147</blockquote>
    6198 <hr><h3><a name="Tuning the installation area mechanisms"></a><a href="#index"><tt>17.&nbsp;2</tt></a> - Tuning the installation area mechanisms</h3>
     6148<hr><h3><a name="Tuning the installation area mechanisms"></a><a href="#index"><tt>16.&nbsp;2</tt></a> - Tuning the installation area mechanisms</h3>
    61996149<blockquote>
    62006150  <p>First of all every individual sub-project may activate or
     
    62756225</blockquote>
    62766226</blockquote>
    6277 <hr><h2><a name="Installing CMT for the first time"></a><a href="#index"><tt>18</tt></a> - Installing CMT for the first time</h2>
     6227<hr><h2><a name="Installing CMT for the first time"></a><a href="#index"><tt>17</tt></a> - Installing CMT for the first time</h2>
    62786228<blockquote>
    62796229  <P>These sections are of interest only if <tt>CMT</tt>
     
    62986248            or operate <tt>CMT</tt>
    62996249. </P>
    6300 <hr><h3><a name="Installing CMT on your Unix site"></a><a href="#index"><tt>18.&nbsp;1</tt></a> - Installing CMT on your Unix site</h3>
     6250<hr><h3><a name="Installing CMT on your Unix site"></a><a href="#index"><tt>17.&nbsp;1</tt></a> - Installing CMT on your Unix site</h3>
    63016251<blockquote>
    63026252  <P>The very first operation after dowloading <tt>CMT</tt>
     
    63756325csh&gt; gmake</pre>
    63766326</blockquote>
    6377 <hr><h3><a name="Installing CMT on a Windows or Windows NT site"></a><a href="#index"><tt>18.&nbsp;2</tt></a> - Installing CMT on a Windows or Windows NT site</h3>
     6327<hr><h3><a name="Installing CMT on a Windows or Windows NT site"></a><a href="#index"><tt>17.&nbsp;2</tt></a> - Installing CMT on a Windows or Windows NT site</h3>
    63786328<blockquote>
    63796329  <p>You first have to fetch the distribution kit from the Web at
     
    64276377</blockquote>
    64286378</blockquote>
    6429 <hr><h2><a name="Appendices"></a><a href="#index"><tt>19</tt></a> - Appendices</h2>
    6430 <blockquote>
    6431 <hr><h3><a name="Copyright"></a><a href="#index"><tt>19.&nbsp;1</tt></a> - Copyright</h3>
     6379<hr><h2><a name="Appendices"></a><a href="#index"><tt>18</tt></a> - Appendices</h2>
     6380<blockquote>
     6381<hr><h3><a name="Copyright"></a><a href="#index"><tt>18.&nbsp;1</tt></a> - Copyright</h3>
    64326382<blockquote>
    64336383  <center><b>Copyright LAL and Christian Arnault LAL-Orsay CNRS</b>
     
    64646414knowledge of the CeCILL license and that you accept its terms.</p>
    64656415</blockquote>
    6466 <hr><h3><a name="Standard make targets predefined in CMT"></a><a href="#index"><tt>19.&nbsp;2</tt></a> - Standard make targets predefined in CMT</h3>
     6416<hr><h3><a name="Standard make targets predefined in CMT"></a><a href="#index"><tt>18.&nbsp;2</tt></a> - Standard make targets predefined in CMT</h3>
    64676417<blockquote>
    64686418<p>These targets can always be listed through the following command : </p>
     
    65276477        <td>only build this
    65286478                  particular component (as opposed to the <tt>all</tt>
    6529           target that tries to build all components of this
     6479                  target that tries to build all components of this
    65306480                package)</td>
    65316481    </tr>
     
    65446494sh&gt; gmake Foo </pre>
    65456495</blockquote>
    6546 <hr><h3><a name="Standard macros predefined in CMT"></a><a href="#index"><tt>19.&nbsp;3</tt></a> - Standard macros predefined in CMT</h3>
    6547 <blockquote>
    6548 <hr><h4><a name="CMT static macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;1</tt></a> - CMT static macros</h4>
     6496<hr><h3><a name="Standard macros predefined in CMT"></a><a href="#index"><tt>18.&nbsp;3</tt></a> - Standard macros predefined in CMT</h3>
     6497<blockquote>
     6498<hr><h4><a name="CMT static macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;1</tt></a> - CMT static macros</h4>
    65496499<blockquote>
    65506500    These macros provide static data about CMT itself. They cannot be
     
    65836533</p>
    65846534</blockquote>
    6585 <hr><h4><a name="Structural macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;2</tt></a> - Structural macros</h4>
     6535<hr><h4><a name="Structural macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;2</tt></a> - Structural macros</h4>
    65866536<blockquote>
    65876537    These macros describe the structural conventions followed by
     
    66746624        <td><tt>cmt_compiler_version</tt>
    66756625      </td>
    6676       <td>the version of the currently visible C++ compiler </td>
     6626      <td>the version of the currently visible C++ compiler</td>
    66776627        <td><tt>&lt;none&gt;</tt>
    66786628      </td>
     
    66816631</p>
    66826632</blockquote>
    6683 <hr><h4><a name="Language related macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;3</tt></a> - Language related macros</h4>
     6633<hr><h4><a name="Language related macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;3</tt></a> - Language related macros</h4>
    66846634<blockquote>
    66856635    These macros are purely conventional. They are expected in the
     
    69336883</p>
    69346884</blockquote>
    6935 <hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;4</tt></a> - Package customizing macros</h4>
     6885<hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;4</tt></a> - Package customizing macros</h4>
    69366886<blockquote>
    69376887    These macros do not receive default values. They are all prefixed
     
    70917041        <td>specifies the base location for external software
    70927042                  described in glue packages. This macro is generally used to
    7093                specify the previous one</td>
     7043                specify the previous one</td>
    70947044    </tr>
    70957045  </table>
    70967046</p>
    70977047</blockquote>
    7098 <hr><h4><a name="Constituent specific customizing macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;5</tt></a> - Constituent specific customizing macros</h4>
     7048<hr><h4><a name="Constituent specific customizing macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;5</tt></a> - Constituent specific customizing macros</h4>
    70997049<blockquote>
    71007050    These macros do not receive any default values (ie they are empty
     
    71657115        &gt;_linkopts</tt>
    71667116         macro, which
    7167                 provides exported linker options required by clients
     7117                    provides exported linker options required by clients
    71687118                    packages to use the package libraries.
    71697119      </td>
     
    72047154      </td>
    72057155        <td>
    7206                     provides user defined dependency specifications for each
     7156            provides user defined dependency specifications for each
    72077157                    group. The typical use of this macro is fill it
    72087158                    with the name of the list of some other constituents
     
    72177167</p>
    72187168</blockquote>
    7219 <hr><h4><a name="Source specific customizing macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;6</tt></a> - Source specific customizing macros</h4>
     7169<hr><h4><a name="Source specific customizing macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;6</tt></a> - Source specific customizing macros</h4>
    72207170<blockquote>
    72217171    These macros do not receive any default values (ie they are empty
     
    72577207</p>
    72587208</blockquote>
    7259 <hr><h4><a name="Generated macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;7</tt></a> - Generated macros</h4>
     7209<hr><h4><a name="Generated macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;7</tt></a> - Generated macros</h4>
    72607210<blockquote>
    72617211  <p> These macros are automatically <i>generated</i>
     
    74517401</p>
    74527402</blockquote>
    7453 <hr><h4><a name="Macros related with the installation area mechanisms"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;8</tt></a> - Macros related with the installation area mechanisms</h4>
     7403<hr><h4><a name="Macros related with the installation area mechanisms"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;8</tt></a> - Macros related with the installation area mechanisms</h4>
    74547404<blockquote>
    74557405    These macros contain the parameterisation of the installation area
     
    75577507</p>
    75587508</blockquote>
    7559 <hr><h4><a name="Utility macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;9</tt></a> - Utility macros</h4>
     7509<hr><h4><a name="Utility macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;9</tt></a> - Utility macros</h4>
    75607510<blockquote>
    75617511    These macros are used to specify the behaviour of various actions
     
    77027652</blockquote>
    77037653</blockquote>
    7704 <hr><h3><a name="Standard tags generated by CMT"></a><a href="#index"><tt>19.&nbsp;4</tt></a> - Standard tags generated by CMT</h3>
     7654<hr><h3><a name="Standard tags generated by CMT"></a><a href="#index"><tt>18.&nbsp;4</tt></a> - Standard tags generated by CMT</h3>
    77057655<blockquote>
    77067656  <p>
     
    78097759</p>
    78107760</blockquote>
    7811 <hr><h3><a name="Standard templates for makefile fragments"></a><a href="#index"><tt>19.&nbsp;5</tt></a> - Standard templates for makefile fragments</h3>
     7761<hr><h3><a name="Standard templates for makefile fragments"></a><a href="#index"><tt>18.&nbsp;5</tt></a> - Standard templates for makefile fragments</h3>
    78127762<blockquote>
    78137763  <p>
     
    79527902</p>
    79537903</blockquote>
    7954 <hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>19.&nbsp;6</tt></a> - Makefile generation sequences</h3>
     7904<hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>18.&nbsp;6</tt></a> - Makefile generation sequences</h3>
    79557905<blockquote>
    79567906<blockquote><hr>
     
    80718021</p>
    80728022</blockquote>
    8073 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>19.&nbsp;7</tt></a> - The complete requirements syntax</h3>
     8023<hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18.&nbsp;7</tt></a> - The complete requirements syntax</h3>
    80748024<blockquote>
    80758025  The syntax of specification statements that can be installed in a
     
    98019751</center>
    98029752</blockquote>
    9803 <hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>19.&nbsp;8</tt></a> - The default strategies defined in CMT</h3>
     9753<hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>18.&nbsp;8</tt></a> - The default strategies defined in CMT</h3>
    98049754<blockquote>
    98059755<pre class="cmt">
     
    98079757  DefaultInstallAreaStrategy = WithoutInstallArea</pre>
    98089758</blockquote>
    9809 <hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>19.&nbsp;9</tt></a> - The internal mechanism of cmt cvs operations</h3>
     9759<hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>18.&nbsp;9</tt></a> - The internal mechanism of cmt cvs operations</h3>
    98109760<blockquote>
    98119761  Generally, CVS does not handle queries upon the repository (such as
     
    99109860<tr>
    99119861<td width="100"><tt>&nbsp;4.&nbsp;1</tt></td>
     9862<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The project file">The project file</a></td>
     9863</tr>
     9864<tr>
     9865<td width="100"><tt>&nbsp;4.&nbsp;2</tt></td>
     9866<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Projects and strategies">Projects and strategies</a></td>
     9867</tr>
     9868<tr>
     9869<td width="100"><tt>&nbsp;4.&nbsp;3</tt></td>
    99129870<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMTPROJECTPATH">CMTPROJECTPATH</a></td>
    99139871</tr>
    99149872<tr>
    9915 <td width="100"><tt>&nbsp;4.&nbsp;2</tt></td>
     9873<td width="100"><tt>&nbsp;4.&nbsp;4</tt></td>
    99169874<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMTPATH">CMTPATH</a></td>
    99179875</tr>
     
    99269884<tr>
    99279885<td width="100"><tt>&nbsp;7</tt></td>
    9928 <td><a href="#The concept of project">The concept of project</a></td>
     9886<td><a href="#Assigning semantics to packages. Common practices">Assigning semantics to packages. Common practices</a></td>
     9887</tr>
     9888<tr>
     9889<td width="100"><tt>&nbsp;7.&nbsp;1</tt></td>
     9890<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The primary package">The primary package</a></td>
     9891</tr>
     9892<tr>
     9893<td width="100"><tt>&nbsp;7.&nbsp;2</tt></td>
     9894<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The policy package">The policy package</a></td>
     9895</tr>
     9896<tr>
     9897<td width="100"><tt>&nbsp;7.&nbsp;3</tt></td>
     9898<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The container or management package">The container or management package</a></td>
     9899</tr>
     9900<tr>
     9901<td width="100"><tt>&nbsp;7.&nbsp;4</tt></td>
     9902<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The release package">The release package</a></td>
     9903</tr>
     9904<tr>
     9905<td width="100"><tt>&nbsp;7.&nbsp;5</tt></td>
     9906<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The glue or interface package">The glue or interface package</a></td>
    99299907</tr>
    99309908<tr>
    99319909<td width="100"><tt>&nbsp;8</tt></td>
    9932 <td><a href="#Assigning semantics to packages. Common practices">Assigning semantics to packages. Common practices</a></td>
    9933 </tr>
    9934 <tr>
    9935 <td width="100"><tt>&nbsp;8.&nbsp;1</tt></td>
    9936 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The primary package">The primary package</a></td>
    9937 </tr>
    9938 <tr>
    9939 <td width="100"><tt>&nbsp;8.&nbsp;2</tt></td>
    9940 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The policy package">The policy package</a></td>
    9941 </tr>
    9942 <tr>
    9943 <td width="100"><tt>&nbsp;8.&nbsp;3</tt></td>
    9944 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The container or management package">The container or management package</a></td>
    9945 </tr>
    9946 <tr>
    9947 <td width="100"><tt>&nbsp;8.&nbsp;4</tt></td>
    9948 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The release package">The release package</a></td>
    9949 </tr>
    9950 <tr>
    9951 <td width="100"><tt>&nbsp;8.&nbsp;5</tt></td>
    9952 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The glue or interface package">The glue or interface package</a></td>
     9910<td><a href="#Managing site dependent features - The CMTSITE environment variable">Managing site dependent features - The CMTSITE environment variable</a></td>
    99539911</tr>
    99549912<tr>
    99559913<td width="100"><tt>&nbsp;9</tt></td>
    9956 <td><a href="#Managing site dependent features - The CMTSITE environment variable">Managing site dependent features - The CMTSITE environment variable</a></td>
     9914<td><a href="#Configuring a package">Configuring a package</a></td>
    99579915</tr>
    99589916<tr>
    99599917<td width="100"><tt>10</tt></td>
    9960 <td><a href="#Configuring a package">Configuring a package</a></td>
     9918<td><a href="#Selecting a specific configuration">Selecting a specific configuration</a></td>
     9919</tr>
     9920<tr>
     9921<td width="100"><tt>10.&nbsp;1</tt></td>
     9922<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Describing a configuration">Describing a configuration</a></td>
     9923</tr>
     9924<tr>
     9925<td width="100"><tt>10.&nbsp;2</tt></td>
     9926<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Defining the user tags">Defining the user tags</a></td>
     9927</tr>
     9928<tr>
     9929<td width="100"><tt>10.&nbsp;3</tt></td>
     9930<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Activating tags">Activating tags</a></td>
    99619931</tr>
    99629932<tr>
    99639933<td width="100"><tt>11</tt></td>
    9964 <td><a href="#Selecting a specific configuration">Selecting a specific configuration</a></td>
     9934<td><a href="#Working on a package">Working on a package</a></td>
    99659935</tr>
    99669936<tr>
    99679937<td width="100"><tt>11.&nbsp;1</tt></td>
    9968 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Describing a configuration">Describing a configuration</a></td>
     9938<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a library">Working on a library</a></td>
    99699939</tr>
    99709940<tr>
    99719941<td width="100"><tt>11.&nbsp;2</tt></td>
    9972 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Defining the user tags">Defining the user tags</a></td>
     9942<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on an application">Working on an application</a></td>
    99739943</tr>
    99749944<tr>
    99759945<td width="100"><tt>11.&nbsp;3</tt></td>
    9976 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Activating tags">Activating tags</a></td>
     9946<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a test or external application">Working on a test or external application</a></td>
    99779947</tr>
    99789948<tr>
    99799949<td width="100"><tt>12</tt></td>
    9980 <td><a href="#Working on a package">Working on a package</a></td>
     9950<td><a href="#Defining a document generator">Defining a document generator</a></td>
    99819951</tr>
    99829952<tr>
    99839953<td width="100"><tt>12.&nbsp;1</tt></td>
    9984 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a library">Working on a library</a></td>
     9954<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#An example : the tex document-style">An example : the tex document-style</a></td>
    99859955</tr>
    99869956<tr>
    99879957<td width="100"><tt>12.&nbsp;2</tt></td>
    9988 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on an application">Working on an application</a></td>
     9958<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#How to create and install a new document style">How to create and install a new document style</a></td>
    99899959</tr>
    99909960<tr>
    99919961<td width="100"><tt>12.&nbsp;3</tt></td>
    9992 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a test or external application">Working on a test or external application</a></td>
    9993 </tr>
    9994 <tr>
    9995 <td width="100"><tt>12.&nbsp;4</tt></td>
    9996 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Construction of a global environment">Construction of a global environment</a></td>
     9962<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Examples">Examples</a></td>
    99979963</tr>
    99989964<tr>
    99999965<td width="100"><tt>13</tt></td>
    10000 <td><a href="#Defining a document generator">Defining a document generator</a></td>
     9966<td><a href="#The tools provided by CMT">The tools provided by CMT</a></td>
    100019967</tr>
    100029968<tr>
    100039969<td width="100"><tt>13.&nbsp;1</tt></td>
    10004 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#An example : the tex document-style">An example : the tex document-style</a></td>
     9970<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The requirements file">The requirements file</a></td>
     9971</tr>
     9972<tr>
     9973<td width="100"><tt>13.&nbsp;1.&nbsp;1</tt></td>
     9974<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general requirements syntax">The general requirements syntax</a></td>
    100059975</tr>
    100069976<tr>
    100079977<td width="100"><tt>13.&nbsp;2</tt></td>
    10008 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#How to create and install a new document style">How to create and install a new document style</a></td>
     9978<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The concepts handled in the requirements file">The concepts handled in the requirements file</a></td>
     9979</tr>
     9980<tr>
     9981<td width="100"><tt>13.&nbsp;2.&nbsp;1</tt></td>
     9982<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The package structuring style ">The package structuring style </a></td>
     9983</tr>
     9984<tr>
     9985<td width="100"><tt>13.&nbsp;2.&nbsp;2</tt></td>
     9986<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Meta-information : author, manager">Meta-information : author, manager</a></td>
     9987</tr>
     9988<tr>
     9989<td width="100"><tt>13.&nbsp;2.&nbsp;3</tt></td>
     9990<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#package, version">package, version</a></td>
     9991</tr>
     9992<tr>
     9993<td width="100"><tt>13.&nbsp;2.&nbsp;4</tt></td>
     9994<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Constituents : application, library, document">Constituents : application, library, document</a></td>
     9995</tr>
     9996<tr>
     9997<td width="100"><tt>13.&nbsp;2.&nbsp;5</tt></td>
     9998<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Groups">Groups</a></td>
     9999</tr>
     10000<tr>
     10001<td width="100"><tt>13.&nbsp;2.&nbsp;6</tt></td>
     10002<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Languages">Languages</a></td>
     10003</tr>
     10004<tr>
     10005<td width="100"><tt>13.&nbsp;2.&nbsp;7</tt></td>
     10006<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Symbols">Symbols</a></td>
     10007</tr>
     10008<tr>
     10009<td width="100"><tt>13.&nbsp;2.&nbsp;7.&nbsp;1</tt></td>
     10010<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#actions">actions</a></td>
     10011</tr>
     10012<tr>
     10013<td width="100"><tt>13.&nbsp;2.&nbsp;8</tt></td>
     10014<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#use">use</a></td>
     10015</tr>
     10016<tr>
     10017<td width="100"><tt>13.&nbsp;2.&nbsp;9</tt></td>
     10018<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#patterns">patterns</a></td>
     10019</tr>
     10020<tr>
     10021<td width="100"><tt>13.&nbsp;2.&nbsp;9.&nbsp;1</tt></td>
     10022<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Applying a pattern">Applying a pattern</a></td>
     10023</tr>
     10024<tr>
     10025<td width="100"><tt>13.&nbsp;2.10</tt></td>
     10026<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmtpath_patterns">cmtpath_patterns</a></td>
     10027</tr>
     10028<tr>
     10029<td width="100"><tt>13.&nbsp;2.11</tt></td>
     10030<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#branches">branches</a></td>
     10031</tr>
     10032<tr>
     10033<td width="100"><tt>13.&nbsp;2.12</tt></td>
     10034<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Strategy specifications">Strategy specifications</a></td>
     10035</tr>
     10036<tr>
     10037<td width="100"><tt>13.&nbsp;2.13</tt></td>
     10038<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#setup_script, cleanup_script">setup_script, cleanup_script</a></td>
     10039</tr>
     10040<tr>
     10041<td width="100"><tt>13.&nbsp;2.14</tt></td>
     10042<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_path">include_path</a></td>
     10043</tr>
     10044<tr>
     10045<td width="100"><tt>13.&nbsp;2.15</tt></td>
     10046<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_dirs">include_dirs</a></td>
     10047</tr>
     10048<tr>
     10049<td width="100"><tt>13.&nbsp;2.16</tt></td>
     10050<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#make_fragment">make_fragment</a></td>
     10051</tr>
     10052<tr>
     10053<td width="100"><tt>13.&nbsp;2.17</tt></td>
     10054<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#public, private">public, private</a></td>
     10055</tr>
     10056<tr>
     10057<td width="100"><tt>13.&nbsp;2.17.&nbsp;1</tt></td>
     10058<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Scoping sections">Scoping sections</a></td>
     10059</tr>
     10060<tr>
     10061<td width="100"><tt>13.&nbsp;2.18</tt></td>
     10062<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tag, apply_tag">tag, apply_tag</a></td>
    1000910063</tr>
    1001010064<tr>
    1001110065<td width="100"><tt>13.&nbsp;3</tt></td>
    10012 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Examples">Examples</a></td>
     10066<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general cmt user interface">The general cmt user interface</a></td>
     10067</tr>
     10068<tr>
     10069<td width="100"><tt>13.&nbsp;3.&nbsp;1</tt></td>
     10070<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt broadcast">cmt broadcast</a></td>
     10071</tr>
     10072<tr>
     10073<td width="100"><tt>13.&nbsp;3.&nbsp;1.&nbsp;1</tt></td>
     10074<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Specifying the shell command">Specifying the shell command</a></td>
     10075</tr>
     10076<tr>
     10077<td width="100"><tt>13.&nbsp;3.&nbsp;1.&nbsp;2</tt></td>
     10078<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Templates in the shell command">Templates in the shell command</a></td>
     10079</tr>
     10080<tr>
     10081<td width="100"><tt>13.&nbsp;3.&nbsp;2</tt></td>
     10082<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build &lt;option&gt;">cmt build &lt;option&gt;</a></td>
     10083</tr>
     10084<tr>
     10085<td width="100"><tt>13.&nbsp;3.&nbsp;3</tt></td>
     10086<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt check configuration">cmt check configuration</a></td>
     10087</tr>
     10088<tr>
     10089<td width="100"><tt>13.&nbsp;3.&nbsp;4</tt></td>
     10090<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt check files &lt;reference-file&gt; &lt;new-file&gt;">cmt check files &lt;reference-file&gt; &lt;new-file&gt;</a></td>
     10091</tr>
     10092<tr>
     10093<td width="100"><tt>13.&nbsp;3.&nbsp;5</tt></td>
     10094<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt checkout ...">cmt checkout ...</a></td>
     10095</tr>
     10096<tr>
     10097<td width="100"><tt>13.&nbsp;3.&nbsp;6</tt></td>
     10098<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt co ...">cmt co ...</a></td>
     10099</tr>
     10100<tr>
     10101<td width="100"><tt>13.&nbsp;3.&nbsp;7</tt></td>
     10102<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cleanup [-csh|-sh]">cmt cleanup [-csh|-sh]</a></td>
     10103</tr>
     10104<tr>
     10105<td width="100"><tt>13.&nbsp;3.&nbsp;8</tt></td>
     10106<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt config">cmt config</a></td>
     10107</tr>
     10108<tr>
     10109<td width="100"><tt>13.&nbsp;3.&nbsp;9</tt></td>
     10110<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]">cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</a></td>
     10111</tr>
     10112<tr>
     10113<td width="100"><tt>13.&nbsp;3.10</tt></td>
     10114<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt expand model [-strict] &lt;model-string&gt;">cmt expand model [-strict] &lt;model-string&gt;</a></td>
     10115</tr>
     10116<tr>
     10117<td width="100"><tt>13.&nbsp;3.11</tt></td>
     10118<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt filter &lt;in-file&gt; &lt;out-file&gt;">cmt filter &lt;in-file&gt; &lt;out-file&gt;</a></td>
     10119</tr>
     10120<tr>
     10121<td width="100"><tt>13.&nbsp;3.12</tt></td>
     10122<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt help | --help">cmt help | --help</a></td>
     10123</tr>
     10124<tr>
     10125<td width="100"><tt>13.&nbsp;3.13</tt></td>
     10126<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]">cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</a></td>
     10127</tr>
     10128<tr>
     10129<td width="100"><tt>13.&nbsp;3.14</tt></td>
     10130<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]">cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</a></td>
     10131</tr>
     10132<tr>
     10133<td width="100"><tt>13.&nbsp;3.15</tt></td>
     10134<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt remove library_links">cmt remove library_links</a></td>
     10135</tr>
     10136<tr>
     10137<td width="100"><tt>13.&nbsp;3.16</tt></td>
     10138<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt run [shell-command]">cmt run [shell-command]</a></td>
     10139</tr>
     10140<tr>
     10141<td width="100"><tt>13.&nbsp;3.17</tt></td>
     10142<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt set version &lt;version&gt;">cmt set version &lt;version&gt;</a></td>
     10143</tr>
     10144<tr>
     10145<td width="100"><tt>13.&nbsp;3.18</tt></td>
     10146<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt set versions">cmt set versions</a></td>
     10147</tr>
     10148<tr>
     10149<td width="100"><tt>13.&nbsp;3.19</tt></td>
     10150<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt setup [-csh|-sh|-bat]">cmt setup [-csh|-sh|-bat]</a></td>
     10151</tr>
     10152<tr>
     10153<td width="100"><tt>13.&nbsp;3.20</tt></td>
     10154<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt show &lt;option&gt;">cmt show &lt;option&gt;</a></td>
     10155</tr>
     10156<tr>
     10157<td width="100"><tt>13.&nbsp;3.21</tt></td>
     10158<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt system">cmt system</a></td>
     10159</tr>
     10160<tr>
     10161<td width="100"><tt>13.&nbsp;3.22</tt></td>
     10162<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]">cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</a></td>
     10163</tr>
     10164<tr>
     10165<td width="100"><tt>13.&nbsp;3.23</tt></td>
     10166<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt version | --version">cmt version | --version</a></td>
     10167</tr>
     10168<tr>
     10169<td width="100"><tt>13.&nbsp;3.24</tt></td>
     10170<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvstags &lt;module&gt;">cmt cvstags &lt;module&gt;</a></td>
     10171</tr>
     10172<tr>
     10173<td width="100"><tt>13.&nbsp;3.25</tt></td>
     10174<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvsbranches &lt;module&gt;">cmt cvsbranches &lt;module&gt;</a></td>
     10175</tr>
     10176<tr>
     10177<td width="100"><tt>13.&nbsp;3.26</tt></td>
     10178<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvssubpackages &lt;module&gt;">cmt cvssubpackages &lt;module&gt;</a></td>
     10179</tr>
     10180<tr>
     10181<td width="100"><tt>13.&nbsp;4</tt></td>
     10182<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The setup and cleanup scripts">The setup and cleanup scripts</a></td>
     10183</tr>
     10184<tr>
     10185<td width="100"><tt>13.&nbsp;5</tt></td>
     10186<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build prototype">cmt build prototype</a></td>
    1001310187</tr>
    1001410188<tr>
    1001510189<td width="100"><tt>14</tt></td>
    10016 <td><a href="#The tools provided by CMT">The tools provided by CMT</a></td>
     10190<td><a href="#Using cvs together with CMT">Using cvs together with CMT</a></td>
    1001710191</tr>
    1001810192<tr>
    1001910193<td width="100"><tt>14.&nbsp;1</tt></td>
    10020 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The requirements file">The requirements file</a></td>
    10021 </tr>
    10022 <tr>
    10023 <td width="100"><tt>14.&nbsp;1.&nbsp;1</tt></td>
    10024 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general requirements syntax">The general requirements syntax</a></td>
     10194<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Importing a package into a cvs repository">Importing a package into a cvs repository</a></td>
    1002510195</tr>
    1002610196<tr>
    1002710197<td width="100"><tt>14.&nbsp;2</tt></td>
    10028 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The concepts handled in the requirements file">The concepts handled in the requirements file</a></td>
    10029 </tr>
    10030 <tr>
    10031 <td width="100"><tt>14.&nbsp;2.&nbsp;1</tt></td>
    10032 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The package structuring style ">The package structuring style </a></td>
    10033 </tr>
    10034 <tr>
    10035 <td width="100"><tt>14.&nbsp;2.&nbsp;2</tt></td>
    10036 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Meta-information : author, manager">Meta-information : author, manager</a></td>
    10037 </tr>
    10038 <tr>
    10039 <td width="100"><tt>14.&nbsp;2.&nbsp;3</tt></td>
    10040 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#package, version">package, version</a></td>
    10041 </tr>
    10042 <tr>
    10043 <td width="100"><tt>14.&nbsp;2.&nbsp;4</tt></td>
    10044 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Constituents : application, library, document">Constituents : application, library, document</a></td>
    10045 </tr>
    10046 <tr>
    10047 <td width="100"><tt>14.&nbsp;2.&nbsp;5</tt></td>
    10048 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Groups">Groups</a></td>
    10049 </tr>
    10050 <tr>
    10051 <td width="100"><tt>14.&nbsp;2.&nbsp;6</tt></td>
    10052 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Languages">Languages</a></td>
    10053 </tr>
    10054 <tr>
    10055 <td width="100"><tt>14.&nbsp;2.&nbsp;7</tt></td>
    10056 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Symbols">Symbols</a></td>
    10057 </tr>
    10058 <tr>
    10059 <td width="100"><tt>14.&nbsp;2.&nbsp;7.&nbsp;1</tt></td>
    10060 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#actions">actions</a></td>
    10061 </tr>
    10062 <tr>
    10063 <td width="100"><tt>14.&nbsp;2.&nbsp;8</tt></td>
    10064 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#use">use</a></td>
    10065 </tr>
    10066 <tr>
    10067 <td width="100"><tt>14.&nbsp;2.&nbsp;9</tt></td>
    10068 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#patterns">patterns</a></td>
    10069 </tr>
    10070 <tr>
    10071 <td width="100"><tt>14.&nbsp;2.&nbsp;9.&nbsp;1</tt></td>
    10072 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Applying a pattern">Applying a pattern</a></td>
    10073 </tr>
    10074 <tr>
    10075 <td width="100"><tt>14.&nbsp;2.10</tt></td>
    10076 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmtpath_patterns">cmtpath_patterns</a></td>
    10077 </tr>
    10078 <tr>
    10079 <td width="100"><tt>14.&nbsp;2.11</tt></td>
    10080 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#branches">branches</a></td>
    10081 </tr>
    10082 <tr>
    10083 <td width="100"><tt>14.&nbsp;2.12</tt></td>
    10084 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Strategy specifications">Strategy specifications</a></td>
    10085 </tr>
    10086 <tr>
    10087 <td width="100"><tt>14.&nbsp;2.13</tt></td>
    10088 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#setup_script, cleanup_script">setup_script, cleanup_script</a></td>
    10089 </tr>
    10090 <tr>
    10091 <td width="100"><tt>14.&nbsp;2.14</tt></td>
    10092 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_path">include_path</a></td>
    10093 </tr>
    10094 <tr>
    10095 <td width="100"><tt>14.&nbsp;2.15</tt></td>
    10096 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_dirs">include_dirs</a></td>
    10097 </tr>
    10098 <tr>
    10099 <td width="100"><tt>14.&nbsp;2.16</tt></td>
    10100 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#make_fragment">make_fragment</a></td>
    10101 </tr>
    10102 <tr>
    10103 <td width="100"><tt>14.&nbsp;2.17</tt></td>
    10104 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#public, private">public, private</a></td>
    10105 </tr>
    10106 <tr>
    10107 <td width="100"><tt>14.&nbsp;2.17.&nbsp;1</tt></td>
    10108 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Scoping sections">Scoping sections</a></td>
    10109 </tr>
    10110 <tr>
    10111 <td width="100"><tt>14.&nbsp;2.18</tt></td>
    10112 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tag, apply_tag">tag, apply_tag</a></td>
     10198<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Checking a package out from a cvs repository">Checking a package out from a cvs repository</a></td>
    1011310199</tr>
    1011410200<tr>
    1011510201<td width="100"><tt>14.&nbsp;3</tt></td>
    10116 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general cmt user interface">The general cmt user interface</a></td>
    10117 </tr>
    10118 <tr>
    10119 <td width="100"><tt>14.&nbsp;3.&nbsp;1</tt></td>
    10120 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt broadcast">cmt broadcast</a></td>
    10121 </tr>
    10122 <tr>
    10123 <td width="100"><tt>14.&nbsp;3.&nbsp;1.&nbsp;1</tt></td>
    10124 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Specifying the shell command">Specifying the shell command</a></td>
    10125 </tr>
    10126 <tr>
    10127 <td width="100"><tt>14.&nbsp;3.&nbsp;1.&nbsp;2</tt></td>
    10128 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Templates in the shell command">Templates in the shell command</a></td>
    10129 </tr>
    10130 <tr>
    10131 <td width="100"><tt>14.&nbsp;3.&nbsp;2</tt></td>
    10132 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build &lt;option&gt;">cmt build &lt;option&gt;</a></td>
    10133 </tr>
    10134 <tr>
    10135 <td width="100"><tt>14.&nbsp;3.&nbsp;3</tt></td>
    10136 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt check configuration">cmt check configuration</a></td>
    10137 </tr>
    10138 <tr>
    10139 <td width="100"><tt>14.&nbsp;3.&nbsp;4</tt></td>
    10140 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt check files &lt;reference-file&gt; &lt;new-file&gt;">cmt check files &lt;reference-file&gt; &lt;new-file&gt;</a></td>
    10141 </tr>
    10142 <tr>
    10143 <td width="100"><tt>14.&nbsp;3.&nbsp;5</tt></td>
    10144 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt checkout ...">cmt checkout ...</a></td>
    10145 </tr>
    10146 <tr>
    10147 <td width="100"><tt>14.&nbsp;3.&nbsp;6</tt></td>
    10148 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt co ...">cmt co ...</a></td>
    10149 </tr>
    10150 <tr>
    10151 <td width="100"><tt>14.&nbsp;3.&nbsp;7</tt></td>
    10152 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cleanup [-csh|-sh]">cmt cleanup [-csh|-sh]</a></td>
    10153 </tr>
    10154 <tr>
    10155 <td width="100"><tt>14.&nbsp;3.&nbsp;8</tt></td>
    10156 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt config">cmt config</a></td>
    10157 </tr>
    10158 <tr>
    10159 <td width="100"><tt>14.&nbsp;3.&nbsp;9</tt></td>
    10160 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]">cmt create &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</a></td>
    10161 </tr>
    10162 <tr>
    10163 <td width="100"><tt>14.&nbsp;3.10</tt></td>
    10164 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt expand model [-strict] &lt;model-string&gt;">cmt expand model [-strict] &lt;model-string&gt;</a></td>
    10165 </tr>
    10166 <tr>
    10167 <td width="100"><tt>14.&nbsp;3.11</tt></td>
    10168 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt filter &lt;in-file&gt; &lt;out-file&gt;">cmt filter &lt;in-file&gt; &lt;out-file&gt;</a></td>
    10169 </tr>
    10170 <tr>
    10171 <td width="100"><tt>14.&nbsp;3.12</tt></td>
    10172 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt help | --help">cmt help | --help</a></td>
    10173 </tr>
    10174 <tr>
    10175 <td width="100"><tt>14.&nbsp;3.13</tt></td>
    10176 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]">cmt lock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</a></td>
    10177 </tr>
    10178 <tr>
    10179 <td width="100"><tt>14.&nbsp;3.14</tt></td>
    10180 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]">cmt remove &lt;package&gt; &lt;version&gt; [&lt;area&gt;]</a></td>
    10181 </tr>
    10182 <tr>
    10183 <td width="100"><tt>14.&nbsp;3.15</tt></td>
    10184 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt remove library_links">cmt remove library_links</a></td>
    10185 </tr>
    10186 <tr>
    10187 <td width="100"><tt>14.&nbsp;3.16</tt></td>
    10188 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt run [shell-command]">cmt run [shell-command]</a></td>
    10189 </tr>
    10190 <tr>
    10191 <td width="100"><tt>14.&nbsp;3.17</tt></td>
    10192 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt set version &lt;version&gt;">cmt set version &lt;version&gt;</a></td>
    10193 </tr>
    10194 <tr>
    10195 <td width="100"><tt>14.&nbsp;3.18</tt></td>
    10196 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt set versions">cmt set versions</a></td>
    10197 </tr>
    10198 <tr>
    10199 <td width="100"><tt>14.&nbsp;3.19</tt></td>
    10200 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt setup [-csh|-sh|-bat]">cmt setup [-csh|-sh|-bat]</a></td>
    10201 </tr>
    10202 <tr>
    10203 <td width="100"><tt>14.&nbsp;3.20</tt></td>
    10204 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt show &lt;option&gt;">cmt show &lt;option&gt;</a></td>
    10205 </tr>
    10206 <tr>
    10207 <td width="100"><tt>14.&nbsp;3.21</tt></td>
    10208 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt system">cmt system</a></td>
    10209 </tr>
    10210 <tr>
    10211 <td width="100"><tt>14.&nbsp;3.22</tt></td>
    10212 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]">cmt unlock [ &lt;package&gt; &lt;version&gt; [&lt;area&gt;] ]</a></td>
    10213 </tr>
    10214 <tr>
    10215 <td width="100"><tt>14.&nbsp;3.23</tt></td>
    10216 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt version | --version">cmt version | --version</a></td>
    10217 </tr>
    10218 <tr>
    10219 <td width="100"><tt>14.&nbsp;3.24</tt></td>
    10220 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvstags &lt;module&gt;">cmt cvstags &lt;module&gt;</a></td>
    10221 </tr>
    10222 <tr>
    10223 <td width="100"><tt>14.&nbsp;3.25</tt></td>
    10224 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvsbranches &lt;module&gt;">cmt cvsbranches &lt;module&gt;</a></td>
    10225 </tr>
    10226 <tr>
    10227 <td width="100"><tt>14.&nbsp;3.26</tt></td>
    10228 <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvssubpackages &lt;module&gt;">cmt cvssubpackages &lt;module&gt;</a></td>
     10202<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Querying CVS about some important infos">Querying CVS about some important infos</a></td>
    1022910203</tr>
    1023010204<tr>
    1023110205<td width="100"><tt>14.&nbsp;4</tt></td>
    10232 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The setup and cleanup scripts">The setup and cleanup scripts</a></td>
     10206<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a package, creating a new release">Working on a package, creating a new release</a></td>
    1023310207</tr>
    1023410208<tr>
    1023510209<td width="100"><tt>14.&nbsp;5</tt></td>
    10236 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build prototype">cmt build prototype</a></td>
     10210<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Getting a particular tagged version out of CVS">Getting a particular tagged version out of CVS</a></td>
    1023710211</tr>
    1023810212<tr>
    1023910213<td width="100"><tt>15</tt></td>
    10240 <td><a href="#Using cvs together with CMT">Using cvs together with CMT</a></td>
    10241 </tr>
    10242 <tr>
    10243 <td width="100"><tt>15.&nbsp;1</tt></td>
    10244 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Importing a package into a cvs repository">Importing a package into a cvs repository</a></td>
    10245 </tr>
    10246 <tr>
    10247 <td width="100"><tt>15.&nbsp;2</tt></td>
    10248 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Checking a package out from a cvs repository">Checking a package out from a cvs repository</a></td>
    10249 </tr>
    10250 <tr>
    10251 <td width="100"><tt>15.&nbsp;3</tt></td>
    10252 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Querying CVS about some important infos">Querying CVS about some important infos</a></td>
    10253 </tr>
    10254 <tr>
    10255 <td width="100"><tt>15.&nbsp;4</tt></td>
    10256 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a package, creating a new release">Working on a package, creating a new release</a></td>
    10257 </tr>
    10258 <tr>
    10259 <td width="100"><tt>15.&nbsp;5</tt></td>
    10260 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Getting a particular tagged version out of CVS">Getting a particular tagged version out of CVS</a></td>
     10214<td><a href="#Interfacing an external package with CMT">Interfacing an external package with CMT</a></td>
    1026110215</tr>
    1026210216<tr>
    1026310217<td width="100"><tt>16</tt></td>
    10264 <td><a href="#Interfacing an external package with CMT">Interfacing an external package with CMT</a></td>
     10218<td><a href="#The installation area mechanism">The installation area mechanism</a></td>
     10219</tr>
     10220<tr>
     10221<td width="100"><tt>16.&nbsp;1</tt></td>
     10222<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default implementation">The default implementation</a></td>
     10223</tr>
     10224<tr>
     10225<td width="100"><tt>16.&nbsp;2</tt></td>
     10226<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Tuning the installation area mechanisms">Tuning the installation area mechanisms</a></td>
    1026510227</tr>
    1026610228<tr>
    1026710229<td width="100"><tt>17</tt></td>
    10268 <td><a href="#The installation area mechanism">The installation area mechanism</a></td>
     10230<td><a href="#Installing CMT for the first time">Installing CMT for the first time</a></td>
    1026910231</tr>
    1027010232<tr>
    1027110233<td width="100"><tt>17.&nbsp;1</tt></td>
    10272 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default implementation">The default implementation</a></td>
     10234<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Installing CMT on your Unix site">Installing CMT on your Unix site</a></td>
    1027310235</tr>
    1027410236<tr>
    1027510237<td width="100"><tt>17.&nbsp;2</tt></td>
    10276 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Tuning the installation area mechanisms">Tuning the installation area mechanisms</a></td>
     10238<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Installing CMT on a Windows or Windows NT site">Installing CMT on a Windows or Windows NT site</a></td>
    1027710239</tr>
    1027810240<tr>
    1027910241<td width="100"><tt>18</tt></td>
    10280 <td><a href="#Installing CMT for the first time">Installing CMT for the first time</a></td>
     10242<td><a href="#Appendices">Appendices</a></td>
    1028110243</tr>
    1028210244<tr>
    1028310245<td width="100"><tt>18.&nbsp;1</tt></td>
    10284 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Installing CMT on your Unix site">Installing CMT on your Unix site</a></td>
     10246<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Copyright">Copyright</a></td>
    1028510247</tr>
    1028610248<tr>
    1028710249<td width="100"><tt>18.&nbsp;2</tt></td>
    10288 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Installing CMT on a Windows or Windows NT site">Installing CMT on a Windows or Windows NT site</a></td>
    10289 </tr>
    10290 <tr>
    10291 <td width="100"><tt>19</tt></td>
    10292 <td><a href="#Appendices">Appendices</a></td>
    10293 </tr>
    10294 <tr>
    10295 <td width="100"><tt>19.&nbsp;1</tt></td>
    10296 <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Copyright">Copyright</a></td>
    10297 </tr>
    10298 <tr>
    10299 <td width="100"><tt>19.&nbsp;2</tt></td>
    1030010250<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard make targets predefined in CMT">Standard make targets predefined in CMT</a></td>
    1030110251</tr>
    1030210252<tr>
    10303 <td width="100"><tt>19.&nbsp;3</tt></td>
     10253<td width="100"><tt>18.&nbsp;3</tt></td>
    1030410254<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard macros predefined in CMT">Standard macros predefined in CMT</a></td>
    1030510255</tr>
    1030610256<tr>
    10307 <td width="100"><tt>19.&nbsp;3.&nbsp;1</tt></td>
     10257<td width="100"><tt>18.&nbsp;3.&nbsp;1</tt></td>
    1030810258<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMT static macros">CMT static macros</a></td>
    1030910259</tr>
    1031010260<tr>
    10311 <td width="100"><tt>19.&nbsp;3.&nbsp;2</tt></td>
     10261<td width="100"><tt>18.&nbsp;3.&nbsp;2</tt></td>
    1031210262<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Structural macros">Structural macros</a></td>
    1031310263</tr>
    1031410264<tr>
    10315 <td width="100"><tt>19.&nbsp;3.&nbsp;3</tt></td>
     10265<td width="100"><tt>18.&nbsp;3.&nbsp;3</tt></td>
    1031610266<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Language related macros">Language related macros</a></td>
    1031710267</tr>
    1031810268<tr>
    10319 <td width="100"><tt>19.&nbsp;3.&nbsp;4</tt></td>
     10269<td width="100"><tt>18.&nbsp;3.&nbsp;4</tt></td>
    1032010270<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Package customizing macros">Package customizing macros</a></td>
    1032110271</tr>
    1032210272<tr>
    10323 <td width="100"><tt>19.&nbsp;3.&nbsp;5</tt></td>
     10273<td width="100"><tt>18.&nbsp;3.&nbsp;5</tt></td>
    1032410274<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Constituent specific customizing macros">Constituent specific customizing macros</a></td>
    1032510275</tr>
    1032610276<tr>
    10327 <td width="100"><tt>19.&nbsp;3.&nbsp;6</tt></td>
     10277<td width="100"><tt>18.&nbsp;3.&nbsp;6</tt></td>
    1032810278<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Source specific customizing macros">Source specific customizing macros</a></td>
    1032910279</tr>
    1033010280<tr>
    10331 <td width="100"><tt>19.&nbsp;3.&nbsp;7</tt></td>
     10281<td width="100"><tt>18.&nbsp;3.&nbsp;7</tt></td>
    1033210282<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Generated macros">Generated macros</a></td>
    1033310283</tr>
    1033410284<tr>
    10335 <td width="100"><tt>19.&nbsp;3.&nbsp;8</tt></td>
     10285<td width="100"><tt>18.&nbsp;3.&nbsp;8</tt></td>
    1033610286<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Macros related with the installation area mechanisms">Macros related with the installation area mechanisms</a></td>
    1033710287</tr>
    1033810288<tr>
    10339 <td width="100"><tt>19.&nbsp;3.&nbsp;9</tt></td>
     10289<td width="100"><tt>18.&nbsp;3.&nbsp;9</tt></td>
    1034010290<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Utility macros">Utility macros</a></td>
    1034110291</tr>
    1034210292<tr>
    10343 <td width="100"><tt>19.&nbsp;4</tt></td>
     10293<td width="100"><tt>18.&nbsp;4</tt></td>
    1034410294<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard tags generated by CMT">Standard tags generated by CMT</a></td>
    1034510295</tr>
    1034610296<tr>
    10347 <td width="100"><tt>19.&nbsp;5</tt></td>
     10297<td width="100"><tt>18.&nbsp;5</tt></td>
    1034810298<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard templates for makefile fragments">Standard templates for makefile fragments</a></td>
    1034910299</tr>
    1035010300<tr>
    10351 <td width="100"><tt>19.&nbsp;6</tt></td>
     10301<td width="100"><tt>18.&nbsp;6</tt></td>
    1035210302<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Makefile generation sequences">Makefile generation sequences</a></td>
    1035310303</tr>
    1035410304<tr>
    10355 <td width="100"><tt>19.&nbsp;7</tt></td>
     10305<td width="100"><tt>18.&nbsp;7</tt></td>
    1035610306<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The complete requirements syntax">The complete requirements syntax</a></td>
    1035710307</tr>
    1035810308<tr>
    10359 <td width="100"><tt>19.&nbsp;8</tt></td>
     10309<td width="100"><tt>18.&nbsp;8</tt></td>
    1036010310<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default strategies defined in CMT">The default strategies defined in CMT</a></td>
    1036110311</tr>
    1036210312<tr>
    10363 <td width="100"><tt>19.&nbsp;9</tt></td>
     10313<td width="100"><tt>18.&nbsp;9</tt></td>
    1036410314<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The internal mechanism of cmt cvs operations">The internal mechanism of cmt cvs operations</a></td>
    1036510315</tr>
  • CMT/v1r19/doc/CMTDoc.xml

    r18 r21  
    273273        <p>Package areas implement the concept of <i>projects</i> or
    274274        <i>sub-projects</i> which correspond to the practical
    275         organization of the software developments.</p>
    276 
    277         <p>There are no constraints on the number of such areas into
    278         which <tt>CMT</tt> packages are installed. We'll see <a
    279         HREF="#Localizing a package">later</a> how the different areas
    280         or sub-projects can be declared and identified by
     275        organization of the software base.</p>
     276
     277        <p>There are no constraints on the number of such sub-projects
     278        or areas into which <tt>CMT</tt> packages are installed. We'll
     279        see <a HREF="#Localizing a package">later</a> how the
     280        different sub-projects can be declared and identified by
    281281        <tt>CMT</tt>.</p>
    282282
     
    429429      Simulation, Graphics, Core, etc.</li>
    430430
    431       <li>how responsibilities or management policy are defined and
     431      <li>how responsibilities or management policies are defined and
    432432      assigned </li>
    433433
     
    438438
    439439    <p>Considering the simple structuring aspects of sub-projects, two
    440     important configuration parameters handled by CMT must be
    441     understood before attempting to manage packages. These are the
    442     following environment variables:</p>
     440    important configuration parameters (environment variables) handled
     441    by CMT must be understood before attempting to manage
     442    packages:</p>
    443443
    444444    <ul>
    445       <li><tt>CMTPROJECTPATH</tt></li>
    446       <li><tt>CMTPATH</tt></li>
     445
     446      <li><a href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt></a> for a
     447      global specification of where projects can be found. This
     448      specification should be considered as the standard mechanism for
     449      structuring the software base since from it, CMT can and will
     450      deduce all other localization parameters (like
     451      <tt>CMTPATH</tt>).<p></p></li>
     452
     453      <li><a href="#CMTPATH"><tt>CMTPATH</tt></a> offers a more
     454      internal mechanism for localizing packages. It's not generally
     455      meant to be defined manually since CMT will construct it from
     456      <tt>CMTPROJECTPATH</tt>. However, it's important to understand
     457      how this configuration parameter is used to locate
     458      packages.</li>
    447459    </ul>
    448460
     461    <p>Projects receive detailed descriptions or specifications in a
     462    dedicated <i>project file</i>, always located in a <tt>cmt</tt>
     463    directory at their top directory level, and named
     464    <tt>cmt/project.cmt</tt>. It can receive the following
     465    specifications:</p>
     466
     467    <cmt:cmtcode>
     468project &lt;project-name&gt;          [1]
     469<i>project-use specifications...</i>   [2]
     470<i>strategy specifications...</i>      [3]
     471</cmt:cmtcode>
     472
     473    <ol>
     474
     475      <li>The project name specified here takes precedence over the
     476      project name specified in the directory structure. However when
     477      <tt>CMTPROJECTPATH</tt> is not specified, this may cause
     478      conflicts in the localization of projects. In this case it's
     479      highly recommended to always use the same naming convention in
     480      project files as in the directory hierarchy.<p></p></li>
     481
     482      <li>Projects are hierarchized as a directed acyclic graph. The
     483      minimal hierarchy simply corresponds to the order of the
     484      <tt>CMTPATH</tt> items. A more complex hierarchy can be
     485      specified through use statements between sub-projects. This
     486      hierarchy also defines a <i>parent/child</i> relationship between
     487      projects. If a project <tt>A</tt> uses another project
     488      <tt>B</tt>, <tt>A</tt> is also named the <i>parent</i> and
     489      <tt>B</tt> the <i>child</i><p></p></li>
     490
     491      <li>CMT Strategies (for build or setup) are separately
     492       collected into each project. Therefore one can apply different
     493       strategies to different sub-projects. The strategy
     494       specifications may appear in requirements file of any package
     495       of a project or in the <tt>cmt/project.cmt</tt> project file.
     496
     497       <p>By default a project inherits the strategies of its
     498       parents. Or if it's the top project, it follows the default
     499       strategies defined by CMT (Refer to this
     500
     501       <a href="#The default strategies defined in CMT">appendix</a>
     502       to see the default strategies currently defined by CMT).</p>
     503
     504       <p></p></li>
     505
     506    </ol>
     507
     508    <cmt:section title="The project file">
     509
     510      <p>The project file can be created using the command:</p>
     511
     512      <cmt:code>
     513&gt; cmt create_project &lt;project-name&gt; [&lt;release&gt;] [&lt;path&gt;]</cmt:code>
     514
     515      <p>This will create the complete directory hierarchy from the
     516      current directory (or, when it is specified from the optional
     517      project path). It will also create a project file containing the
     518      project name.</p>
     519
     520      <blockquote><i>Note that the &lt;release&gt; argument may be
     521      left empty (or to an empty string). In this case, the directory
     522      hierarchy will be limited to one level devoted to the project
     523      name.</i></blockquote>
     524
     525      <cmt:code>
     526&lt;path&gt;/&lt;project-name&gt;/&lt;release&gt;/cmt/project.cmt
     527&lt;path&gt;/&lt;project-name&gt;/cmt/project.cmt</cmt:code>
     528
     529      <p>As an example, we create the following projects:</p>
     530
     531      <cmt:code>
     532&gt; cmt create_project WorkArea "" /test
     533&gt; cmt create_project ProjectA 1.0 /test
     534&gt; cmt create_project ProjectB 1.0 /test</cmt:code>
     535
     536      <p>And we fill <tt>CMTPATH</tt> with:</p>
     537
     538      <cmt:code>
     539/test/WorkArea:/test/ProjectA/1.0:/test/ProjectB/1.0</cmt:code>
     540
     541      <p>Then the following projects will appear displayed from bottom
     542      to top as</p>
     543
     544      <cmt:code>
     545&gt; cd /test/WorkArea
     546&gt; cmt show projects
     547<i><font face="courier new, courier" COLOR="#000077">WorkArea (in /test/WorkArea) (current)
     548  ProjectA 1.0 (in /test/ProjectA/1.0)
     549    ProjectB 1.0 (in /test/ProjectB/1.0)</font></i></cmt:code>
     550
     551      <p>Of course the preferred way to characterize this software
     552      base should rather be based on specifying the relationships
     553      between those three sub-projects, through the use statements in
     554      the projects files.</p>
     555
     556      <p>For instance in our little example, we could add the
     557      following statement into the project file of WorkArea:</p>
     558
     559      <cmt:code>
     560use ProjectA 1.0</cmt:code>
     561
     562      <p>and the following statement into the project file of ProjectB:</p>
     563
     564      <cmt:code>
     565use ProjectB 1.0</cmt:code>
     566
     567      <p>Then instead of specifying <tt>CMTPATH</tt> we'd rather
     568      simply define <tt>CMTPROJECTPATH</tt> as:</p>
     569
     570      <cmt:code>
     571/test</cmt:code>
     572
     573    </cmt:section>
     574
     575    <cmt:section title="Projects and strategies">
     576
     577      <p>Every strategy setting defines two mutually exclusive tags
     578      and activates one of them.</p>
     579
     580      <cmt:cmtcode>
     581&lt;project&gt;_&lt;have_item&gt;
     582&lt;project&gt;_&lt;have_not_item&gt; </cmt:cmtcode>
     583
     584      <p>Examples</p>
     585
     586      <cmt:cmtcode>
     587&lt;project&gt;_prototypes
     588&lt;project&gt;_no_prototypes
     589&lt;project&gt;_with_install_area
     590&lt;project&gt;_without_install_area
     591&lt;project&gt;_config
     592&lt;project&gt;_no_config
     593&lt;project&gt;_root
     594&lt;project&gt;_no_root
     595&lt;project&gt;_cleanup
     596&lt;project&gt;_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>
     601
     602      <ul>
     603
     604        <li>The <tt>&lt;project&gt;</tt> parameter is expanded in the
     605        <tt>cmtpath_pattern</tt> construct in addition to the
     606        <tt>&lt;path&gt;</tt> parameter. This parameter is assigned
     607        the name of the project associated with the running
     608        <tt>CMTPATH</tt> entry.  <p></p></li>
     609
     610        <li>The <tt>&lt;project&gt;</tt> parameter is also available
     611        for normal patterns. In this case it is assigned the project
     612        name associated with the cmtpath parameter for the current
     613        package.<p></p></li>
     614
     615        <li>Every project defines a tag of the same name, and the tag
     616        of the current project is active.<p></p></li>
     617
     618        <li>The <tt>cmt_installarea_prefix</tt> macro is specialized
     619        <i>per project</i> and every project may override the
     620        <tt>&lt;project&gt;_installarea_prefix</tt> macro. The default
     621        value of any <tt>&lt;project&gt;_installarea_prefix</tt> is
     622        <tt>${cmt_installarea_prefix}</tt> <p></p></li>
     623
     624      </ul>
     625
     626    </cmt:section>
     627
    449628    <cmt:section title="CMTPROJECTPATH">
    450629
    451630      <p>This is an environment variable containing a search list,
    452       very similar to the well know <tt>PATH</tt> environment
    453       variable, containing a list of file paths where CMT projects can
    454       be found. The syntax of this search list follows the standard
    455       syntax of search lists, i.e. items are separated using a
    456       <tt>:</tt> character on Unix and a <tt>;</tt> character on
    457       Windows.</p>
    458 
    459       <p><blockquote><i>One should understand this search list as the primary
    460       mechanism to locate sub-projects in the software base, and
    461       therefore packages. This in particular can completely replace
    462       the <tt>CMTPATH</tt>-based search mechanism for packages that
    463       was used before <tt>v1r18</tt>. However the two mechanisms are
    464       still supported together.</i></blockquote></p>
    465 
    466       <p>A sub-project in itself is a two-level directory structure,
     631      very similar to the well know Unix or Windows <tt>PATH</tt>
     632      environment variable, containing a list of file paths where CMT
     633      projects can be found. The syntax of this search list follows
     634      the standard syntax of search lists, i.e. items are separated
     635      using a <tt>:</tt> character on Unix and a <tt>;</tt> character
     636      on Windows.</p>
     637
     638      <p><blockquote><i>One should understand this search list as the
     639      primary mechanism to locate sub-projects in the software base,
     640      and therefore packages. This in particular can completely
     641      replace the <tt>CMTPATH</tt>-based search mechanism for packages
     642      that was used before <tt>v1r18</tt>. However the two mechanisms
     643      are still both supported and in fact interact with each
     644      other.</i></blockquote></p>
     645
     646      <p>A sub-project in itself is a multi-level directory structure,
    467647      located below one of the items of this search list, and composed
    468648      of:</p>
     
    472652        <li>the sub-project name</li>
    473653
    474         <li>the sub-project release</li>
     654        <li>the sub-project release (which may span several directory levels)</li>
    475655
    476656      </ul>
     
    538718      </ul>
    539719
    540       <p>This search list is considered to interpret the <i>use</i>
     720      <p>This search list is used to interpret the <i>use</i>
    541721      statements written in the project files. This project use
    542722      statement takes the form:</p>
     
    559739use ProductA 1.1.2</cmt:code>
    560740
    561       <p><i>Note that sub-project release identifiers are considered
    562       using a perfect-match principle.</i></p>
     741      <p><i>Note that sub-project release identifiers are always
     742      considered using a perfect-match principle.</i></p>
    563743
    564744      <p>Structuring the set of sub-projects comprising a software
    565       base is sufficient to permit CMT to find all sub-projects and
    566       thus all packages in them. Defining <tt>CMTPROJECTPATH</tt>
    567       <i>and</i> installing the list of use statements in all
    568       appropriate project files entirely suppress the need of manually
    569       defining the <tt>CMTPATH</tt> search list.</p>
     745      base is sufficient to permit CMT to find <i>all</i> sub-projects
     746      and thus <i>all</i> packages in them. Defining
     747      <tt>CMTPROJECTPATH</tt> <i>and</i> installing the list of use
     748      statements in all appropriate project files entirely suppress
     749      the need of manually defining the <tt>CMTPATH</tt> search
     750      list.</p>
    570751
    571752    </cmt:section>
     
    582763
    583764      <p><blockquote><i>When the software base is organized and
    584       configured using the <tt>CMTPROJECTPATH</tt> search list and
    585       project-use statements in the project files, this search list is
    586       automatically and internally generated by CMT, and therefore it
    587       should not be manually defined nor manipulated. If this is your
    588       case, you can skip this section</i></blockquote></p>
    589 
    590       <p>So when one manually define this search list (because <tt>CMTPROJECTPATH</tt> is not defined or project files and  There should be one entry</p>
     765      configured using the <a
     766      href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt></a> search list
     767      and project-use statements in the project files, this search
     768      list is automatically and internally generated by CMT, and
     769      therefore it should not be manually defined nor manipulated. If
     770      this is your case, you can skip this
     771      section</i></blockquote></p>
     772
     773      <p>It is possible to manually define this search list (when
     774      <tt>CMTPROJECTPATH</tt> is not defined or when project files are
     775      not provided)</p>
     776
     777      <p>There should be one entry per package area, and the list is
     778      ordered. The order of items is used to prioritize the package
     779      search.</p>
     780
     781      <p><tt>CMTPATH</tt> can be specified:</p>
     782
     783      <ul>
     784
     785        <li>as the environment variable named <tt>CMTPATH</tt>
     786
     787          <cmt:code>
     788sh&gt; export CMTPATH=/home/arnault/mydev:/ProjectB </cmt:code>
     789
     790          <cmt:code>
     791bat&gt; set CMTPATH=/home/arnault/mydev;/ProjectB </cmt:code>
     792
     793          or (in a <tt>requirements</tt> file)
     794
     795          <cmt:cmtcode>
     796path_append CMTPATH "/home/arnault/mydev"
     797path_append CMTPATH "/ProjectB"</cmt:cmtcode>
     798
     799        </li>
     800
     801        <li>in <tt>.cmtrc</tt> files, which can be located either in
     802        the current directory, in the <i>home</i> directory of the
     803        developper or in <tt>${CMTROOT}/mgr</tt>. The syntax to use in this
     804        configuration file is:
     805
     806          <cmt:code>
     807CMTPATH=/home/arnault/mydev:/ProjectB </cmt:code>
     808
     809        </li>
     810
     811        <li>In the Windows environment, this configuration parameter
     812        may also be installed as a <i>Registry</i> under the alternate
     813        keys:
     814
     815          <ul>
     816            <li> <tt>HKEY_LOCAL_MACHINE/Software/CMT/path</tt> </li>
     817            <li> <tt>HKEY_CURRENT_USER/Software/CMT/path</tt> </li>
     818          </ul>
     819        </li>
     820      </ul>
     821
     822      <blockquote><i>The project file (i.e. the file
     823      <tt>cmt/project.cmt</tt>), when it exists for the current
     824      package (i.e. upstream in the directory hierarchy), also
     825      provides an automatic value for the <tt>CMTPATH</tt> search
     826      list.</i></blockquote>
    591827
    592828    </cmt:section>
     
    657893Creating a new project file </font></i></cmt:code>
    658894
    659     <p>This creates a project structure (i.e. a
    660     <tt>cmt/project.cmt</tt> file) from the current directory. Once
     895    <p>This creates a project structure
     896    <tt>Dev/cmt/project.cmt</tt> from the current directory. Once
    661897    this project has been created we have a complete environment to
    662     start creating packages and working out our software base.</p>
     898    start creating packages below <tt>Dev</tt> and working out our software base.</p>
    663899
    664900    <p> A package is primarily defined by a <i>name</i> and a
     
    669905
    670906    <cmt:code>
    671 csh&gt; cd mydev
     907csh&gt; cd Dev
    672908csh&gt; cmt create Foo v1
    673909<i><font face="courier new, courier" COLOR="#000077">------------------------------------------
    674910Configuring environment for package Foo version v1.
    675911CMT version &CMTVersion;.                              [1]
    676 Root set to /home/arnault/mydev.
     912Root set to /home/arnault/Dev.
    677913System is Linux-i686                                     [2]
    678914------------------------------------------
     
    8961132    <p>The first ingredient we need at this level is to understand how
    8971133    projects themselves are localized, since packages will be found
    898     inside project areas.</p>
    899 
    900     <p>Projects are localized according to the <tt>CMTPATH</tt> path
    901     list. Thus it is <i>always</i> required to define this environment
    902     variable as soon as several project areas are expected. However,
    903     there is one special case where this path list can be avoided,
    904     i.e. when only one project area is considered. In this case, the
    905     knowledge of this single project area can simply be deduced from
    906     the detection of the project file, created at the top of its disk
    907     space.</p>
     1134    inside project areas. You should therefore refer to the
     1135
     1136    <a href="#Defining and managing projects">section on projects</a>
     1137    where the complete mechanism based on <a
     1138    href="#CMTPROJECTPATH"><tt>CMTPROJECTPATH</tt></a> or <a
     1139    href="#CMTPATH"><tt>CMTPATH</tt></a> is described.</p>
     1140
     1141    <p>However, there is one special case where this path list can be
     1142    avoided, i.e. when only one project is considered. In this case,
     1143    the knowledge of this single project area can simply be deduced
     1144    from the detection of the project file, created at the top of its
     1145    disk space.</p>
    9081146
    9091147    <p>A given version of a given package is always referred to by
     
    9461184      absolute (case #3), </li>
    9471185
    948       <li> the access paths optionally registered in the configuration
    949       parameter - see below - <tt>CMTPATH</tt> (and in decreasing
     1186      <li> the access paths registered in the configuration parameter
     1187      <a href="#CMTPATH"><tt>CMTPATH</tt></a> (and in decreasing
    9501188      priority, the first element being searched for first).</li>
    9511189
    9521190    </ol>
    953 
    954     <cmt:blockquote>
    955       <i>
    956 
    957         The configuration parameter <tt>CMTPATH</tt> can be specified
    958         either in the environment variable named <tt>CMTPATH</tt> or in
    959         <tt>.cmtrc</tt> files, which can themselves be located either in
    960         the current directory, in the <i>home</i> directory of the
    961         developper or in <tt>${CMTROOT}/mgr</tt>. In the Windows
    962         environment, this configuration parameter may also be
    963         installed as a <i>Registry</i> under either the keys:
    964 
    965         <ul>
    966           <li> <tt>HKEY_LOCAL_MACHINE/Software/CMT/path</tt> </li>
    967           <li> <tt>HKEY_CURRENT_USER/Software/CMT/path</tt> </li>
    968         </ul>
    969 
    970         <p>The project file (i.e. the file <tt>cmt/project.cmt</tt>),
    971         when it exists for the current package area, is able to
    972         provide an automatic value for the <tt>CMTPATH</tt> search
    973         list.</p>
    974 
    975       </i>
    976     </cmt:blockquote>
    9771191
    9781192    <p>If the <i>path</i> argument is specified as a relative path
     
    9811195    <i>offset</i> to each search case. The search is done starting
    9821196    from the list specified in the <tt>CMTPATH</tt> configuration
    983     parameter, then using the default root; and the offset is appended
    984     at each searched location.</p>
    985 
    986     <p>The <tt>CMTPATH</tt> parameter is thus used as a search list for
    987     the packages, and the individual paths are separated in this list
    988     by <i>colons</i> (<i>semi-colons</i> on Windows). </p>
    989 
    990     <p>A very typical usage of thie <tt>CMTPATH</tt> search list is to
    991     assign one entry per project or sub-project considered in the
    992     workning context. This is consistent with an approach where every
    993     sub-project will have a dedicated management style, access rights,
    994     rsponsible persons, etc.</p>
    995 
    996     <p>As an example, if we specify the <tt>CMTPATH</tt> parameter as
    997     follows : </p>
    998 
     1197    parameter; and the offset is appended at each searched
     1198    location.</p>
     1199
     1200    <p>As an example, if the <tt>CMTPATH</tt> parameter contains: </p>
    9991201
    10001202    <cmt:code>
    1001 csh&gt; setenv CMTPATH /home/arnault/mydev:/ProjectB </cmt:code>
    1002 
    1003     <cmt:code>
    1004 sh&gt; export CMTPATH=/home/arnault/mydev:/ProjectB </cmt:code>
    1005 
    1006     <cmt:code>
    1007 bat&gt; set CMTPATH=/home/arnault/mydev;/ProjectB </cmt:code>
    1008 
    1009     or (in a <tt>requirements</tt> file)
    1010 
    1011     <cmt:cmtcode>
    1012 path_append CMTPATH "/home/arnault/mydev"
    1013 path_append CMTPATH "/ProjectB"</cmt:cmtcode>
    1014 
    1015     or (in a <tt>.cmtrc</tt> file)
    1016 
    1017     <cmt:code>
    1018 CMTPATH=/home/arnault/mydev:/ProjectB </cmt:code>
     1203/home/arnault/mydev:/ProjectB </cmt:code>
    10191204
    10201205    <p>Then a <i>use</i> statement (defined within a given package)
     
    10791264
    10801265    </p>
    1081 
    1082   </cmt:section>
    1083 
    1084   <cmt:section title="The concept of project">
    1085 
    1086     The purpose of the concept of <i>project</i> or <i>sub-project</i>
    1087     is to structure the software bases developed using CMT. This
    1088     concept basically assigns a semantics to the physical structuring
    1089     mechanism of the software areas already described by the <tt>CMTPATH</tt>
    1090     search list.
    1091 
    1092     <p>Some general properties can describe the knowledge of projects
    1093     in CMT:</p>
    1094 
    1095     <ul>
    1096 
    1097       <li>One project is always explicitly or implicitly associated
    1098       with every CMTPATH entry.<p></p></li>
    1099 
    1100       <li>Every project can be <i>named</i> inside a dedicated text
    1101       file (the <i>project file</i>) named <tt>cmt/project.cmt</tt>,
    1102       located immediately below the corresponding <tt>CMTPATH</tt>
    1103       entry. The format of this file is
    1104 
    1105         <cmt:cmtcode>
    1106 project &lt;project-name&gt;
    1107 <i>strategy specifications...</i></cmt:cmtcode>
    1108       <p></p>
    1109       </li>
    1110 
    1111       <li>When not explicitly named, a sub-project is automatically
    1112       assigned the default name <tt>Project&lt;N&gt;</tt> by CMT,
    1113       where <tt>&lt;N&gt;</tt> is the sequence number of the project
    1114       in the list<p></p></li>
    1115 
    1116       <li>The project file can be created using one of the commands:
    1117 
    1118         <cmt:code>
    1119   &gt; cmt create_project &lt;project-name&gt;
    1120   &gt; cmt -project=&lt;project-name&gt; create ...
    1121   &gt; cmt -project=&lt;project-name&gt; checkout ...</cmt:code>
    1122        <p></p>
    1123        </li>
    1124 
    1125       <li>When being within one project area where a project file has
    1126       been installed, its CMTPATH is automatically generated as the
    1127       location where the first visible project file is
    1128       detected.<p></p></li>
    1129 
    1130        <li>The same project may be associated with several CMTPATH
    1131        entries, typically when one entry is a development area of
    1132        another one being the production area of the same
    1133        sub-project<p></p></li>
    1134 
    1135        <li>Since CMTPATH entries are ordered the projects are
    1136        hierarchized accordingly. The last CMTPATH entry (i.e. the
    1137        rightmost one) corresponds to the top project while the first
    1138        CMTPATH entry (i.e. the leftmost one) corresponds to the bottom
    1139        project. A project may have a predecessor and/or a successor.
    1140 
    1141          <p>As an example, suppose we have set up the following
    1142          <tt>CMTPATH</tt>:</p>
    1143 
    1144          <cmt:code>
    1145 $HOME/work-for-A:/ProjectA:/ProjectB</cmt:code>
    1146 
    1147          Then the following projects will appear displayed from bottom
    1148          to top as
    1149 
    1150          <cmt:code>
    1151 &gt; cmt show projects
    1152 <i><font face="courier new, courier" COLOR="#000077">Project1 (in /.../work-for-A)
    1153 Project2 (in /ProjectA)
    1154 Project3 (in /ProjectB)
    1155 CMT (in /afs/cern.ch/sw/contrib)</font></i></cmt:code>
    1156 
    1157          And if projects have been explicitly named this display will become:
    1158 
    1159          <cmt:code>
    1160 &gt; cmt show projects
    1161 <i><font face="courier new, courier" COLOR="#000077">A (in /.../work-for-A)
    1162 A (in /ProjectA)
    1163 Project3 (in /ProjectB)
    1164 CMT (in /afs/cern.ch/sw/contrib)</font></i></cmt:code>
    1165 
    1166        <p></p></li>
    1167 
    1168        <li>CMT Strategies (for build or setup) are separately
    1169        collected into each project. Therefore one can apply different
    1170        strategies to different sub-projects. The strategy
    1171        specifications may appear in requirements file of any package
    1172        of a project or in the <tt>cmt/project.cmt</tt> project file.
    1173 
    1174        <p>By default a project inherits the strategies of its
    1175        predecessor. Or if it's the top project, it follows the default
    1176        strategies defined by CMT (Refer to this
    1177        <a href="#The default strategies defined in CMT">appendix</a> to see the default
    1178        strategies currently defined by CMT).</p> <p></p></li>
    1179 
    1180        <li>A CMT command displays the projects and their associated CMTPATH:
    1181 
    1182          <cmt:code>
    1183 &gt; cmt show projects
    1184 &gt; cmt show project &lt;project-name&gt;</cmt:code>
    1185 
    1186        <p></p></li>
    1187 
    1188        <li>The installation area mechanism is strongly connected with
    1189        the <tt>CMTPATH</tt> hierarchy. Therefore it will also be connected with
    1190        the project concept. This will happen through several
    1191        mechanisms:<p></p>
    1192 
    1193          <ul>
    1194 
    1195            <li>The <tt>&lt;project&gt;</tt> parameter is expanded in the
    1196            <tt>cmtpath_pattern</tt> construct in addition to the
    1197            <tt>&lt;path&gt;</tt> parameter. This parameter is assigned
    1198            the name of the project associated with the running
    1199            <tt>CMTPATH</tt> entry.  <p></p></li>
    1200 
    1201            <li>The <tt>&lt;project&gt;</tt> parameter is also available
    1202            for normal patterns. In this case it is assigned the
    1203            project name associated with the cmtpath parameter for the
    1204            current package.<p></p></li>
    1205 
    1206            <li>Every project defines a tag of the same name, and the
    1207            tag of the current project is active.<p></p></li>
    1208 
    1209            <li>The <tt>cmt_installarea_prefix</tt> macro is specialized
    1210            <i>per project</i> and every project may override the
    1211            <tt>&lt;project&gt;_installarea_prefix</tt> macro. The
    1212            default value of any
    1213            <tt>&lt;project&gt;_installarea_prefix</tt> is
    1214            <tt>${cmt_installarea_prefix}</tt>
    1215            <p></p></li>
    1216          </ul>
    1217        <p></p></li>
    1218 
    1219        <li>Every strategy setting defines two mutually exclusive tags and activates one of them.
    1220 
    1221          <cmt:cmtcode>
    1222 &lt;project&gt;_&lt;have_item&gt;
    1223 &lt;project&gt;_&lt;have_not_item&gt; </cmt:cmtcode>
    1224 
    1225          Examples
    1226 
    1227          <cmt:cmtcode>
    1228 &lt;project&gt;_prototypes
    1229 &lt;project&gt;_no_prototypes
    1230 &lt;project&gt;_with_install_area
    1231 &lt;project&gt;_without_install_area
    1232 &lt;project&gt;_config
    1233 &lt;project&gt;_no_config
    1234 &lt;project&gt;_root
    1235 &lt;project&gt;_no_root
    1236 &lt;project&gt;_cleanup
    1237 &lt;project&gt;_no_cleanup</cmt:cmtcode>
    1238 
    1239        <p></p></li>
    1240      </ul>
    12411266
    12421267  </cmt:section>
     
    23382363      <p> Most of the options provided by the <tt>cmt</tt> user
    23392364      interface are still available in these conditions. </p>
    2340 
    2341     </cmt:section>
    2342 
    2343     <cmt:section title="Construction of a global environment">
    2344 
    2345       <p>A software base generally consists in many <i>packages</i>,
    2346       some of them providing <i>libraries</i> or <i>documents</i>,
    2347       others providing <i>applications</i>, some providing both, some
    2348       providing just <i>glues</i> towards external software
    2349       products.</p>
    2350 
    2351       <p> On another view, this software base may a mix of packages
    2352       shared between several projects and sets of packages specific to
    2353       various projects. One may have several software bases as well
    2354       (combined using the <tt>CMTPATH</tt> environment variable). </p>
    2355 
    2356       <p> In such contexts, it is often desirable that a given project
    2357       defines its own selection of all existing packages. This can
    2358       easily be done with <tt>CMT</tt> by defining a <i>project</i>
    2359       package, containing only <tt>use</tt> statements towards the
    2360       appropriate selection of packages for this particular
    2361       project. </p>
    2362 
    2363       <p>Let's consider as an example the project named
    2364       <tt>MyProject</tt>. We may create the package named
    2365       <tt>MyProject</tt> similarly to any other package : </p>
    2366 
    2367       <cmt:code>
    2368 csh&gt; cd .....
    2369 csh&gt; cmt create MyProject v1 /ProjectB</cmt:code>
    2370 
    2371       <p> Then the <tt> &CMTrequirements;</tt> file of this new package
    2372       will simply contain a set of <tt>use</tt> statements, defining the
    2373       <i>official</i> set of validated versions of the packages
    2374       required for the project. This mechanism also represents the
    2375       notion of <i>global release</i> traditionally addressed in
    2376       configuration management environments </p>
    2377 
    2378       <cmt:cmtcode>
    2379 package MyProject
    2380 
    2381 use Cm v7r6
    2382 use Db v4r3
    2383 use El v4r2
    2384 use Su v5
    2385 use DbUI v1r2 Db
    2386 use ElUI v1r1 El
    2387 use VSUUI v3  Su/VSU
    2388 use VMM   v1
    2389 use VPC   v3 </cmt:cmtcode>
    2390 
    2391       <p>Then any user wanting to access the so-called <i>official</i>
    2392       release of the package set appropriate to the project
    2393       <tt>MyProject</tt> will simply do (typically within its login
    2394       shell script) : </p>
    2395 
    2396       <cmt:code>
    2397 # a login script
    2398 
    2399 ...
    2400 
    2401 source /ProjectB/MyProject/v1/cmt/setup.csh </cmt:code>
    2402 
    2403       <p>Later on, future evolutions of the <tt>MyProject</tt> package
    2404       will reflect progressive integration steps, which
    2405       <i>validate</i> the evolutions of each referenced package. </p>
    24062365
    24072366    </cmt:section>
     
    45704529   config                  : generate setup and cleanup scripts
    45714530   create &amp;lt;package&gt; &lt;version&gt; [&lt;path&gt;] : create and configure a new package
    4572    create_project &amp;lt;project&gt; : create and configure a new project
     4531   create_project &amp;lt;project&gt; &lt;name&gt; [&lt;path&gt;] : create and configure a new project
    45734532   cvsbranches &amp;lt;module&gt;      : display the subdirectories for a module
    45744533   cvssubpackagess &amp;lt;module&gt;  : display the subpackages for a module
  • CMT/v1r19/doc/table.html

    r11 r21  
    1919  <li><a href="http://www.cecill.info/licences" target="Contents">Copyright</a></li>
    2020  <li><a href="documents.html" target="Contents">Documentation</a></li>
    21   <li><a href="http://www.cmtsite.org/cgi-bin/cvstrac.cgi/CMT/" target="Contents">Bug reporting</a></li>
     21  <li><a href="http://trac.lal.in2p3.fr/CMT/" target="Contents">Bug reporting</a></li>
    2222  <li><a href="discussion.html" target="Contents">Discussion</a></li>
    2323  <li><a href="http://www.lal.in2p3.fr/cgi-bin/cvsweb/cvsweb.cgi/CMT/" target="Contents">Repository</a></li>
Note: See TracChangeset for help on using the changeset viewer.