Changeset 18


Ignore:
Timestamp:
Mar 30, 2005, 9:04:49 AM (19 years ago)
Author:
arnault
Message:

Project mgmt fixes - See CL 260

Location:
CMT/v1r19
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • CMT/v1r19/ChangeLog

    r17 r18  
     1
     22005-03-30  Christian Arnault  <arnault@lal.in2p3.fr> 260
     3
     4        * doc/CMTDoc.xml: work on the doc (unfinished)
     5
     6        * source/cmt_project.cxx (use_action): The name specification of a
     7        project use statement is used to create the project.
     8 
     9        * source/cmt_project.cxx (create_project): Implement the algo to
     10        construct or discover the real project name and release from the
     11        context. The new algo supports release specifications as a
     12        multi-level directory definition.
     13
     14        * source/cmt_project.cxx (get_release_from_path): Function to
     15        retreive the release sub-string from a path, given the project
     16        name.
     17
     18        * source/cmt_project.h (class ProjectFactory): Add the project
     19        name as first argument to the create_project function.
     20
     21        * source/cmt_system.cxx (class CMTPathManager): when specified
     22        from a CMTPATH item, the project creation has to guess the project
     23        name.
     24
     25        * mgr/Makefile (gendoc): Suppress the | output modifier
     26
    1272005-03-16  Christian Arnault  <arnault@lal.in2p3.fr> 259
    228
  • CMT/v1r19/doc/CMTDoc.html

    r11 r18  
    2323<center>Christian Arnault</center>
    2424<center><tt>arnault@lal.in2p3.fr</tt></center></h2>
    25 <center><i>Document revision date : 2004-12-01</i></center><hr><h2><a href="#index">General index</a></h2>
     25<center><i>Document revision date : 2005-03-21</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>
    2828  <p>This environment, based on some management conventions and
    29       comprising several shell-based utilities, is an attempt to
     29      comprising several utilities, is an attempt to
    3030      formalize software production and especially configuration
    3131      management around a <i>package</i>
     
    6464    <li> Many such packages are produced and maintained.  </li>
    6565      <li> Packages sets may be structured in <i>areas</i>
    66             implementing a project oriented organization.  </li>
    67       <li> The packages may or not be related to each other
    68         (defining a <i>direct acyclic graph</i>
     66              implementing a <i>project</i>
     67     oriented organization.  </li>
     68      <li> The projects represent independent organisations of
     69                packages, but may be interconnected as a <i>direct acyclic
     70              graph</i>
     71     of projects</li>
     72      <li> The packages may or not be related with each other
     73        (defining also a <i>direct acyclic graph</i>
    6974       of packages - not just
    7075        a single tree).  </li>
     
    114119                    be fully compatible with each other. </li>
    115120      </ul>
     121    </li>
     122      <li>Projects are also referenced using a <i>release</i>
    116123    </li>
    117124      <li> Version control and management schemes (eg. by using
     
    176183<blockquote>
    177184  <p>This environment relies on a set of conventions, mainly for
    178       organizing the directories where packages are maintained and
    179     developed : </p>
     185      organizing the directories where projects and packages are
     186    maintained and developed : </p>
    180187  <ul>
    181188    <li> Each package is installed in a standard directory structure
    182189          defined at least as follows:
    183190<pre>&lt;some root&gt;/&lt;Package mnemonic&gt;/&lt;version mnemonic&gt;/cmt</pre>
    184       <p>or / and (<i>obsolescent convention</i>
     191      <p>or (<i>obsolescent convention</i>
    185192      )
    186193<pre>&lt;some root&gt;/&lt;Package mnemonic&gt;/&lt;version mnemonic&gt;/mgr</pre>
     
    256263              sets of packages, each installed in its specific root
    257264              directory and forming different <i>package areas</i>
     265       or
     266      <i>sub-projects</i>
    258267    </p>
    259       <p>There are no constraints on the number of such areas into
    260               which <tt>CMT</tt>
    261        packages are installed. We'll see <a HREF="#Localizing a package">later</a>
    262        how the different
    263               areas can be declared and identified by <tt>CMT</tt>
    264     .</p>
    265268      <p>Package areas implement the concept of <i>projects</i>
    266269       or
     
    268271       which correspond to the practical
    269272            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
     278      <tt>CMT</tt>
     279    .</p>
    270280    <p>examples of such organization can be : </p>
    271281<center>
     
    285295  ) provides the basic management
    286296      tools. <tt>CMT</tt>
    287   , as a package, has very little specificities and
    288       as such itself obeys the general conventions. The major asymetry
    289       between <tt>CMT</tt>
    290    and all other packages is the fact that once
    291   <tt>CMT</tt>
    292    is installed it implicitly defines one <i>default</i>
    293       area for storing packages (through the environment variable
    294   <tt>CMTROOT</tt>
    295 ).</p>
    296   <p>Then packages may be installed either in this default root area
    297       or in completely different areas. The only constraint in this case
    298       being that their root directory will have to be specified
    299       explicitly using the <tt>CMTPATH</tt>
    300  search list.</p>
    301   <p>A typical configuration for this environment consists of
    302       selecting a public area (generally available from several machines
    303       through an <tt>NFS</tt>
    304    or <tt>AFS</tt>
    305   -like mechanism), installing
    306       the <tt>CMT</tt>
    307    basic package, and then installing user packages in
    308       this default area or in project specific ones.  One frequent
    309       semantic given to this style of configuration is to consider the
    310       packages installed in the area hanging below default root as the
    311       publicly available products, whereas packages installed elsewhere
    312       are rather meant to be managed in a specific project. However,
    313       dependencies between packages will always be possible (as long as
    314       the system based protections provide appropriate access
    315     rights). </p>
     297  , as a package, has very little specificities
     298    and as such itself obeys the general conventions.</p>
     299  <p>Then the complete software base is organized in terms of
     300      projects (or <i>sub-projects</i>
     301  ), containing consistently managed
     302      package sets. Projects are localized either globally or
     303      individually:
     304    <ul>
     305      <li>globally using the environment variable
     306      <tt>CMTPROJECTPATH</tt>
     307       that describes all locations where CMT
     308            projects can be found</li>
     309      <li>individually using the environment variable
     310      <tt>CMTPATH</tt>
     311       that describe all package areas where
     312            packages can be found</li>
     313  </ul>
     314      Packages are localized respectively to the projects they belong
     315    to.</p>
     316  <p>It should be noted that the choice of a location for installing
     317      CMT itself is totally independent of the locations where projects
     318    are installed and managed.</p>
    316319  <p><tt>CMT</tt>
    317320   is operated through one main user interface : the
    318321  <tt>cmt</tt>
    319    command, which handles the <tt>CMT</tt>
    320    conventions and
    321     which provides a set of services for : </p>
     322   command, which operates the <tt>CMT</tt>
     323   conventions
     324    and which provides a set of services for : </p>
    322325  <ul>
    323     <li> creating a new package, installing it below the default
    324           root or in a private area. This operation will create or check
     326    <li> creating a new package. This operation will create or check
    325327          the local package directory tree and generate several minimal
    326328          scripts (see the description of the <a HREF="#create">create</a>
     
    353355   or <tt>OS9</tt>
    354356  , setting up protections for
    355     packages (though locks) etc...). </p>
     357    packages (through locks) etc...). </p>
    356358<hr><h3><a name="Supported platforms"></a><a href="#index"><tt>&nbsp;3.&nbsp;1</tt></a> - Supported platforms</h3>
    357359<blockquote>
     
    388390</blockquote>
    389391</blockquote>
    390 <hr><h2><a name="Installing a new package"></a><a href="#index"><tt>&nbsp;4</tt></a> - Installing a new package</h2>
     392<hr><h2><a name="Defining and managing projects"></a><a href="#index"><tt>&nbsp;4</tt></a> - Defining and managing projects</h2>
     393<blockquote>
     394  <p>In the CMT terminology, the complete software base is composed
     395      of CMT packages. Those packages are organized into
     396      sub-projects. The semantics of a sub-project is very opened since
     397      it's merely an area for grouping CMT packages. Typically
     398    sub-projects may correspond to</p>
     399  <ul>
     400    <li>a structuration in software domains, such as Reconstruction,
     401        Simulation, Graphics, Core, etc.</li>
     402    <li>how responsibilities or management policy are defined and
     403        assigned </li>
     404    <li>reusing or sharing different software products from
     405        different projects</li>
     406</ul>
     407  <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>
     411  <ul>
     412    <li><tt>CMTPROJECTPATH</tt>
     413  </li>
     414    <li><tt>CMTPATH</tt>
     415  </li>
     416</ul>
     417<hr><h3><a name="CMTPROJECTPATH"></a><a href="#index"><tt>&nbsp;4.&nbsp;1</tt></a> - CMTPROJECTPATH</h3>
     418<blockquote>
     419  <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>
     426   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>
     437  </blockquote>
     438</p>
     439  <p>A sub-project in itself is a two-level directory structure,
     440        located below one of the items of this search list, and composed
     441      of:</p>
     442  <ul>
     443  <li>the sub-project name</li>
     444  <li>the sub-project release</li>
     445</ul>
     446<p>Then, below this directory structure, we find</p>
     447  <ul>
     448    <li>A project definition file in <tt>cmt/project.cmt</tt>
     449  </li>
     450  <li>A set of CMT packages</li>
     451</ul>
     452<p>A typical example of such a structure could be:</p>
     453<pre>
     454/project-area1/Reconstruction/1.0/cmt/project.cmt
     455                                 /RecA/...
     456                                 /RecB/...
     457/project-area1/Reconstruction/2.0/cmt/project.cmt
     458                                 /RecA/...
     459                                 /RecB/...
     460
     461/project-area1/Simulation/1.0/cmt/project.cmt
     462                             /SimA/...
     463                             /SimB/...
     464/project-area1/Core/1.0/cmt/project.cmt
     465                       /CoreA/...
     466                       /CoreB/...
     467
     468
     469/project-area2/ProductA/1.1.2/cmt/project.cmt
     470                             /PA_A/...
     471                             /PA_B/...
     472                             /PA_C/...
     473/project-area2/ProductB/v1r8p3/cmt/project.cmt
     474                              /PB_A/...
     475                              /PB_B/...
     476/project-area2/ProductB/v1r10/cmt/project.cmt
     477                             /PB_A/...
     478                             /PB_B/...   </pre>
     479  <ul>
     480    <li>there are two project areas, one for the main
     481          developments, and another one for managing external products</li>
     482    <li><tt>project-area1</tt>
     483     offers three sub-projects
     484    <tt>Reconstruction</tt>
     485    , <tt>Simulation</tt>
     486     and
     487    <tt>Core</tt>
     488  </li>
     489    <li><tt>project-area2</tt>
     490     offers two sub-projects
     491    <tt>ProductA</tt>
     492     and <tt>ProductB</tt>
     493  </li>
     494    <li>the sub-project <tt>Reconstruction</tt>
     495     is available in two
     496            releases <tt>1.0</tt>
     497     and <tt>2.0</tt>
     498  </li>
     499    <li>the sub-project <tt>Reconstruction</tt>
     500     offers two packages
     501    <tt>RecA</tt>
     502     and <tt>RecB</tt>
     503  </li>
     504    <li>the sub-project <tt>ProductB</tt>
     505     is available in two
     506            releases <tt>v1r8p3</tt>
     507     and <tt>v1r10</tt>
     508  </li>
     509</ul>
     510  <p>This search list is considered to interpret the <i>use</i>
     511        statements written in the project files. This project use
     512      statement takes the form:</p>
     513<center>
     514<table cols="3">
     515<tr>
     516<td></td>
     517<td width="10"></td>
     518<td></td>
     519</tr>
     520<tr>
     521<td class="rule"><font face="courier new, courier" COLOR="#770000"><i><a name="kwproject-use-project-use"></a>project-use</i></font></td>
     522<td class="rule">:</td>
     523<td class="rule">
     524<font face="courier new, courier" COLOR="#FF0000">
     525use
     526</font>
     527<font face="courier new, courier" COLOR="#770000"><i>
     528project-name
     529</i></font>
     530<font face="courier new, courier" COLOR="#770000"><i>
     531project-release
     532</i></font>
     533</td>
     534</tr>
     535</table>
     536</center>
     537  <p>Typically, in our example one could construct the project
     538        file of the <tt>Reconstruction</tt>
     539 sub-project as follows:</p>
     540<pre>
     541use Core 1.0
     542use ProductA 1.1.2</pre>
     543    <p><i>Note that sub-project release identifiers are considered
     544        using a perfect-match principle.</i>
     545</p>
     546  <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>
     549  <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>
     556<blockquote>
     557  <p>This is an environment variable containing a search list,
     558        very similar to the well know <tt>PATH</tt>
     559   environment
     560        variable, containing a list of file paths where CMT packages can
     561        be found. The syntax of this search list follows the standard
     562        syntax of search lists, i.e. items are separated using a
     563  <tt>:</tt>
     564   character on Unix and a <tt>;</tt>
     565   character on
     566      Windows.</p>
     567      <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>
     574  </blockquote>
     575</p>
     576<p>There should be one entry</p>
     577</blockquote>
     578</blockquote>
     579<hr><h2><a name="Installing a new package"></a><a href="#index"><tt>&nbsp;5</tt></a> - Installing a new package</h2>
    391580<blockquote>
    392581  <p>We consider here the installation of a user package. Installing
     
    395584      dedicated <a href="#Installing CMT for the first time">section</a>
    396585    of this document.</p>
    397   <p>Therefore, we assume that <i>some</i>
    398    root directory has been
    399       selected by the system manager, and that <tt>CMT</tt>
    400    is already
    401       installed there.  One first has to <i>setup</i>
     586  <p>Therefore, we assume that <tt>CMT</tt>
     587   is already installed in
     588      some location in the system.  One first has to <i>setup</i>
    402589  <tt>CMT</tt>
    403    in
    404       order to gain access to the various management utilities, using
    405     for example the shell command: </p>
     590   in order to gain access to the various management
     591    utilities, using for example the shell command: </p>
    406592<pre>
    407593csh&gt; source /lal/CMT/v1r18p20041201/mgr/setup.csh
     
    414600
    415601dos&gt; call \lal\CMT\v1r18p20041201\mgr\setup.bat</pre>
    416   <p>Obviously, this operation <tt>must</tt>
     602  <p>Obviously, this operation <i>must</i>
    417603   be performed (once)
    418604      before any other <tt>CMT</tt>
     
    426612     used in this example is a constant
    427613            in the <tt>CMT</tt>
    428      environment : every configured package will
    429             have one such setup script automatically generated and
     614     environment : every configured package
     615            will have one such setup script automatically generated and
    430616            installed by <tt>CMT</tt>
    431617    . It is one important entry point to
    432618            any package (and thus to <tt>CMT</tt>
    433619     itself). It provides
    434             environment variable definitions and recursive invocations of
    435             setup scripts for related (<i>used</i>
    436     ) packages (A
    437             corresponding cleanup script is also provided). This script
    438             contains a uniform mechanism for <i>interpreting</i>
     620            environment variable definitions for all related (<i>used</i>
     621    )
     622            packages (A corresponding cleanup script is also
     623            provided). This script contains a uniform mechanism for
     624    <i>interpreting</i>
    439625     the &nbsp;<a HREF='#The requirements file'>requirements</a>&nbsp; file so as to
    440626            dynamically define environment variables, aliases for the
     
    459645Installing the cmt directory
    460646Creating a new project file </font></i></pre>
    461   <p>Once this project has been created we have a complete
    462       environment to start creating packages and working out our
    463     software base.</p>
     647  <p>This creates a project structure (i.e. a
     648  <tt>cmt/project.cmt</tt>
     649   file) from the current directory. Once
     650      this project has been created we have a complete environment to
     651    start creating packages and working out our software base.</p>
    464652  <p> A package is primarily defined by a <i>name</i>
    465653   and a
     
    664852<i><font COLOR="#000077" face="courier new, courier">Hello Foo</font></i></pre>
    665853</blockquote>
    666 <hr><h2><a name="Localizing a package"></a><a href="#index"><tt>&nbsp;5</tt></a> - Localizing a package</h2>
     854<hr><h2><a name="Localizing a package"></a><a href="#index"><tt>&nbsp;6</tt></a> - Localizing a package</h2>
    667855<blockquote>
    668856  <p>In the next sections, we'll see that packages <i>reference</i>
     
    753941<hr></blockquote>
    754942  <p>If the <i>path</i>
    755    argument is specified as a relative path
     943  argument is specified as a relative path
    756944      (case #2 above) (ie. there is no leading <i>slash</i>
    757945   character or
     
    8431031</p>
    8441032</blockquote>
    845 <hr><h2><a name="The concept of project"></a><a href="#index"><tt>&nbsp;6</tt></a> - The concept of project</h2>
     1033<hr><h2><a name="The concept of project"></a><a href="#index"><tt>&nbsp;7</tt></a> - The concept of project</h2>
    8461034<blockquote>
    8471035    The purpose of the concept of <i>project</i>
     
    10001188</ul>
    10011189</blockquote>
    1002 <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>
     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>
    10031191<blockquote>
    10041192    Generally speaking, CMT makes no assumption on how or why is used
    10051193    a package. However past experience has shown that packages can be
    10061194    categorized according to their purpose or their type of contents.
    1007 <hr><h3><a name="The primary package"></a><a href="#index"><tt>&nbsp;7.&nbsp;1</tt></a> - The primary package</h3>
     1195<hr><h3><a name="The primary package"></a><a href="#index"><tt>&nbsp;8.&nbsp;1</tt></a> - The primary package</h3>
    10081196<blockquote>
    10091197      This is the most general and basic pakage type, which provides
     
    10331221 statements.</p>
    10341222</blockquote>
    1035 <hr><h3><a name="The policy package"></a><a href="#index"><tt>&nbsp;7.&nbsp;2</tt></a> - The policy package</h3>
     1223<hr><h3><a name="The policy package"></a><a href="#index"><tt>&nbsp;8.&nbsp;2</tt></a> - The policy package</h3>
    10361224<blockquote>
    10371225      This kind of package only provides conventions, working methods,
     
    10761264      Then the global policy package will use them
    10771265</blockquote>
    1078 <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>
     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>
    10791267<blockquote>
    10801268      In large projects, it's often useful to decompose the software
     
    11021290      packages of the domain.</p>
    11031291</blockquote>
    1104 <hr><h3><a name="The release package"></a><a href="#index"><tt>&nbsp;7.&nbsp;4</tt></a> - The release package</h3>
     1292<hr><h3><a name="The release package"></a><a href="#index"><tt>&nbsp;8.&nbsp;4</tt></a> - The release package</h3>
    11051293<blockquote>
    11061294      This package is one particular example of the container concept,
     
    11101298      assigned to the project releases themselves.
    11111299</blockquote>
    1112 <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>
     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>
    11131301<blockquote>
    11141302      This kind of package defines an interface to an existing
     
    11381326</blockquote>
    11391327</blockquote>
    1140 <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>
     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>
    11411329<blockquote>
    11421330  <p>Software bases managed by <tt>CMT</tt>
     
    11741362      LBNL  "/auto/atlas/sw/lhcxx"</pre>
    11751363</blockquote>
    1176 <hr><h2><a name="Configuring a package"></a><a href="#index"><tt>&nbsp;9</tt></a> - Configuring a package</h2>
     1364<hr><h2><a name="Configuring a package"></a><a href="#index"><tt>10</tt></a> - Configuring a package</h2>
    11771365<blockquote>
    11781366  <p>The first ingredient of a proper package configuration is the
     
    12731461</ul>
    12741462</blockquote>
    1275 <hr><h2><a name="Selecting a specific configuration"></a><a href="#index"><tt>10</tt></a> - Selecting a specific configuration</h2>
     1463<hr><h2><a name="Selecting a specific configuration"></a><a href="#index"><tt>11</tt></a> - Selecting a specific configuration</h2>
    12761464<blockquote>
    12771465    A configuration describes the conditions in which the package has
     
    13091497 between machines running different operating
    13101498    systems, or when a project has to be deployed on several sites.
    1311 <hr><h3><a name="Describing a configuration"></a><a href="#index"><tt>10.&nbsp;1</tt></a> - Describing a configuration</h3>
     1499<hr><h3><a name="Describing a configuration"></a><a href="#index"><tt>11.&nbsp;1</tt></a> - Describing a configuration</h3>
    13121500<blockquote>
    13131501  <p><tt>CMT</tt>
     
    15111699</ol>
    15121700</blockquote>
    1513 <hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>10.&nbsp;2</tt></a> - Defining the user tags</h3>
     1701<hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>11.&nbsp;2</tt></a> - Defining the user tags</h3>
    15141702<blockquote>
    15151703  <p>The user configuration tags can generally be specified though
     
    15771765</ul>
    15781766</blockquote>
    1579 <hr><h3><a name="Activating tags"></a><a href="#index"><tt>10.&nbsp;3</tt></a> - Activating tags</h3>
     1767<hr><h3><a name="Activating tags"></a><a href="#index"><tt>11.&nbsp;3</tt></a> - Activating tags</h3>
    15801768<blockquote>
    15811769      By default, <tt>CMTCONFIG</tt>
     
    17231911</blockquote>
    17241912</blockquote>
    1725 <hr><h2><a name="Working on a package"></a><a href="#index"><tt>11</tt></a> - Working on a package</h2>
     1913<hr><h2><a name="Working on a package"></a><a href="#index"><tt>12</tt></a> - Working on a package</h2>
    17261914<blockquote>
    17271915  <p>In this section, we'll see, through a quite simple scenario,
     
    17301918   of the <tt>Foo</tt>
    17311919    package already used in this document. </p>
    1732 <hr><h3><a name="Working on a library"></a><a href="#index"><tt>11.&nbsp;1</tt></a> - Working on a library</h3>
     1920<hr><h3><a name="Working on a library"></a><a href="#index"><tt>12.&nbsp;1</tt></a> - Working on a library</h3>
    17331921<blockquote>
    17341922  <p>Let's assume, as a first example, that the <tt>Foo</tt>
     
    18782066      operation</p>
    18792067</blockquote>
    1880 <hr><h3><a name="Working on an application"></a><a href="#index"><tt>11.&nbsp;2</tt></a> - Working on an application</h3>
     2068<hr><h3><a name="Working on an application"></a><a href="#index"><tt>12.&nbsp;2</tt></a> - Working on an application</h3>
    18812069<blockquote>
    18822070  <p>Assume we now want to add a test program to our
     
    19632151</ul>
    19642152</blockquote>
    1965 <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>
     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>
    19662154<blockquote>
    19672155      It is also possible to work on a <i>test</i>
     
    19902178      interface are still available in these conditions. </p>
    19912179</blockquote>
    1992 <hr><h3><a name="Construction of a global environment"></a><a href="#index"><tt>11.&nbsp;4</tt></a> - Construction of a global environment</h3>
     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>
    19932181<blockquote>
    19942182  <p>A software base generally consists in many <i>packages</i>
     
    20632251</blockquote>
    20642252</blockquote>
    2065 <hr><h2><a name="Defining a document generator"></a><a href="#index"><tt>12</tt></a> - Defining a document generator</h2>
     2253<hr><h2><a name="Defining a document generator"></a><a href="#index"><tt>13</tt></a> - Defining a document generator</h2>
    20662254<blockquote>
    20672255  <p> In a Unix environment, documents are built using <tt>make</tt>
     
    21242312      containing one main target. Both the resulting make fragment and
    21252313    the make target will have the name of the constituent.</p>
    2126 <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>
     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>
    21272315<blockquote>
    21282316  <p>
     
    22522440</ul>
    22532441</blockquote>
    2254 <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>
     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>
    22552443<blockquote>
    22562444<blockquote><hr>
     
    24062594</center>
    24072595</blockquote>
    2408 <hr><h3><a name="Examples"></a><a href="#index"><tt>12.&nbsp;3</tt></a> - Examples</h3>
     2596<hr><h3><a name="Examples"></a><a href="#index"><tt>13.&nbsp;3</tt></a> - Examples</h3>
    24092597<blockquote>
    24102598  <ol>
     
    24632651</blockquote>
    24642652</blockquote>
    2465 <hr><h2><a name="The tools provided by CMT"></a><a href="#index"><tt>13</tt></a> - The tools provided by CMT</h2>
     2653<hr><h2><a name="The tools provided by CMT"></a><a href="#index"><tt>14</tt></a> - The tools provided by CMT</h2>
    24662654<blockquote>
    24672655        The set of conventions and tools provided by <tt>CMT</tt>
     
    24972685            commands available through the <tt>cmt</tt>
    24982686 user interface. </p>
    2499 <hr><h3><a name="The requirements file"></a><a href="#index"><tt>13.&nbsp;1</tt></a> - The requirements file</h3>
    2500 <blockquote>
    2501 <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>
     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>
    25022690<blockquote>
    25032691  <ul>
     
    25132701                      by space characters).</p>
    25142702      <p>Each statement is composed of words separated with spaces
    2515                       or tabulations.</p>
     2703               or tabulations.</p>
    25162704      <p>The first word of a statement is the name of the
    25172705                      configuration parameter.</p>
     
    25642752      <p>Comments : they start with the <tt>#</tt>
    25652753       character and
    2566                         extend up to the end of the current line.
     2754                  extend up to the end of the current line.
    25672755    </p>
    25682756  </li>
     
    25722760</blockquote>
    25732761</blockquote>
    2574 <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>
    2575 <blockquote>
    2576 <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>
    2577 <blockquote>
    2578 </blockquote>
    2579 <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>
     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>
    25802768<blockquote>
    25812769            The author and manager names
    25822770</blockquote>
    2583 <hr><h4><a name="package, version"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;3</tt></a> - package, version</h4>
     2771<hr><h4><a name="package, version"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;3</tt></a> - package, version</h4>
    25842772<blockquote>
    25852773            The package name and version. These statements are purely
    25862774            informational.
    25872775</blockquote>
    2588 <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>
     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>
    25892777<blockquote>
    25902778  <p>Describe the composition of a constituent. Application
     
    28463034</ol>
    28473035</blockquote>
    2848 <hr><h4><a name="Groups"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;5</tt></a> - Groups</h4>
     3036<hr><h4><a name="Groups"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;5</tt></a> - Groups</h4>
    28493037<blockquote>
    28503038            Groups permit the organization of the constituents that must
     
    28953083 related constituents.</p>
    28963084</blockquote>
    2897 <hr><h4><a name="Languages"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;6</tt></a> - Languages</h4>
     3085<hr><h4><a name="Languages"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;6</tt></a> - Languages</h4>
    28983086<blockquote>
    28993087            Some computer languages are known by default by <tt>CMT</tt>
     
    29913179.
    29923180</blockquote>
    2993 <hr><h4><a name="Symbols"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;7</tt></a> - Symbols</h4>
     3181<hr><h4><a name="Symbols"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;7</tt></a> - Symbols</h4>
    29943182<blockquote>
    29953183  <p>This is a generic concept supporting the notion of
     
    33653553      VisualC         "link.exe /nologo /machine:IX86 "
    33663554</pre>
    3367 <hr><h5><a name="actions"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;7.&nbsp;1</tt></a> - actions</h5>
    3368 <blockquote>
    3369            Actions are one of the possible symbols. Their
     3555<hr><h5><a name="actions"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;7.&nbsp;1</tt></a> - actions</h5>
     3556<blockquote>
     3557              Actions are one of the possible symbols. Their
    33703558              definition as said previously follow the generic
    33713559              conventions for any symbol type, and they implement the
     
    34393627</blockquote>
    34403628</blockquote>
    3441 <hr><h4><a name="use"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;8</tt></a> - use</h4>
     3629<hr><h4><a name="use"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;8</tt></a> - use</h4>
    34423630<blockquote>
    34433631  <p>Describe the relationships with other packages; the
     
    35263714</ul>
    35273715</blockquote>
    3528 <hr><h4><a name="patterns"></a><a href="#index"><tt>13.&nbsp;2.&nbsp;9</tt></a> - patterns</h4>
     3716<hr><h4><a name="patterns"></a><a href="#index"><tt>14.&nbsp;2.&nbsp;9</tt></a> - patterns</h4>
    35293717<blockquote>
    35303718  <p>Often, similar configuration items are needed over a
     
    36543842      <tt>${&lt;package&gt;_root}/src</tt>
    36553843      . However, often projects
    3656                         need to override this default convention, and typical
     3844                need to override this default convention, and typical
    36573845                        example is to set it to a branch named with the package
    36583846                        name. This convention is easily applied by defining a
     
    36933881    <p>Installing a systematic test application in all packages</p>
    36943882      <p>Quality assurance requirements might specify that every
    3695                         package should provide a test program. One way to enforce
     3883            package should provide a test program. One way to enforce
    36963884                        this is to build a global pattern declaring this
    36973885                        application. Then every make command would naturally
     
    37053893  </li>
    37063894</ol>
    3707 <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>
     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>
    37083896<blockquote>
    37093897              According to whether the <tt>-global</tt>
     
    37703958</blockquote>
    37713959</blockquote>
    3772 <hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>13.&nbsp;2.10</tt></a> - cmtpath_patterns</h4>
     3960<hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>14.&nbsp;2.10</tt></a> - cmtpath_patterns</h4>
    37733961<blockquote>
    37743962  <p>These patterns act quite similarly to the <i>global</i>
     
    37783966  <i>packages</i>
    37793967  , they are automatically applied to all
    3780       entries in the <tt>CMTPATH</tt>
     3968            entries in the <tt>CMTPATH</tt>
    37813969 list.</p>
    37823970  <p>Only few system parameters can be used here:
     
    38174005</p>
    38184006</blockquote>
    3819 <hr><h4><a name="branches"></a><a href="#index"><tt>13.&nbsp;2.11</tt></a> - branches</h4>
     4007<hr><h4><a name="branches"></a><a href="#index"><tt>14.&nbsp;2.11</tt></a> - branches</h4>
    38204008<blockquote>
    38214009  <p>Describe the specific directory branches to be added while
     
    38324020.</p>
    38334021</blockquote>
    3834 <hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>13.&nbsp;2.12</tt></a> - Strategy specifications</h4>
     4022<hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>14.&nbsp;2.12</tt></a> - Strategy specifications</h4>
    38354023<blockquote>
    38364024  <p>Users can control the behaviour of <tt>CMT</tt>
     
    39534141&lt;project&gt;_no_cleanup</pre>
    39544142</blockquote>
    3955 <hr><h4><a name="setup_script, cleanup_script"></a><a href="#index"><tt>13.&nbsp;2.13</tt></a> - setup_script, cleanup_script</h4>
     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>
    39564144<blockquote>
    39574145  <p>Specify user defined configuration scripts, which will be
     
    39794167).</p>
    39804168</blockquote>
    3981 <hr><h4><a name="include_path"></a><a href="#index"><tt>13.&nbsp;2.14</tt></a> - include_path</h4>
     4169<hr><h4><a name="include_path"></a><a href="#index"><tt>14.&nbsp;2.14</tt></a> - include_path</h4>
    39824170<blockquote>
    39834171  <p>Override the specification for the default include search
     
    39974185 instead).</p>
    39984186</blockquote>
    3999 <hr><h4><a name="include_dirs"></a><a href="#index"><tt>13.&nbsp;2.15</tt></a> - include_dirs</h4>
     4187<hr><h4><a name="include_dirs"></a><a href="#index"><tt>14.&nbsp;2.15</tt></a> - include_dirs</h4>
    40004188<blockquote>
    40014189<p>Add explicit specifications for include access paths.</p>
    40024190</blockquote>
    4003 <hr><h4><a name="make_fragment"></a><a href="#index"><tt>13.&nbsp;2.16</tt></a> - make_fragment</h4>
     4191<hr><h4><a name="make_fragment"></a><a href="#index"><tt>14.&nbsp;2.16</tt></a> - make_fragment</h4>
    40044192<blockquote>
    40054193  <p>This statement specifies a specialized makefile fragment,
     
    40344222    <li> those used internally by CMT as primary building
    40354223                    blocks for assembling the makefile. (Generally developers
    4036                   should not see them).
     4224                    should not see them).
    40374225<blockquote><hr>
    40384226      <i>
     
    40774265                libraries (in which case they have the <tt>_library</tt>
    40784266                suffix (eg. c_library, cpp_library, fortran_library). A set
    4079      of language definitions (C, C++, Fortran, Java, Lex, Yacc)
     4267                of language definitions (C, C++, Fortran, Java, Lex, Yacc)
    40804268                is provided by CMT itself but it is expected that projects
    4081                 add new languages according to their needs. Event if the
     4269             add new languages according to their needs. Event if the
    40824270                make fragment meant to be the implementation of a language
    40834271                support is declared, the language support itself must be
     
    41454333</p>
    41464334</blockquote>
    4147 <hr><h4><a name="public, private"></a><a href="#index"><tt>13.&nbsp;2.17</tt></a> - public, private</h4>
     4335<hr><h4><a name="public, private"></a><a href="#index"><tt>14.&nbsp;2.17</tt></a> - public, private</h4>
    41484336<blockquote>
    41494337  <p>The <tt>public</tt>
     
    41794367            the sub-trees whether they are public or private (in order
    41804368            to ensure the hierarchy dependencies)</p>
    4181 <hr><h5><a name="Scoping sections"></a><a href="#index"><tt>13.&nbsp;2.17.&nbsp;1</tt></a> - Scoping sections</h5>
     4369<hr><h5><a name="Scoping sections"></a><a href="#index"><tt>14.&nbsp;2.17.&nbsp;1</tt></a> - Scoping sections</h5>
    41824370<blockquote>
    41834371              By using the <tt>public</tt>
     
    42394427</blockquote>
    42404428</blockquote>
    4241 <hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>13.&nbsp;2.18</tt></a> - tag, apply_tag</h4>
     4429<hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>14.&nbsp;2.18</tt></a> - tag, apply_tag</h4>
    42424430<blockquote>
    42434431  <p>The <tt>tag</tt>
     
    42904478</blockquote>
    42914479</blockquote>
    4292 <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>
     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>
    42934481<blockquote>
    42944482          This utility (a shell script combined with a <tt>C++</tt>
     
    44104598   -no_cleanup             : inhibit install area cleanup</font></i></pre>
    44114599<p>The following sections present the detail of each available command. </p>
    4412 <hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;1</tt></a> - cmt broadcast</h4>
     4600<hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;1</tt></a> - cmt broadcast</h4>
    44134601<blockquote>
    44144602            This command tries to repeatedly execute a shell command in the
     
    44754663   list</li>
    44764664</ol>
    4477 <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>
     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>
    44784666<blockquote>
    44794667  <p>A priori any Unix or DOS shell command can be specified
     
    44924680            sometimes useful to have two levels of quotes</p>
    44934681</blockquote>
    4494 <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>
     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>
    44954683<blockquote>
    44964684  <p>Similarly to what exists in the <a href="#patterns">pattern</a>
     
    45594747</blockquote>
    45604748</blockquote>
    4561 <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>
     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>
    45624750<blockquote>
    45634751  <p>The actions associated with the build options are
     
    46144802       for Unix environments. The main makefile is
    46154803                        expected to be named <tt>NMake</tt>
    4616        and the standard header
     4804      and the standard header
    46174805                        is named <tt>NMakefile.header</tt>
    46184806    </p>
     
    47164904</ul>
    47174905</blockquote>
    4718 <hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;3</tt></a> - cmt check configuration</h4>
     4906<hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;3</tt></a> - cmt check configuration</h4>
    47194907<blockquote>
    47204908            This command reads the hierarchy of requirements files
     
    47234911<p>An empty output means that everything is fine. </p>
    47244912</blockquote>
    4725 <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>
     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>
    47264914<blockquote>
    47274915            This command compares the reference file to the new file, and
     
    47324920) is produced. </p>
    47334921</blockquote>
    4734 <hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>13.&nbsp;3.&nbsp;5</tt></a> - cmt checkout ...</h4>
     4922<hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>14.&nbsp;3.&nbsp;5</tt></a> - cmt checkout ...</h4>
    47354923<blockquote>
    47364924            See the <a href="#Using cvs together with CMT">paragraph</a>
     
    47404928.
    47414929</blockquote>
    4742 <hr><h4><a name="cmt co ..."></a><a href="#index"><tt>13.&nbsp;3.&nbsp;6</tt></a> - cmt co ...</h4>
     4930<hr><h4><a name="cmt co ..."></a><a href="#index"><tt>14.&nbsp;3.&nbsp;6</tt></a> - cmt co ...</h4>
    47434931<blockquote>
    47444932            This is simply a short cut to the <tt>cmt checkout</tt>
    47454933 command.
    47464934</blockquote>
    4747 <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>
     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>
    47484936<blockquote>
    47494937            This command generates (to the standard output) a set of shell
     
    47554943 command. </p>
    47564944</blockquote>
    4757 <hr><h4><a name="cmt config"></a><a href="#index"><tt>13.&nbsp;3.&nbsp;8</tt></a> - cmt config</h4>
     4945<hr><h4><a name="cmt config"></a><a href="#index"><tt>14.&nbsp;3.&nbsp;8</tt></a> - cmt config</h4>
    47584946<blockquote>
    47594947  <p>This command (re-)generates the setup scripts and the
     
    47954983 are required any longer.</p>
    47964984</blockquote>
    4797 <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>
     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>
    47984986<blockquote>
    47994987  <p>
     
    48185006</ul>
    48195007</blockquote>
    4820 <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>
     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>
    48215009<blockquote>
    48225010            This command produces on the standard output an
     
    49485136</ul>
    49495137</blockquote>
    4950 <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>
     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>
    49515139<blockquote>
    49525140            This command reads &lt;in-file&gt;, substitutes all occurences
     
    49655153              configuration files, etc... </p>
    49665154</blockquote>
    4967 <hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>13.&nbsp;3.12</tt></a> - cmt help | --help</h4>
     5155<hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>14.&nbsp;3.12</tt></a> - cmt help | --help</h4>
    49685156<blockquote>
    49695157            This command shows the list of options of the <tt>cmt</tt>
    49705158 driver.
    49715159</blockquote>
    4972 <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>
     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>
    49735161<blockquote>
    49745162            This command tries to set a lock onto the current package (or onto the
     
    49955183</ol>
    49965184</blockquote>
    4997 <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>
     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>
    49985186<blockquote>
    49995187            This command removes one version of the specified package. If
     
    50095197              will be deleted.</p>
    50105198</blockquote>
    5011 <hr><h4><a name="cmt remove library_links"></a><a href="#index"><tt>13.&nbsp;3.15</tt></a> - cmt remove library_links</h4>
     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>
    50125200<blockquote>
    50135201            This command removes symbolic links towards all imported
     
    50185206            when one runs <tt>gmake clean</tt>
    50195207</blockquote>
    5020 <hr><h4><a name="cmt run [shell-command]"></a><a href="#index"><tt>13.&nbsp;3.16</tt></a> - cmt run [shell-command]</h4>
     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>
    50215209<blockquote>
    50225210            This command runs any shell command, in the context of the
     
    50385226            to any package context. </p>
    50395227</blockquote>
    5040 <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>
     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>
    50415229<blockquote>
    50425230            This command creates and/or fills in the
     
    50505238            one CMT package.</p>
    50515239</blockquote>
    5052 <hr><h4><a name="cmt set versions"></a><a href="#index"><tt>13.&nbsp;3.18</tt></a> - cmt set versions</h4>
     5240<hr><h4><a name="cmt set versions"></a><a href="#index"><tt>14.&nbsp;3.18</tt></a> - cmt set versions</h4>
    50535241<blockquote>
    50545242              This command applies recursively the <tt>cmt set version
     
    50615249 files</p>
    50625250</blockquote>
    5063 <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>
     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>
    50645252<blockquote>
    50655253            This command generates (to the standard output) a set of shell
     
    50765264 command.</p>
    50775265</blockquote>
    5078 <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>
     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>
    50795267<blockquote>
    50805268  <ul>
     
    51325320      <li><tt>groups</tt>
    51335321        <p>This command displays all groups possibly defined
    5134                         in constituents of the current package (using the
     5322                    in constituents of the current package (using the
    51355323          <tt>-group=&lt;<i>group-name</i>
    51365324        &gt;</tt>
     
    53795567</ul>
    53805568</blockquote>
    5381 <hr><h4><a name="cmt system"></a><a href="#index"><tt>13.&nbsp;3.21</tt></a> - cmt system</h4>
     5569<hr><h4><a name="cmt system"></a><a href="#index"><tt>14.&nbsp;3.21</tt></a> - cmt system</h4>
    53825570<blockquote>
    53835571            This command displays the current value assigned by default to
     
    53855573 environment variable.
    53865574</blockquote>
    5387 <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>
     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>
    53885576<blockquote>
    53895577            This command tries to remove a lock from the current package (or from the
     
    54085596</p>
    54095597</blockquote>
    5410 <hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>13.&nbsp;3.23</tt></a> - cmt version | --version</h4>
     5598<hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>14.&nbsp;3.23</tt></a> - cmt version | --version</h4>
    54115599<blockquote>
    54125600            This command shows the current verion of <tt>CMT</tt>
     
    54165604 sources.
    54175605</blockquote>
    5418 <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>
     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>
    54195607<blockquote>
    54205608            (see the section on <i>how tu use </i>
     
    54245612 for more details on this command)
    54255613</blockquote>
    5426 <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>
    5427 <blockquote>
    5428 </blockquote>
    5429 <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>
    5430 <blockquote>
    5431 </blockquote>
    5432 </blockquote>
    5433 <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>
     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>
    54345622<blockquote>
    54355623          They are produced by the <tt>cmt config</tt>
     
    54815669          development area.
    54825670</blockquote>
    5483 <hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>13.&nbsp;5</tt></a> - cmt build prototype</h3>
     5671<hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>14.&nbsp;5</tt></a> - cmt build prototype</h3>
    54845672<blockquote>
    54855673          This command is only provided for development of <tt>C</tt>
     
    55235711</blockquote>
    55245712</blockquote>
    5525 <hr><h2><a name="Using cvs together with CMT"></a><a href="#index"><tt>14</tt></a> - Using cvs together with CMT</h2>
     5713<hr><h2><a name="Using cvs together with CMT"></a><a href="#index"><tt>15</tt></a> - Using cvs together with CMT</h2>
    55265714<blockquote>
    55275715  <p>Nothing special is apriori required by <tt>CMT</tt>
     
    55475735  <a href="#The internal mechanism of cmt cvs operations">appendix</a>
    55485736.</p>
    5549 <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>
     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>
    55505738<blockquote>
    55515739  <p>Generally, everything composing a package (below the
     
    55995787 form. </p>
    56005788</blockquote>
    5601 <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>
     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>
    56025790<blockquote>
    56035791  <p>Assuming the previous conventions on module name and version
     
    56265814  </li>
    56275815    <li>
    5628             creating a base directory with the package name is mandatory
     5816          creating a base directory with the package name is mandatory
    56295817            here, and is <i>not</i>
    56305818     taken into account by <tt>cvs</tt>
     
    56835871csh&gt; [g]make</pre>
    56845872</blockquote>
    5685 <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>
     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>
    56865874<blockquote>
    56875875    It is possible, using the commands :
     
    57495937</ol>
    57505938</blockquote>
    5751 <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>
     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>
    57525940<blockquote>
    57535941  <p>This section presents the way to instanciate a new release of
     
    57925980</ol>
    57935981</blockquote>
    5794 <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>
     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>
    57955983<blockquote>
    57965984  <p>The previous example presented the standard case where one gets
     
    58206008</blockquote>
    58216009</blockquote>
    5822 <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>
     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>
    58236011<blockquote>
    58246012  <p>Very often, external packages (typically commercial products, or
     
    59006088          packages. </p>
    59016089</blockquote>
    5902 <hr><h2><a name="The installation area mechanism"></a><a href="#index"><tt>16</tt></a> - The installation area mechanism</h2>
     6090<hr><h2><a name="The installation area mechanism"></a><a href="#index"><tt>17</tt></a> - The installation area mechanism</h2>
    59036091<blockquote>
    59046092  <p>CMT proposes and implements a flexible architecture for
     
    59376125      files, documentation and header files.</li>
    59386126</ol>
    5939 <hr><h3><a name="The default implementation"></a><a href="#index"><tt>16.&nbsp;1</tt></a> - The default implementation</h3>
     6127<hr><h3><a name="The default implementation"></a><a href="#index"><tt>17.&nbsp;1</tt></a> - The default implementation</h3>
    59406128<blockquote>
    59416129<p>It is provided in terms of</p>
     
    60086196    local patterns.</p>
    60096197</blockquote>
    6010 <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>
     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>
    60116199<blockquote>
    60126200  <p>First of all every individual sub-project may activate or
     
    60876275</blockquote>
    60886276</blockquote>
    6089 <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>
     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>
    60906278<blockquote>
    60916279  <P>These sections are of interest only if <tt>CMT</tt>
     
    61106298            or operate <tt>CMT</tt>
    61116299. </P>
    6112 <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>
     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>
    61136301<blockquote>
    61146302  <P>The very first operation after dowloading <tt>CMT</tt>
     
    61876375csh&gt; gmake</pre>
    61886376</blockquote>
    6189 <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>
     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>
    61906378<blockquote>
    61916379  <p>You first have to fetch the distribution kit from the Web at
     
    62196407                package global access paths. </li>
    62206408    <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the
    6221              conventional site name. </li>
     6409                conventional site name. </li>
    62226410    <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of
    62236411                  text of text values corresponding to the different package
     
    62396427</blockquote>
    62406428</blockquote>
    6241 <hr><h2><a name="Appendices"></a><a href="#index"><tt>18</tt></a> - Appendices</h2>
    6242 <blockquote>
    6243 <hr><h3><a name="Copyright"></a><a href="#index"><tt>18.&nbsp;1</tt></a> - Copyright</h3>
     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>
    62446432<blockquote>
    62456433  <center><b>Copyright LAL and Christian Arnault LAL-Orsay CNRS</b>
     
    62766464knowledge of the CeCILL license and that you accept its terms.</p>
    62776465</blockquote>
    6278 <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>
     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>
    62796467<blockquote>
    62806468<p>These targets can always be listed through the following command : </p>
     
    63396527        <td>only build this
    63406528                  particular component (as opposed to the <tt>all</tt>
    6341                   target that tries to build all components of this
     6529          target that tries to build all components of this
    63426530                package)</td>
    63436531    </tr>
     
    63566544sh&gt; gmake Foo </pre>
    63576545</blockquote>
    6358 <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>
    6359 <blockquote>
    6360 <hr><h4><a name="CMT static macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;1</tt></a> - CMT static macros</h4>
     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>
    63616549<blockquote>
    63626550    These macros provide static data about CMT itself. They cannot be
     
    63956583</p>
    63966584</blockquote>
    6397 <hr><h4><a name="Structural macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;2</tt></a> - Structural macros</h4>
     6585<hr><h4><a name="Structural macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;2</tt></a> - Structural macros</h4>
    63986586<blockquote>
    63996587    These macros describe the structural conventions followed by
     
    64936681</p>
    64946682</blockquote>
    6495 <hr><h4><a name="Language related macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;3</tt></a> - Language related macros</h4>
     6683<hr><h4><a name="Language related macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;3</tt></a> - Language related macros</h4>
    64966684<blockquote>
    64976685    These macros are purely conventional. They are expected in the
     
    65006688    providing the various building actions.
    65016689  <p>During the mechanism of new language declaration and definition
    6502       available in the<tt>CMT</tt>
     6690      available in the <tt>CMT</tt>
    65036691   syntax, developers are expected to
    65046692    define similar conventions for corresponding actions.</p>
     
    67456933</p>
    67466934</blockquote>
    6747 <hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;4</tt></a> - Package customizing macros</h4>
     6935<hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;4</tt></a> - Package customizing macros</h4>
    67486936<blockquote>
    67496937    These macros do not receive default values. They are all prefixed
     
    69037091        <td>specifies the base location for external software
    69047092                  described in glue packages. This macro is generally used to
    6905                 specify the previous one</td>
     7093               specify the previous one</td>
    69067094    </tr>
    69077095  </table>
    69087096</p>
    69097097</blockquote>
    6910 <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>
     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>
    69117099<blockquote>
    69127100    These macros do not receive any default values (ie they are empty
     
    69737161        <td>
    69747162                    provides additional linker options to the application. It is
    6975                    complementary to - and should not be confused with - the
     7163                    complementary to - and should not be confused with - the
    69767164          <tt>&lt;<i>package</i>
    69777165        &gt;_linkopts</tt>
    69787166         macro, which
    6979                     provides exported linker options required by clients
     7167                provides exported linker options required by clients
    69807168                    packages to use the package libraries.
    69817169      </td>
     
    70297217</p>
    70307218</blockquote>
    7031 <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>
     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>
    70327220<blockquote>
    70337221    These macros do not receive any default values (ie they are empty
     
    70697257</p>
    70707258</blockquote>
    7071 <hr><h4><a name="Generated macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;7</tt></a> - Generated macros</h4>
     7259<hr><h4><a name="Generated macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;7</tt></a> - Generated macros</h4>
    70727260<blockquote>
    70737261  <p> These macros are automatically <i>generated</i>
     
    72637451</p>
    72647452</blockquote>
    7265 <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>
     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>
    72667454<blockquote>
    72677455    These macros contain the parameterisation of the installation area
     
    73697557</p>
    73707558</blockquote>
    7371 <hr><h4><a name="Utility macros"></a><a href="#index"><tt>18.&nbsp;3.&nbsp;9</tt></a> - Utility macros</h4>
     7559<hr><h4><a name="Utility macros"></a><a href="#index"><tt>19.&nbsp;3.&nbsp;9</tt></a> - Utility macros</h4>
    73727560<blockquote>
    73737561    These macros are used to specify the behaviour of various actions
     
    75147702</blockquote>
    75157703</blockquote>
    7516 <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>
     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>
    75177705<blockquote>
    75187706  <p>
     
    76217809</p>
    76227810</blockquote>
    7623 <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>
     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>
    76247812<blockquote>
    76257813  <p>
     
    77647952</p>
    77657953</blockquote>
    7766 <hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>18.&nbsp;6</tt></a> - Makefile generation sequences</h3>
     7954<hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>19.&nbsp;6</tt></a> - Makefile generation sequences</h3>
    77677955<blockquote>
    77687956<blockquote><hr>
     
    78838071</p>
    78848072</blockquote>
    7885 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>18.&nbsp;7</tt></a> - The complete requirements syntax</h3>
     8073<hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>19.&nbsp;7</tt></a> - The complete requirements syntax</h3>
    78868074<blockquote>
    78878075  The syntax of specification statements that can be installed in a
     
    96139801</center>
    96149802</blockquote>
    9615 <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>
     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>
    96169804<blockquote>
    96179805<pre class="cmt">
     
    96199807  DefaultInstallAreaStrategy = WithoutInstallArea</pre>
    96209808</blockquote>
    9621 <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>
     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>
    96229810<blockquote>
    96239811  Generally, CVS does not handle queries upon the repository (such as
     
    97189906<tr>
    97199907<td width="100"><tt>&nbsp;4</tt></td>
     9908<td><a href="#Defining and managing projects">Defining and managing projects</a></td>
     9909</tr>
     9910<tr>
     9911<td width="100"><tt>&nbsp;4.&nbsp;1</tt></td>
     9912<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMTPROJECTPATH">CMTPROJECTPATH</a></td>
     9913</tr>
     9914<tr>
     9915<td width="100"><tt>&nbsp;4.&nbsp;2</tt></td>
     9916<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMTPATH">CMTPATH</a></td>
     9917</tr>
     9918<tr>
     9919<td width="100"><tt>&nbsp;5</tt></td>
    97209920<td><a href="#Installing a new package">Installing a new package</a></td>
    97219921</tr>
    97229922<tr>
    9723 <td width="100"><tt>&nbsp;5</tt></td>
     9923<td width="100"><tt>&nbsp;6</tt></td>
    97249924<td><a href="#Localizing a package">Localizing a package</a></td>
    97259925</tr>
    97269926<tr>
    9727 <td width="100"><tt>&nbsp;6</tt></td>
     9927<td width="100"><tt>&nbsp;7</tt></td>
    97289928<td><a href="#The concept of project">The concept of project</a></td>
    97299929</tr>
    97309930<tr>
    9731 <td width="100"><tt>&nbsp;7</tt></td>
     9931<td width="100"><tt>&nbsp;8</tt></td>
    97329932<td><a href="#Assigning semantics to packages. Common practices">Assigning semantics to packages. Common practices</a></td>
    97339933</tr>
    97349934<tr>
    9735 <td width="100"><tt>&nbsp;7.&nbsp;1</tt></td>
     9935<td width="100"><tt>&nbsp;8.&nbsp;1</tt></td>
    97369936<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The primary package">The primary package</a></td>
    97379937</tr>
    97389938<tr>
    9739 <td width="100"><tt>&nbsp;7.&nbsp;2</tt></td>
     9939<td width="100"><tt>&nbsp;8.&nbsp;2</tt></td>
    97409940<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The policy package">The policy package</a></td>
    97419941</tr>
    97429942<tr>
    9743 <td width="100"><tt>&nbsp;7.&nbsp;3</tt></td>
     9943<td width="100"><tt>&nbsp;8.&nbsp;3</tt></td>
    97449944<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The container or management package">The container or management package</a></td>
    97459945</tr>
    97469946<tr>
    9747 <td width="100"><tt>&nbsp;7.&nbsp;4</tt></td>
     9947<td width="100"><tt>&nbsp;8.&nbsp;4</tt></td>
    97489948<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The release package">The release package</a></td>
    97499949</tr>
    97509950<tr>
    9751 <td width="100"><tt>&nbsp;7.&nbsp;5</tt></td>
     9951<td width="100"><tt>&nbsp;8.&nbsp;5</tt></td>
    97529952<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The glue or interface package">The glue or interface package</a></td>
    97539953</tr>
    97549954<tr>
    9755 <td width="100"><tt>&nbsp;8</tt></td>
     9955<td width="100"><tt>&nbsp;9</tt></td>
    97569956<td><a href="#Managing site dependent features - The CMTSITE environment variable">Managing site dependent features - The CMTSITE environment variable</a></td>
    97579957</tr>
    97589958<tr>
    9759 <td width="100"><tt>&nbsp;9</tt></td>
     9959<td width="100"><tt>10</tt></td>
    97609960<td><a href="#Configuring a package">Configuring a package</a></td>
    97619961</tr>
    97629962<tr>
    9763 <td width="100"><tt>10</tt></td>
     9963<td width="100"><tt>11</tt></td>
    97649964<td><a href="#Selecting a specific configuration">Selecting a specific configuration</a></td>
    97659965</tr>
    97669966<tr>
    9767 <td width="100"><tt>10.&nbsp;1</tt></td>
     9967<td width="100"><tt>11.&nbsp;1</tt></td>
    97689968<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Describing a configuration">Describing a configuration</a></td>
    97699969</tr>
    97709970<tr>
    9771 <td width="100"><tt>10.&nbsp;2</tt></td>
     9971<td width="100"><tt>11.&nbsp;2</tt></td>
    97729972<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Defining the user tags">Defining the user tags</a></td>
    97739973</tr>
    97749974<tr>
    9775 <td width="100"><tt>10.&nbsp;3</tt></td>
     9975<td width="100"><tt>11.&nbsp;3</tt></td>
    97769976<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Activating tags">Activating tags</a></td>
    97779977</tr>
    97789978<tr>
    9779 <td width="100"><tt>11</tt></td>
     9979<td width="100"><tt>12</tt></td>
    97809980<td><a href="#Working on a package">Working on a package</a></td>
    97819981</tr>
    97829982<tr>
    9783 <td width="100"><tt>11.&nbsp;1</tt></td>
     9983<td width="100"><tt>12.&nbsp;1</tt></td>
    97849984<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a library">Working on a library</a></td>
    97859985</tr>
    97869986<tr>
    9787 <td width="100"><tt>11.&nbsp;2</tt></td>
     9987<td width="100"><tt>12.&nbsp;2</tt></td>
    97889988<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on an application">Working on an application</a></td>
    97899989</tr>
    97909990<tr>
    9791 <td width="100"><tt>11.&nbsp;3</tt></td>
     9991<td width="100"><tt>12.&nbsp;3</tt></td>
    97929992<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Working on a test or external application">Working on a test or external application</a></td>
    97939993</tr>
    97949994<tr>
    9795 <td width="100"><tt>11.&nbsp;4</tt></td>
     9995<td width="100"><tt>12.&nbsp;4</tt></td>
    97969996<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Construction of a global environment">Construction of a global environment</a></td>
    97979997</tr>
    97989998<tr>
    9799 <td width="100"><tt>12</tt></td>
     9999<td width="100"><tt>13</tt></td>
    980010000<td><a href="#Defining a document generator">Defining a document generator</a></td>
    980110001</tr>
    980210002<tr>
    9803 <td width="100"><tt>12.&nbsp;1</tt></td>
     10003<td width="100"><tt>13.&nbsp;1</tt></td>
    980410004<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#An example : the tex document-style">An example : the tex document-style</a></td>
    980510005</tr>
    980610006<tr>
    9807 <td width="100"><tt>12.&nbsp;2</tt></td>
     10007<td width="100"><tt>13.&nbsp;2</tt></td>
    980810008<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>
    980910009</tr>
    981010010<tr>
    9811 <td width="100"><tt>12.&nbsp;3</tt></td>
     10011<td width="100"><tt>13.&nbsp;3</tt></td>
    981210012<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Examples">Examples</a></td>
    981310013</tr>
    981410014<tr>
    9815 <td width="100"><tt>13</tt></td>
     10015<td width="100"><tt>14</tt></td>
    981610016<td><a href="#The tools provided by CMT">The tools provided by CMT</a></td>
    981710017</tr>
    981810018<tr>
    9819 <td width="100"><tt>13.&nbsp;1</tt></td>
     10019<td width="100"><tt>14.&nbsp;1</tt></td>
    982010020<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The requirements file">The requirements file</a></td>
    982110021</tr>
    982210022<tr>
    9823 <td width="100"><tt>13.&nbsp;1.&nbsp;1</tt></td>
     10023<td width="100"><tt>14.&nbsp;1.&nbsp;1</tt></td>
    982410024<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general requirements syntax">The general requirements syntax</a></td>
    982510025</tr>
    982610026<tr>
    9827 <td width="100"><tt>13.&nbsp;2</tt></td>
     10027<td width="100"><tt>14.&nbsp;2</tt></td>
    982810028<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The concepts handled in the requirements file">The concepts handled in the requirements file</a></td>
    982910029</tr>
    983010030<tr>
    9831 <td width="100"><tt>13.&nbsp;2.&nbsp;1</tt></td>
     10031<td width="100"><tt>14.&nbsp;2.&nbsp;1</tt></td>
    983210032<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The package structuring style ">The package structuring style </a></td>
    983310033</tr>
    983410034<tr>
    9835 <td width="100"><tt>13.&nbsp;2.&nbsp;2</tt></td>
     10035<td width="100"><tt>14.&nbsp;2.&nbsp;2</tt></td>
    983610036<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Meta-information : author, manager">Meta-information : author, manager</a></td>
    983710037</tr>
    983810038<tr>
    9839 <td width="100"><tt>13.&nbsp;2.&nbsp;3</tt></td>
     10039<td width="100"><tt>14.&nbsp;2.&nbsp;3</tt></td>
    984010040<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#package, version">package, version</a></td>
    984110041</tr>
    984210042<tr>
    9843 <td width="100"><tt>13.&nbsp;2.&nbsp;4</tt></td>
     10043<td width="100"><tt>14.&nbsp;2.&nbsp;4</tt></td>
    984410044<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Constituents : application, library, document">Constituents : application, library, document</a></td>
    984510045</tr>
    984610046<tr>
    9847 <td width="100"><tt>13.&nbsp;2.&nbsp;5</tt></td>
     10047<td width="100"><tt>14.&nbsp;2.&nbsp;5</tt></td>
    984810048<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Groups">Groups</a></td>
    984910049</tr>
    985010050<tr>
    9851 <td width="100"><tt>13.&nbsp;2.&nbsp;6</tt></td>
     10051<td width="100"><tt>14.&nbsp;2.&nbsp;6</tt></td>
    985210052<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Languages">Languages</a></td>
    985310053</tr>
    985410054<tr>
    9855 <td width="100"><tt>13.&nbsp;2.&nbsp;7</tt></td>
     10055<td width="100"><tt>14.&nbsp;2.&nbsp;7</tt></td>
    985610056<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Symbols">Symbols</a></td>
    985710057</tr>
    985810058<tr>
    9859 <td width="100"><tt>13.&nbsp;2.&nbsp;7.&nbsp;1</tt></td>
     10059<td width="100"><tt>14.&nbsp;2.&nbsp;7.&nbsp;1</tt></td>
    986010060<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#actions">actions</a></td>
    986110061</tr>
    986210062<tr>
    9863 <td width="100"><tt>13.&nbsp;2.&nbsp;8</tt></td>
     10063<td width="100"><tt>14.&nbsp;2.&nbsp;8</tt></td>
    986410064<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#use">use</a></td>
    986510065</tr>
    986610066<tr>
    9867 <td width="100"><tt>13.&nbsp;2.&nbsp;9</tt></td>
     10067<td width="100"><tt>14.&nbsp;2.&nbsp;9</tt></td>
    986810068<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#patterns">patterns</a></td>
    986910069</tr>
    987010070<tr>
    9871 <td width="100"><tt>13.&nbsp;2.&nbsp;9.&nbsp;1</tt></td>
     10071<td width="100"><tt>14.&nbsp;2.&nbsp;9.&nbsp;1</tt></td>
    987210072<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Applying a pattern">Applying a pattern</a></td>
    987310073</tr>
    987410074<tr>
    9875 <td width="100"><tt>13.&nbsp;2.10</tt></td>
     10075<td width="100"><tt>14.&nbsp;2.10</tt></td>
    987610076<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmtpath_patterns">cmtpath_patterns</a></td>
    987710077</tr>
    987810078<tr>
    9879 <td width="100"><tt>13.&nbsp;2.11</tt></td>
     10079<td width="100"><tt>14.&nbsp;2.11</tt></td>
    988010080<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#branches">branches</a></td>
    988110081</tr>
    988210082<tr>
    9883 <td width="100"><tt>13.&nbsp;2.12</tt></td>
     10083<td width="100"><tt>14.&nbsp;2.12</tt></td>
    988410084<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Strategy specifications">Strategy specifications</a></td>
    988510085</tr>
    988610086<tr>
    9887 <td width="100"><tt>13.&nbsp;2.13</tt></td>
     10087<td width="100"><tt>14.&nbsp;2.13</tt></td>
    988810088<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#setup_script, cleanup_script">setup_script, cleanup_script</a></td>
    988910089</tr>
    989010090<tr>
    9891 <td width="100"><tt>13.&nbsp;2.14</tt></td>
     10091<td width="100"><tt>14.&nbsp;2.14</tt></td>
    989210092<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_path">include_path</a></td>
    989310093</tr>
    989410094<tr>
    9895 <td width="100"><tt>13.&nbsp;2.15</tt></td>
     10095<td width="100"><tt>14.&nbsp;2.15</tt></td>
    989610096<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#include_dirs">include_dirs</a></td>
    989710097</tr>
    989810098<tr>
    9899 <td width="100"><tt>13.&nbsp;2.16</tt></td>
     10099<td width="100"><tt>14.&nbsp;2.16</tt></td>
    990010100<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#make_fragment">make_fragment</a></td>
    990110101</tr>
    990210102<tr>
    9903 <td width="100"><tt>13.&nbsp;2.17</tt></td>
     10103<td width="100"><tt>14.&nbsp;2.17</tt></td>
    990410104<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#public, private">public, private</a></td>
    990510105</tr>
    990610106<tr>
    9907 <td width="100"><tt>13.&nbsp;2.17.&nbsp;1</tt></td>
     10107<td width="100"><tt>14.&nbsp;2.17.&nbsp;1</tt></td>
    990810108<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Scoping sections">Scoping sections</a></td>
    990910109</tr>
    991010110<tr>
    9911 <td width="100"><tt>13.&nbsp;2.18</tt></td>
     10111<td width="100"><tt>14.&nbsp;2.18</tt></td>
    991210112<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tag, apply_tag">tag, apply_tag</a></td>
    991310113</tr>
    991410114<tr>
    9915 <td width="100"><tt>13.&nbsp;3</tt></td>
     10115<td width="100"><tt>14.&nbsp;3</tt></td>
    991610116<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The general cmt user interface">The general cmt user interface</a></td>
    991710117</tr>
    991810118<tr>
    9919 <td width="100"><tt>13.&nbsp;3.&nbsp;1</tt></td>
     10119<td width="100"><tt>14.&nbsp;3.&nbsp;1</tt></td>
    992010120<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt broadcast">cmt broadcast</a></td>
    992110121</tr>
    992210122<tr>
    9923 <td width="100"><tt>13.&nbsp;3.&nbsp;1.&nbsp;1</tt></td>
     10123<td width="100"><tt>14.&nbsp;3.&nbsp;1.&nbsp;1</tt></td>
    992410124<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>
    992510125</tr>
    992610126<tr>
    9927 <td width="100"><tt>13.&nbsp;3.&nbsp;1.&nbsp;2</tt></td>
     10127<td width="100"><tt>14.&nbsp;3.&nbsp;1.&nbsp;2</tt></td>
    992810128<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>
    992910129</tr>
    993010130<tr>
    9931 <td width="100"><tt>13.&nbsp;3.&nbsp;2</tt></td>
     10131<td width="100"><tt>14.&nbsp;3.&nbsp;2</tt></td>
    993210132<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build &lt;option&gt;">cmt build &lt;option&gt;</a></td>
    993310133</tr>
    993410134<tr>
    9935 <td width="100"><tt>13.&nbsp;3.&nbsp;3</tt></td>
     10135<td width="100"><tt>14.&nbsp;3.&nbsp;3</tt></td>
    993610136<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt check configuration">cmt check configuration</a></td>
    993710137</tr>
    993810138<tr>
    9939 <td width="100"><tt>13.&nbsp;3.&nbsp;4</tt></td>
     10139<td width="100"><tt>14.&nbsp;3.&nbsp;4</tt></td>
    994010140<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>
    994110141</tr>
    994210142<tr>
    9943 <td width="100"><tt>13.&nbsp;3.&nbsp;5</tt></td>
     10143<td width="100"><tt>14.&nbsp;3.&nbsp;5</tt></td>
    994410144<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt checkout ...">cmt checkout ...</a></td>
    994510145</tr>
    994610146<tr>
    9947 <td width="100"><tt>13.&nbsp;3.&nbsp;6</tt></td>
     10147<td width="100"><tt>14.&nbsp;3.&nbsp;6</tt></td>
    994810148<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt co ...">cmt co ...</a></td>
    994910149</tr>
    995010150<tr>
    9951 <td width="100"><tt>13.&nbsp;3.&nbsp;7</tt></td>
     10151<td width="100"><tt>14.&nbsp;3.&nbsp;7</tt></td>
    995210152<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cleanup [-csh|-sh]">cmt cleanup [-csh|-sh]</a></td>
    995310153</tr>
    995410154<tr>
    9955 <td width="100"><tt>13.&nbsp;3.&nbsp;8</tt></td>
     10155<td width="100"><tt>14.&nbsp;3.&nbsp;8</tt></td>
    995610156<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt config">cmt config</a></td>
    995710157</tr>
    995810158<tr>
    9959 <td width="100"><tt>13.&nbsp;3.&nbsp;9</tt></td>
     10159<td width="100"><tt>14.&nbsp;3.&nbsp;9</tt></td>
    996010160<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>
    996110161</tr>
    996210162<tr>
    9963 <td width="100"><tt>13.&nbsp;3.10</tt></td>
     10163<td width="100"><tt>14.&nbsp;3.10</tt></td>
    996410164<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>
    996510165</tr>
    996610166<tr>
    9967 <td width="100"><tt>13.&nbsp;3.11</tt></td>
     10167<td width="100"><tt>14.&nbsp;3.11</tt></td>
    996810168<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>
    996910169</tr>
    997010170<tr>
    9971 <td width="100"><tt>13.&nbsp;3.12</tt></td>
     10171<td width="100"><tt>14.&nbsp;3.12</tt></td>
    997210172<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt help | --help">cmt help | --help</a></td>
    997310173</tr>
    997410174<tr>
    9975 <td width="100"><tt>13.&nbsp;3.13</tt></td>
     10175<td width="100"><tt>14.&nbsp;3.13</tt></td>
    997610176<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>
    997710177</tr>
    997810178<tr>
    9979 <td width="100"><tt>13.&nbsp;3.14</tt></td>
     10179<td width="100"><tt>14.&nbsp;3.14</tt></td>
    998010180<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>
    998110181</tr>
    998210182<tr>
    9983 <td width="100"><tt>13.&nbsp;3.15</tt></td>
     10183<td width="100"><tt>14.&nbsp;3.15</tt></td>
    998410184<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt remove library_links">cmt remove library_links</a></td>
    998510185</tr>
    998610186<tr>
    9987 <td width="100"><tt>13.&nbsp;3.16</tt></td>
     10187<td width="100"><tt>14.&nbsp;3.16</tt></td>
    998810188<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt run [shell-command]">cmt run [shell-command]</a></td>
    998910189</tr>
    999010190<tr>
    9991 <td width="100"><tt>13.&nbsp;3.17</tt></td>
     10191<td width="100"><tt>14.&nbsp;3.17</tt></td>
    999210192<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>
    999310193</tr>
    999410194<tr>
    9995 <td width="100"><tt>13.&nbsp;3.18</tt></td>
     10195<td width="100"><tt>14.&nbsp;3.18</tt></td>
    999610196<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt set versions">cmt set versions</a></td>
    999710197</tr>
    999810198<tr>
    9999 <td width="100"><tt>13.&nbsp;3.19</tt></td>
     10199<td width="100"><tt>14.&nbsp;3.19</tt></td>
    1000010200<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt setup [-csh|-sh|-bat]">cmt setup [-csh|-sh|-bat]</a></td>
    1000110201</tr>
    1000210202<tr>
    10003 <td width="100"><tt>13.&nbsp;3.20</tt></td>
     10203<td width="100"><tt>14.&nbsp;3.20</tt></td>
    1000410204<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt show &lt;option&gt;">cmt show &lt;option&gt;</a></td>
    1000510205</tr>
    1000610206<tr>
    10007 <td width="100"><tt>13.&nbsp;3.21</tt></td>
     10207<td width="100"><tt>14.&nbsp;3.21</tt></td>
    1000810208<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt system">cmt system</a></td>
    1000910209</tr>
    1001010210<tr>
    10011 <td width="100"><tt>13.&nbsp;3.22</tt></td>
     10211<td width="100"><tt>14.&nbsp;3.22</tt></td>
    1001210212<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>
    1001310213</tr>
    1001410214<tr>
    10015 <td width="100"><tt>13.&nbsp;3.23</tt></td>
     10215<td width="100"><tt>14.&nbsp;3.23</tt></td>
    1001610216<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt version | --version">cmt version | --version</a></td>
    1001710217</tr>
    1001810218<tr>
    10019 <td width="100"><tt>13.&nbsp;3.24</tt></td>
     10219<td width="100"><tt>14.&nbsp;3.24</tt></td>
    1002010220<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvstags &lt;module&gt;">cmt cvstags &lt;module&gt;</a></td>
    1002110221</tr>
    1002210222<tr>
    10023 <td width="100"><tt>13.&nbsp;3.25</tt></td>
     10223<td width="100"><tt>14.&nbsp;3.25</tt></td>
    1002410224<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvsbranches &lt;module&gt;">cmt cvsbranches &lt;module&gt;</a></td>
    1002510225</tr>
    1002610226<tr>
    10027 <td width="100"><tt>13.&nbsp;3.26</tt></td>
     10227<td width="100"><tt>14.&nbsp;3.26</tt></td>
    1002810228<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt cvssubpackages &lt;module&gt;">cmt cvssubpackages &lt;module&gt;</a></td>
    1002910229</tr>
    1003010230<tr>
    10031 <td width="100"><tt>13.&nbsp;4</tt></td>
     10231<td width="100"><tt>14.&nbsp;4</tt></td>
    1003210232<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The setup and cleanup scripts">The setup and cleanup scripts</a></td>
    1003310233</tr>
    1003410234<tr>
    10035 <td width="100"><tt>13.&nbsp;5</tt></td>
     10235<td width="100"><tt>14.&nbsp;5</tt></td>
    1003610236<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cmt build prototype">cmt build prototype</a></td>
    1003710237</tr>
    1003810238<tr>
    10039 <td width="100"><tt>14</tt></td>
     10239<td width="100"><tt>15</tt></td>
    1004010240<td><a href="#Using cvs together with CMT">Using cvs together with CMT</a></td>
    1004110241</tr>
    1004210242<tr>
    10043 <td width="100"><tt>14.&nbsp;1</tt></td>
     10243<td width="100"><tt>15.&nbsp;1</tt></td>
    1004410244<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Importing a package into a cvs repository">Importing a package into a cvs repository</a></td>
    1004510245</tr>
    1004610246<tr>
    10047 <td width="100"><tt>14.&nbsp;2</tt></td>
     10247<td width="100"><tt>15.&nbsp;2</tt></td>
    1004810248<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>
    1004910249</tr>
    1005010250<tr>
    10051 <td width="100"><tt>14.&nbsp;3</tt></td>
     10251<td width="100"><tt>15.&nbsp;3</tt></td>
    1005210252<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Querying CVS about some important infos">Querying CVS about some important infos</a></td>
    1005310253</tr>
    1005410254<tr>
    10055 <td width="100"><tt>14.&nbsp;4</tt></td>
     10255<td width="100"><tt>15.&nbsp;4</tt></td>
    1005610256<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>
    1005710257</tr>
    1005810258<tr>
    10059 <td width="100"><tt>14.&nbsp;5</tt></td>
     10259<td width="100"><tt>15.&nbsp;5</tt></td>
    1006010260<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>
    1006110261</tr>
    1006210262<tr>
    10063 <td width="100"><tt>15</tt></td>
     10263<td width="100"><tt>16</tt></td>
    1006410264<td><a href="#Interfacing an external package with CMT">Interfacing an external package with CMT</a></td>
    1006510265</tr>
    1006610266<tr>
    10067 <td width="100"><tt>16</tt></td>
     10267<td width="100"><tt>17</tt></td>
    1006810268<td><a href="#The installation area mechanism">The installation area mechanism</a></td>
    1006910269</tr>
    1007010270<tr>
    10071 <td width="100"><tt>16.&nbsp;1</tt></td>
     10271<td width="100"><tt>17.&nbsp;1</tt></td>
    1007210272<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default implementation">The default implementation</a></td>
    1007310273</tr>
    1007410274<tr>
    10075 <td width="100"><tt>16.&nbsp;2</tt></td>
     10275<td width="100"><tt>17.&nbsp;2</tt></td>
    1007610276<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Tuning the installation area mechanisms">Tuning the installation area mechanisms</a></td>
    1007710277</tr>
    1007810278<tr>
    10079 <td width="100"><tt>17</tt></td>
     10279<td width="100"><tt>18</tt></td>
    1008010280<td><a href="#Installing CMT for the first time">Installing CMT for the first time</a></td>
    1008110281</tr>
    1008210282<tr>
    10083 <td width="100"><tt>17.&nbsp;1</tt></td>
     10283<td width="100"><tt>18.&nbsp;1</tt></td>
    1008410284<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Installing CMT on your Unix site">Installing CMT on your Unix site</a></td>
    1008510285</tr>
    1008610286<tr>
    10087 <td width="100"><tt>17.&nbsp;2</tt></td>
     10287<td width="100"><tt>18.&nbsp;2</tt></td>
    1008810288<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>
    1008910289</tr>
    1009010290<tr>
    10091 <td width="100"><tt>18</tt></td>
     10291<td width="100"><tt>19</tt></td>
    1009210292<td><a href="#Appendices">Appendices</a></td>
    1009310293</tr>
    1009410294<tr>
    10095 <td width="100"><tt>18.&nbsp;1</tt></td>
     10295<td width="100"><tt>19.&nbsp;1</tt></td>
    1009610296<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Copyright">Copyright</a></td>
    1009710297</tr>
    1009810298<tr>
    10099 <td width="100"><tt>18.&nbsp;2</tt></td>
     10299<td width="100"><tt>19.&nbsp;2</tt></td>
    1010010300<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard make targets predefined in CMT">Standard make targets predefined in CMT</a></td>
    1010110301</tr>
    1010210302<tr>
    10103 <td width="100"><tt>18.&nbsp;3</tt></td>
     10303<td width="100"><tt>19.&nbsp;3</tt></td>
    1010410304<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard macros predefined in CMT">Standard macros predefined in CMT</a></td>
    1010510305</tr>
    1010610306<tr>
    10107 <td width="100"><tt>18.&nbsp;3.&nbsp;1</tt></td>
     10307<td width="100"><tt>19.&nbsp;3.&nbsp;1</tt></td>
    1010810308<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#CMT static macros">CMT static macros</a></td>
    1010910309</tr>
    1011010310<tr>
    10111 <td width="100"><tt>18.&nbsp;3.&nbsp;2</tt></td>
     10311<td width="100"><tt>19.&nbsp;3.&nbsp;2</tt></td>
    1011210312<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Structural macros">Structural macros</a></td>
    1011310313</tr>
    1011410314<tr>
    10115 <td width="100"><tt>18.&nbsp;3.&nbsp;3</tt></td>
     10315<td width="100"><tt>19.&nbsp;3.&nbsp;3</tt></td>
    1011610316<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Language related macros">Language related macros</a></td>
    1011710317</tr>
    1011810318<tr>
    10119 <td width="100"><tt>18.&nbsp;3.&nbsp;4</tt></td>
     10319<td width="100"><tt>19.&nbsp;3.&nbsp;4</tt></td>
    1012010320<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Package customizing macros">Package customizing macros</a></td>
    1012110321</tr>
    1012210322<tr>
    10123 <td width="100"><tt>18.&nbsp;3.&nbsp;5</tt></td>
     10323<td width="100"><tt>19.&nbsp;3.&nbsp;5</tt></td>
    1012410324<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Constituent specific customizing macros">Constituent specific customizing macros</a></td>
    1012510325</tr>
    1012610326<tr>
    10127 <td width="100"><tt>18.&nbsp;3.&nbsp;6</tt></td>
     10327<td width="100"><tt>19.&nbsp;3.&nbsp;6</tt></td>
    1012810328<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Source specific customizing macros">Source specific customizing macros</a></td>
    1012910329</tr>
    1013010330<tr>
    10131 <td width="100"><tt>18.&nbsp;3.&nbsp;7</tt></td>
     10331<td width="100"><tt>19.&nbsp;3.&nbsp;7</tt></td>
    1013210332<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Generated macros">Generated macros</a></td>
    1013310333</tr>
    1013410334<tr>
    10135 <td width="100"><tt>18.&nbsp;3.&nbsp;8</tt></td>
     10335<td width="100"><tt>19.&nbsp;3.&nbsp;8</tt></td>
    1013610336<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>
    1013710337</tr>
    1013810338<tr>
    10139 <td width="100"><tt>18.&nbsp;3.&nbsp;9</tt></td>
     10339<td width="100"><tt>19.&nbsp;3.&nbsp;9</tt></td>
    1014010340<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Utility macros">Utility macros</a></td>
    1014110341</tr>
    1014210342<tr>
    10143 <td width="100"><tt>18.&nbsp;4</tt></td>
     10343<td width="100"><tt>19.&nbsp;4</tt></td>
    1014410344<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard tags generated by CMT">Standard tags generated by CMT</a></td>
    1014510345</tr>
    1014610346<tr>
    10147 <td width="100"><tt>18.&nbsp;5</tt></td>
     10347<td width="100"><tt>19.&nbsp;5</tt></td>
    1014810348<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Standard templates for makefile fragments">Standard templates for makefile fragments</a></td>
    1014910349</tr>
    1015010350<tr>
    10151 <td width="100"><tt>18.&nbsp;6</tt></td>
     10351<td width="100"><tt>19.&nbsp;6</tt></td>
    1015210352<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Makefile generation sequences">Makefile generation sequences</a></td>
    1015310353</tr>
    1015410354<tr>
    10155 <td width="100"><tt>18.&nbsp;7</tt></td>
     10355<td width="100"><tt>19.&nbsp;7</tt></td>
    1015610356<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The complete requirements syntax">The complete requirements syntax</a></td>
    1015710357</tr>
    1015810358<tr>
    10159 <td width="100"><tt>18.&nbsp;8</tt></td>
     10359<td width="100"><tt>19.&nbsp;8</tt></td>
    1016010360<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The default strategies defined in CMT">The default strategies defined in CMT</a></td>
    1016110361</tr>
    1016210362<tr>
    10163 <td width="100"><tt>18.&nbsp;9</tt></td>
     10363<td width="100"><tt>19.&nbsp;9</tt></td>
    1016410364<td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#The internal mechanism of cmt cvs operations">The internal mechanism of cmt cvs operations</a></td>
    1016510365</tr>
  • CMT/v1r19/doc/CMTDoc.xml

    r11 r18  
    2727
    2828    <p>This environment, based on some management conventions and
    29     comprising several shell-based utilities, is an attempt to
     29    comprising several utilities, is an attempt to
    3030    formalize software production and especially configuration
    3131    management around a <i>package</i>-oriented principle.</p>
     
    5858
    5959        <li> Packages sets may be structured in <i>areas</i>
    60         implementing a project oriented organization.  </li>
    61 
    62         <li> The packages may or not be related to each other
    63         (defining a <i>direct acyclic graph</i> of packages - not just
     60        implementing a <i>project</i> oriented organization.  </li>
     61
     62        <li> The projects represent independent organisations of
     63        packages, but may be interconnected as a <i>direct acyclic
     64        graph</i> of projects</li>
     65
     66        <li> The packages may or not be related with each other
     67        (defining also a <i>direct acyclic graph</i> of packages - not just
    6468        a single tree).  </li>
    6569
     
    112116          </ul>
    113117        </li>
     118
     119        <li>Projects are also referenced using a <i>release</i></li>
    114120
    115121        <li> Version control and management schemes (eg. by using
     
    188194
    189195    <p>This environment relies on a set of conventions, mainly for
    190     organizing the directories where packages are maintained and
    191     developed : </p>
     196    organizing the directories where projects and packages are
     197    maintained and developed : </p>
    192198
    193199    <ul>
     
    198204        <cmt:code>&lt;some root&gt;/&lt;Package mnemonic&gt;/&lt;version mnemonic&gt;/cmt</cmt:code>
    199205
    200         <p>or / and (<i>obsolescent convention</i>)
     206        <p>or (<i>obsolescent convention</i>)
    201207
    202208          <cmt:code>&lt;some root&gt;/&lt;Package mnemonic&gt;/&lt;version mnemonic&gt;/mgr</cmt:code>
     
    262268        <p>A software base is generally composed of multiple coherent
    263269        sets of packages, each installed in its specific root
    264         directory and forming different <i>package areas</i></p>
    265 
    266         <p>There are no constraints on the number of such areas into
    267         which <tt>CMT</tt> packages are installed. We'll see <a
    268         HREF="#Localizing a package">later</a> how the different
    269         areas can be declared and identified by <tt>CMT</tt>.</p>
     270        directory and forming different <i>package areas</i> or
     271        <i>sub-projects</i></p>
    270272
    271273        <p>Package areas implement the concept of <i>projects</i> or
     
    273275        organization of the software developments.</p>
    274276
     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
     281        <tt>CMT</tt>.</p>
     282
    275283        <p>examples of such organization can be : </p>
    276284
     
    286294    <p>This environment is based on the fact that one of its packages
    287295    (named <tt>CMT</tt>) provides the basic management
    288     tools. <tt>CMT</tt>, as a package, has very little specificities and
    289     as such itself obeys the general conventions. The major asymetry
    290     between <tt>CMT</tt> and all other packages is the fact that once
    291     <tt>CMT</tt> is installed it implicitly defines one <i>default</i>
    292     area for storing packages (through the environment variable
    293     <tt>CMTROOT</tt>).</p>
    294 
    295     <p>Then packages may be installed either in this default root area
    296     or in completely different areas. The only constraint in this case
    297     being that their root directory will have to be specified
    298     explicitly using the <tt>CMTPATH</tt> search list.</p>
    299 
    300     <p>A typical configuration for this environment consists of
    301     selecting a public area (generally available from several machines
    302     through an <tt>NFS</tt> or <tt>AFS</tt>-like mechanism), installing
    303     the <tt>CMT</tt> basic package, and then installing user packages in
    304     this default area or in project specific ones.  One frequent
    305     semantic given to this style of configuration is to consider the
    306     packages installed in the area hanging below default root as the
    307     publicly available products, whereas packages installed elsewhere
    308     are rather meant to be managed in a specific project. However,
    309     dependencies between packages will always be possible (as long as
    310     the system based protections provide appropriate access
    311     rights). </p>
     296    tools. <tt>CMT</tt>, as a package, has very little specificities
     297    and as such itself obeys the general conventions.</p>
     298
     299    <p>Then the complete software base is organized in terms of
     300    projects (or <i>sub-projects</i>), containing consistently managed
     301    package sets. Projects are localized either globally or
     302    individually:
     303
     304      <ul>
     305
     306        <li>globally using the environment variable
     307        <tt>CMTPROJECTPATH</tt> that describes all locations where CMT
     308        projects can be found</li>
     309
     310        <li>individually using the environment variable
     311        <tt>CMTPATH</tt> that describe all package areas where
     312        packages can be found</li>
     313
     314      </ul>
     315
     316    Packages are localized respectively to the projects they belong
     317    to.</p>
     318
     319    <p>It should be noted that the choice of a location for installing
     320    CMT itself is totally independent of the locations where projects
     321    are installed and managed.</p>
    312322
    313323    <p><tt>CMT</tt> is operated through one main user interface : the
    314     <tt>cmt</tt> command, which handles the <tt>CMT</tt> conventions and
    315     which provides a set of services for : </p>
     324    <tt>cmt</tt> command, which operates the <tt>CMT</tt> conventions
     325    and which provides a set of services for : </p>
    316326
    317327    <ul>
    318328
    319       <li> creating a new package, installing it below the default
    320       root or in a private area. This operation will create or check
     329      <li> creating a new package. This operation will create or check
    321330      the local package directory tree and generate several minimal
    322331      scripts (see the description of the <a HREF="#create">create</a>
     
    353362    and <tt>CMT</tt> itself, the management of a similar architecture
    354363    for <tt>Windows</tt> or <tt>OS9</tt>, setting up protections for
    355     packages (though locks) etc...). </p>
     364    packages (through locks) etc...). </p>
    356365
    357366    <cmt:section title="Supported platforms">
     
    407416
    408417
     418  <cmt:section title="Defining and managing projects">
     419
     420    <p>In the CMT terminology, the complete software base is composed
     421    of CMT packages. Those packages are organized into
     422    sub-projects. The semantics of a sub-project is very opened since
     423    it's merely an area for grouping CMT packages. Typically
     424    sub-projects may correspond to</p>
     425
     426    <ul>
     427
     428      <li>a structuration in software domains, such as Reconstruction,
     429      Simulation, Graphics, Core, etc.</li>
     430
     431      <li>how responsibilities or management policy are defined and
     432      assigned </li>
     433
     434      <li>reusing or sharing different software products from
     435      different projects</li>
     436
     437    </ul>
     438
     439    <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>
     443
     444    <ul>
     445      <li><tt>CMTPROJECTPATH</tt></li>
     446      <li><tt>CMTPATH</tt></li>
     447    </ul>
     448
     449    <cmt:section title="CMTPROJECTPATH">
     450
     451      <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,
     467      located below one of the items of this search list, and composed
     468      of:</p>
     469
     470      <ul>
     471
     472        <li>the sub-project name</li>
     473
     474        <li>the sub-project release</li>
     475
     476      </ul>
     477
     478      <p>Then, below this directory structure, we find</p>
     479
     480      <ul>
     481
     482        <li>A project definition file in <tt>cmt/project.cmt</tt></li>
     483
     484        <li>A set of CMT packages</li>
     485
     486      </ul>
     487
     488      <p>A typical example of such a structure could be:</p>
     489
     490      <cmt:code>
     491/project-area1/Reconstruction/1.0/cmt/project.cmt
     492                                 /RecA/...
     493                                 /RecB/...
     494/project-area1/Reconstruction/2.0/cmt/project.cmt
     495                                 /RecA/...
     496                                 /RecB/...
     497
     498/project-area1/Simulation/1.0/cmt/project.cmt
     499                             /SimA/...
     500                             /SimB/...
     501/project-area1/Core/1.0/cmt/project.cmt
     502                       /CoreA/...
     503                       /CoreB/...
     504
     505
     506/project-area2/ProductA/1.1.2/cmt/project.cmt
     507                             /PA_A/...
     508                             /PA_B/...
     509                             /PA_C/...
     510/project-area2/ProductB/v1r8p3/cmt/project.cmt
     511                              /PB_A/...
     512                              /PB_B/...
     513/project-area2/ProductB/v1r10/cmt/project.cmt
     514                             /PB_A/...
     515                             /PB_B/...   </cmt:code>
     516
     517      <ul>
     518
     519        <li>there are two project areas, one for the main
     520        developments, and another one for managing external products</li>
     521
     522        <li><tt>project-area1</tt> offers three sub-projects
     523        <tt>Reconstruction</tt>, <tt>Simulation</tt> and
     524        <tt>Core</tt></li>
     525
     526        <li><tt>project-area2</tt> offers two sub-projects
     527        <tt>ProductA</tt> and <tt>ProductB</tt></li>
     528
     529        <li>the sub-project <tt>Reconstruction</tt> is available in two
     530        releases <tt>1.0</tt> and <tt>2.0</tt></li>
     531
     532        <li>the sub-project <tt>Reconstruction</tt> offers two packages
     533        <tt>RecA</tt> and <tt>RecB</tt></li>
     534
     535        <li>the sub-project <tt>ProductB</tt> is available in two
     536        releases <tt>v1r8p3</tt> and <tt>v1r10</tt></li>
     537
     538      </ul>
     539
     540      <p>This search list is considered to interpret the <i>use</i>
     541      statements written in the project files. This project use
     542      statement takes the form:</p>
     543
     544      <cmt:syntax name="project-use">
     545        <cmt:rule name="project-use">
     546          <cmt:alt>
     547            <cmt:kwd name="use"/>
     548            <cmt:term name="project-name"/>
     549            <cmt:term name="project-release"/>
     550          </cmt:alt>
     551        </cmt:rule>
     552      </cmt:syntax>
     553
     554      <p>Typically, in our example one could construct the project
     555      file of the <tt>Reconstruction</tt> sub-project as follows:</p>
     556
     557      <cmt:code>
     558use Core 1.0
     559use ProductA 1.1.2</cmt:code>
     560
     561      <p><i>Note that sub-project release identifiers are considered
     562      using a perfect-match principle.</i></p>
     563
     564      <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>
     570
     571    </cmt:section>
     572
     573    <cmt:section title="CMTPATH">
     574
     575      <p>This is an environment variable containing a search list,
     576      very similar to the well know <tt>PATH</tt> environment
     577      variable, containing a list of file paths where CMT packages can
     578      be found. The syntax of this search list follows the standard
     579      syntax of search lists, i.e. items are separated using a
     580      <tt>:</tt> character on Unix and a <tt>;</tt> character on
     581      Windows.</p>
     582
     583      <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>
     591
     592    </cmt:section>
     593
     594  </cmt:section>
     595
    409596  <cmt:section title="Installing a new package">
    410597
     
    414601    of this document.</p>
    415602
    416     <p>Therefore, we assume that <i>some</i> root directory has been
    417     selected by the system manager, and that <tt>CMT</tt> is already
    418     installed there.  One first has to <i>setup</i> <tt>CMT</tt> in
    419     order to gain access to the various management utilities, using
    420     for example the shell command: </p>
     603    <p>Therefore, we assume that <tt>CMT</tt> is already installed in
     604    some location in the system.  One first has to <i>setup</i>
     605    <tt>CMT</tt> in order to gain access to the various management
     606    utilities, using for example the shell command: </p>
    421607
    422608    <cmt:code>
     
    431617dos&gt; call \lal\CMT\&CMTVersion;\mgr\setup.bat</cmt:code>
    432618
    433     <p>Obviously, this operation <tt>must</tt> be performed (once)
     619    <p>Obviously, this operation <i>must</i> be performed (once)
    434620    before any other <tt>CMT</tt> action. Therefore it is often
    435621    recommended to install this setup action straight in the
     
    440626
    441627        <p> The <i>setup script</i> used in this example is a constant
    442         in the <tt>CMT</tt> environment : every configured package will
    443         have one such setup script automatically generated and
     628        in the <tt>CMT</tt> environment : every configured package
     629        will have one such setup script automatically generated and
    444630        installed by <tt>CMT</tt>. It is one important entry point to
    445631        any package (and thus to <tt>CMT</tt> itself). It provides
    446         environment variable definitions and recursive invocations of
    447         setup scripts for related (<i>used</i>) packages (A
    448         corresponding cleanup script is also provided). This script
    449         contains a uniform mechanism for <i>interpreting</i> the &CMTrequirements; file so as to
     632        environment variable definitions for all related (<i>used</i>)
     633        packages (A corresponding cleanup script is also
     634        provided). This script contains a uniform mechanism for
     635        <i>interpreting</i> the &CMTrequirements; file so as to
    450636        dynamically define environment variables, aliases for the
    451637        package itself and all its used packages. It is constructed
     
    471657Creating a new project file </font></i></cmt:code>
    472658
    473     <p>Once this project has been created we have a complete
    474     environment to start creating packages and working out our
    475     software base.</p>
     659    <p>This creates a project structure (i.e. a
     660    <tt>cmt/project.cmt</tt> file) from the current directory. Once
     661    this project has been created we have a complete environment to
     662    start creating packages and working out our software base.</p>
    476663
    477664    <p> A package is primarily defined by a <i>name</i> and a
  • CMT/v1r19/mgr/Makefile

    r15 r18  
    173173
    174174python = /afs/cern.ch/sw/lcg/external/Python/2.2.2/rh73_gcc32/bin/python2.2
     175python = /cygdrive/c/Arnault/Python23/python.exe
    175176
    176177#---------------------------------------------------------
     
    178179#---------------------------------------------------------
    179180gendoc ::
    180         @cd ../doc; $(python) gendoc.py CMTDoc.xml >|CMTDoc.html
     181        @cd ../doc; $(python) gendoc.py CMTDoc.xml > CMTDoc.html
    181182        @echo "CMTDoc.html generated from CMTDoc.xml"
    182183
  • CMT/v1r19/source/cmt_parser.cxx

    r16 r18  
    38883888
    38893889              IProjectFactory& factory = ProjectFactory::instance ();
    3890               factory.create_project (pwd, "CurrentProject", 0);
     3890              factory.create_project ("", pwd, "CurrentProject", 0);
    38913891
    38923892              /*
  • CMT/v1r19/source/cmt_project.cxx

    r16 r18  
    9595}
    9696
     97static bool get_release_from_path (const cmt_string& path, const cmt_string& name, cmt_string& release)
     98{
     99  bool result = false;
     100
     101  release = "";
     102
     103  cmt_string p = path;
     104
     105  for (;;)
     106    {
     107      cmt_string n;
     108
     109      CmtSystem::basename (p, n);
     110      CmtSystem::dirname (p, p);
     111
     112      if (n == name)
     113        {
     114          result = true;
     115          break;
     116        }
     117
     118      if (release == "")
     119        {
     120          release = n;
     121        }
     122      else
     123        {
     124          cmt_string r;
     125
     126          r = n;
     127          r += CmtSystem::file_separator ();
     128          r += release;
     129          release = r;
     130        }
     131    }
     132
     133  //cerr << "$CMT> GRFP> path=" << path << " name=" << name << " rel=" << release << endl;
     134
     135  return (result);
     136}
     137 
     138
    97139/*
    98140  Every new CMTPATH entry becomes associated with a dedicated PROJECT
     
    102144     - then it tries to read and parse its project file
    103145 */
    104 Project* ProjectFactory::create_project (const cmt_string& path,
     146Project* ProjectFactory::create_project (const cmt_string& specified_name,
     147                                         const cmt_string& path,
    105148                                         const cmt_string& source,
    106149                                         Project* parent)
     
    108151  cmt_string compressed_path = path;
    109152  CmtSystem::compress_path (compressed_path);
     153  bool specify_name = (specified_name != "");
    110154
    111155  //cerr << "Creating project " << path << " with parent " << ((parent==0)? "0" : parent->get_name ()) << endl;
     
    118162     
    119163      if ((p.get_cmtpath () == compressed_path) ||
    120           (p.get_cmtpath_pwd () == compressed_path))
    121         {
     164          (p.get_cmtpath_pwd () == compressed_path) ||
     165          (specify_name && (p.get_name () == specified_name)))
     166        {
     167          cmt_string r;
     168
     169          get_release_from_path (compressed_path, p.get_name (), r);
     170
     171          if (r != p.get_release ())
     172            {
     173              cerr << "#CMT> Project " << p.get_name () << " requested with conflicting releases " << p.get_release () << " and " << r << endl;
     174              CmtError::set (CmtError::project_release_conflict, p.get_name ());
     175            }
     176 
    122177          if (parent != 0)
    123178            {
     
    133188        }
    134189    }
    135  
     190
     191
    136192  Project* project = 0;
    137193  Project* cmt = 0;
     
    156212  /*
    157213    Now Figure out the project name from the project file
    158     Or construct an automatic project name when project file does no exist
    159214       or does not specify the project name
    160215   */
     
    170225      if (name == "")
    171226        {
    172           CmtSystem::dirname (compressed_path, name);
    173           CmtSystem::basename (name, name);
     227          if (!specify_name)
     228            {
     229              // The project is neither specified from the caller nor from the project file
     230              // Send a warning?
     231              // How can we guess it?
     232              // For the moment, assume /name/release/ structure where release is one level only
     233
     234              cerr << "#CMT> Warning: project name unspecified in project file." << endl;
     235
     236              CmtSystem::basename (compressed_path, release);
     237              CmtSystem::dirname (compressed_path, name);
     238              CmtSystem::basename (name, name);
     239            }
     240          else
     241            {
     242              // The name is specified from the caller
     243              // find this specified name in the path
     244
     245              cmt_string r;
     246
     247              if (get_release_from_path (compressed_path, specified_name, r))
     248                {
     249                  // The specified name has been found from the path.
     250                  // We believe in the release spec.
     251
     252                  name = specified_name;
     253                  release = r;
     254                }
     255              else
     256                {
     257                  // The specified name is not in the path.
     258
     259
     260                  cerr << "#CMT> Warning: specified project name "
     261                       << specified_name
     262                       << " from project file does not match path." << endl;
     263                 
     264                  CmtSystem::basename (compressed_path, release);
     265                  CmtSystem::dirname (compressed_path, name);
     266                  CmtSystem::basename (name, name);
     267                }
     268            }
     269        }
     270      else
     271        {
     272          if (specify_name)
     273            {
     274              // We have a double specification: from the caller and from the project file.
     275              // check the consistency
     276
     277              if (name == specified_name)
     278                {
     279                  // Both specifications are consistent. 
     280                  cmt_string r;
     281
     282                  if (get_release_from_path (compressed_path, specified_name, r))
     283                    {
     284                      // The specified name has been found from the path.
     285                      // We believe in the release spec.
     286
     287                      name = specified_name;
     288                      release = r;
     289                    }
     290                  else
     291                    {
     292                      // The specified name is not in the path.
     293
     294                      cerr << "#CMT> Warning: specified project name "
     295                           << specified_name
     296                           << " from project file does not match path." << endl;
     297                     
     298                      CmtSystem::basename (compressed_path, release);
     299                      CmtSystem::dirname (compressed_path, name);
     300                      CmtSystem::basename (name, name);
     301                    }
     302                }
     303              else
     304                {
     305                  // Specifications from the caller and from the project files are inconsistent!!
     306
     307                  cerr << "#CMT> Warning: specified project name "
     308                       << specified_name
     309                       << " inconsistent with name "
     310                       << name
     311                       << " from project file." << endl;
     312
     313                  cmt_string r;
     314
     315                  if (get_release_from_path (compressed_path, specified_name, r))
     316                    {
     317                      // name from caller wins.
     318                    }
     319                  else if (get_release_from_path (compressed_path, specified_name, r))
     320                    {
     321                      // name from project file wins.
     322                    }
     323                  else
     324                    {
     325                      // The specified name is not in the path.
     326
     327                      cerr << "#CMT> Warning: none of specified project names "
     328                           << name
     329                           << " from graph and "
     330                           << specified_name
     331                           << " from project file match path." << endl;
     332                     
     333                      CmtSystem::basename (compressed_path, release);
     334                      CmtSystem::dirname (compressed_path, name);
     335                      CmtSystem::basename (name, name);
     336                    }
     337                }
     338            }
    174339        }
    175340    }
    176341  else
    177342    {
    178       char buffer[20];
     343      // There is no project file in this path.
     344
    179345      if (source == "default path")
    180346        {
    181           strcpy (buffer, "CMT");
    182           name = buffer;
     347          name = "CMT";
    183348        }
    184349      else
    185350        {
    186           CmtSystem::dirname (compressed_path, name);
    187           CmtSystem::basename (name, name);
     351          if (!specify_name)
     352            {
     353              // The project is not specified from the caller and there is no project file
     354              // Send a warning?
     355              // How can we guess it?
     356              // For the moment, assume /name/release/ structure where release is one level only
     357
     358              cerr << "#CMT> Warning: project name is not specified "
     359                   << " (no project file)." << endl;
     360
     361              CmtSystem::basename (compressed_path, release);
     362              CmtSystem::dirname (compressed_path, name);
     363              CmtSystem::basename (name, name);
     364            }
     365          else
     366            {
     367              // The name is specified from the caller
     368              // find this specified name in the path
     369
     370              cmt_string r;
     371
     372              if (get_release_from_path (compressed_path, name, r))
     373                {
     374                  // The specified name has been found from the path.
     375                  // We believe in the release spec.
     376
     377                  release = r;
     378                }
     379              else
     380                {
     381                  // The specified name is not in the path.
     382
     383                  cerr << "#CMT> Warning: specified project name "
     384                       << specified_name
     385                       << " from project graph does not match path." << endl;
     386                 
     387                  CmtSystem::basename (compressed_path, release);
     388                  CmtSystem::dirname (compressed_path, name);
     389                  CmtSystem::basename (name, name);
     390                }
     391            }
    188392        }
    189393    }
     
    9801184          IProjectFactory& factory = ProjectFactory::instance ();
    9811185
    982           factory.create_project (p, "ProjectPath", this);
     1186          factory.create_project (name, p, "ProjectPath", this);
    9831187
    9841188          break;
  • CMT/v1r19/source/cmt_project.h

    r16 r18  
    6767public:
    6868  void reset ();
    69   Project* create_project (const cmt_string& path,
     69  Project* create_project (const cmt_string& name,
     70                           const cmt_string& path,
    7071                           const cmt_string& path_source,
    7172                           Project* parent);
  • CMT/v1r19/source/cmt_system.cxx

    r16 r18  
    13031303          }
    13041304       
    1305         m_project = factory.create_project (npath, path_source, m_project);
     1305        m_project = factory.create_project ("", npath, path_source, m_project);
    13061306      }
    13071307  }
  • CMT/v1r19/source/cmt_system.h

    r11 r18  
    1919public:
    2020  virtual void reset () = 0;
    21   virtual Project* create_project (const cmt_string& path,
     21  virtual Project* create_project (const cmt_string& name,
     22                                   const cmt_string& path,
    2223                                   const cmt_string& path_source,
    2324                                   Project* parent) = 0;
Note: See TracChangeset for help on using the changeset viewer.