- Timestamp:
- Mar 30, 2005, 9:04:49 AM (19 years ago)
- Location:
- CMT/v1r19
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
CMT/v1r19/ChangeLog
r17 r18 1 2 2005-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 1 27 2005-03-16 Christian Arnault <arnault@lal.in2p3.fr> 259 2 28 -
CMT/v1r19/doc/CMTDoc.html
r11 r18 23 23 <center>Christian Arnault</center> 24 24 <center><tt>arnault@lal.in2p3.fr</tt></center></h2> 25 <center><i>Document revision date : 200 4-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> 26 26 <hr><h2><a name="Presentation"></a><a href="#index"><tt> 1</tt></a> - Presentation</h2> 27 27 <blockquote> 28 28 <p>This environment, based on some management conventions and 29 comprising several shell-basedutilities, is an attempt to29 comprising several utilities, is an attempt to 30 30 formalize software production and especially configuration 31 31 management around a <i>package</i> … … 64 64 <li> Many such packages are produced and maintained. </li> 65 65 <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> 69 74 of packages - not just 70 75 a single tree). </li> … … 114 119 be fully compatible with each other. </li> 115 120 </ul> 121 </li> 122 <li>Projects are also referenced using a <i>release</i> 116 123 </li> 117 124 <li> Version control and management schemes (eg. by using … … 176 183 <blockquote> 177 184 <p>This environment relies on a set of conventions, mainly for 178 organizing the directories where p ackages are maintained and179 developed : </p>185 organizing the directories where projects and packages are 186 maintained and developed : </p> 180 187 <ul> 181 188 <li> Each package is installed in a standard directory structure 182 189 defined at least as follows: 183 190 <pre><some root>/<Package mnemonic>/<version mnemonic>/cmt</pre> 184 <p>or / and(<i>obsolescent convention</i>191 <p>or (<i>obsolescent convention</i> 185 192 ) 186 193 <pre><some root>/<Package mnemonic>/<version mnemonic>/mgr</pre> … … 256 263 sets of packages, each installed in its specific root 257 264 directory and forming different <i>package areas</i> 265 or 266 <i>sub-projects</i> 258 267 </p> 259 <p>There are no constraints on the number of such areas into260 which <tt>CMT</tt>261 packages are installed. We'll see <a HREF="#Localizing a package">later</a>262 how the different263 areas can be declared and identified by <tt>CMT</tt>264 .</p>265 268 <p>Package areas implement the concept of <i>projects</i> 266 269 or … … 268 271 which correspond to the practical 269 272 organization of the software developments.</p> 273 <p>There are no constraints on the number of such areas into 274 which <tt>CMT</tt> 275 packages are installed. We'll see <a HREF="#Localizing a package">later</a> 276 how the different areas 277 or sub-projects can be declared and identified by 278 <tt>CMT</tt> 279 .</p> 270 280 <p>examples of such organization can be : </p> 271 281 <center> … … 285 295 ) provides the basic management 286 296 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> 316 319 <p><tt>CMT</tt> 317 320 is operated through one main user interface : the 318 321 <tt>cmt</tt> 319 command, which handles the <tt>CMT</tt>320 conventions and321 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> 322 325 <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 325 327 the local package directory tree and generate several minimal 326 328 scripts (see the description of the <a HREF="#create">create</a> … … 353 355 or <tt>OS9</tt> 354 356 , setting up protections for 355 packages (th ough locks) etc...). </p>357 packages (through locks) etc...). </p> 356 358 <hr><h3><a name="Supported platforms"></a><a href="#index"><tt> 3. 1</tt></a> - Supported platforms</h3> 357 359 <blockquote> … … 388 390 </blockquote> 389 391 </blockquote> 390 <hr><h2><a name="Installing a new package"></a><a href="#index"><tt> 4</tt></a> - Installing a new package</h2> 392 <hr><h2><a name="Defining and managing projects"></a><a href="#index"><tt> 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> 4. 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"> 525 use 526 </font> 527 <font face="courier new, courier" COLOR="#770000"><i> 528 project-name 529 </i></font> 530 <font face="courier new, courier" COLOR="#770000"><i> 531 project-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> 541 use Core 1.0 542 use 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> 4. 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> 5</tt></a> - Installing a new package</h2> 391 580 <blockquote> 392 581 <p>We consider here the installation of a user package. Installing … … 395 584 dedicated <a href="#Installing CMT for the first time">section</a> 396 585 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> 402 589 <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> 406 592 <pre> 407 593 csh> source /lal/CMT/v1r18p20041201/mgr/setup.csh … … 414 600 415 601 dos> call \lal\CMT\v1r18p20041201\mgr\setup.bat</pre> 416 <p>Obviously, this operation < tt>must</tt>602 <p>Obviously, this operation <i>must</i> 417 603 be performed (once) 418 604 before any other <tt>CMT</tt> … … 426 612 used in this example is a constant 427 613 in the <tt>CMT</tt> 428 environment : every configured package will429 have one such setup script automatically generated and614 environment : every configured package 615 will have one such setup script automatically generated and 430 616 installed by <tt>CMT</tt> 431 617 . It is one important entry point to 432 618 any package (and thus to <tt>CMT</tt> 433 619 itself). It provides 434 environment variable definitions and recursive invocations of435 setup scripts for related (<i>used</i>436 ) packages (A437 corresponding cleanup script is also provided). This script438 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> 439 625 the <a HREF='#The requirements file'>requirements</a> file so as to 440 626 dynamically define environment variables, aliases for the … … 459 645 Installing the cmt directory 460 646 Creating 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> 464 652 <p> A package is primarily defined by a <i>name</i> 465 653 and a … … 664 852 <i><font COLOR="#000077" face="courier new, courier">Hello Foo</font></i></pre> 665 853 </blockquote> 666 <hr><h2><a name="Localizing a package"></a><a href="#index"><tt> 5</tt></a> - Localizing a package</h2>854 <hr><h2><a name="Localizing a package"></a><a href="#index"><tt> 6</tt></a> - Localizing a package</h2> 667 855 <blockquote> 668 856 <p>In the next sections, we'll see that packages <i>reference</i> … … 753 941 <hr></blockquote> 754 942 <p>If the <i>path</i> 755 943 argument is specified as a relative path 756 944 (case #2 above) (ie. there is no leading <i>slash</i> 757 945 character or … … 843 1031 </p> 844 1032 </blockquote> 845 <hr><h2><a name="The concept of project"></a><a href="#index"><tt> 6</tt></a> - The concept of project</h2>1033 <hr><h2><a name="The concept of project"></a><a href="#index"><tt> 7</tt></a> - The concept of project</h2> 846 1034 <blockquote> 847 1035 The purpose of the concept of <i>project</i> … … 1000 1188 </ul> 1001 1189 </blockquote> 1002 <hr><h2><a name="Assigning semantics to packages. Common practices"></a><a href="#index"><tt> 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> 8</tt></a> - Assigning semantics to packages. Common practices</h2> 1003 1191 <blockquote> 1004 1192 Generally speaking, CMT makes no assumption on how or why is used 1005 1193 a package. However past experience has shown that packages can be 1006 1194 categorized according to their purpose or their type of contents. 1007 <hr><h3><a name="The primary package"></a><a href="#index"><tt> 7. 1</tt></a> - The primary package</h3>1195 <hr><h3><a name="The primary package"></a><a href="#index"><tt> 8. 1</tt></a> - The primary package</h3> 1008 1196 <blockquote> 1009 1197 This is the most general and basic pakage type, which provides … … 1033 1221 statements.</p> 1034 1222 </blockquote> 1035 <hr><h3><a name="The policy package"></a><a href="#index"><tt> 7. 2</tt></a> - The policy package</h3>1223 <hr><h3><a name="The policy package"></a><a href="#index"><tt> 8. 2</tt></a> - The policy package</h3> 1036 1224 <blockquote> 1037 1225 This kind of package only provides conventions, working methods, … … 1076 1264 Then the global policy package will use them 1077 1265 </blockquote> 1078 <hr><h3><a name="The container or management package"></a><a href="#index"><tt> 7. 3</tt></a> - The container or management package</h3>1266 <hr><h3><a name="The container or management package"></a><a href="#index"><tt> 8. 3</tt></a> - The container or management package</h3> 1079 1267 <blockquote> 1080 1268 In large projects, it's often useful to decompose the software … … 1102 1290 packages of the domain.</p> 1103 1291 </blockquote> 1104 <hr><h3><a name="The release package"></a><a href="#index"><tt> 7. 4</tt></a> - The release package</h3>1292 <hr><h3><a name="The release package"></a><a href="#index"><tt> 8. 4</tt></a> - The release package</h3> 1105 1293 <blockquote> 1106 1294 This package is one particular example of the container concept, … … 1110 1298 assigned to the project releases themselves. 1111 1299 </blockquote> 1112 <hr><h3><a name="The glue or interface package"></a><a href="#index"><tt> 7. 5</tt></a> - The glue or interface package</h3>1300 <hr><h3><a name="The glue or interface package"></a><a href="#index"><tt> 8. 5</tt></a> - The glue or interface package</h3> 1113 1301 <blockquote> 1114 1302 This kind of package defines an interface to an existing … … 1138 1326 </blockquote> 1139 1327 </blockquote> 1140 <hr><h2><a name="Managing site dependent features - The CMTSITE environment variable"></a><a href="#index"><tt> 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> 9</tt></a> - Managing site dependent features - The CMTSITE environment variable</h2> 1141 1329 <blockquote> 1142 1330 <p>Software bases managed by <tt>CMT</tt> … … 1174 1362 LBNL "/auto/atlas/sw/lhcxx"</pre> 1175 1363 </blockquote> 1176 <hr><h2><a name="Configuring a package"></a><a href="#index"><tt> 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> 1177 1365 <blockquote> 1178 1366 <p>The first ingredient of a proper package configuration is the … … 1273 1461 </ul> 1274 1462 </blockquote> 1275 <hr><h2><a name="Selecting a specific configuration"></a><a href="#index"><tt>1 0</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> 1276 1464 <blockquote> 1277 1465 A configuration describes the conditions in which the package has … … 1309 1497 between machines running different operating 1310 1498 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>1 0. 1</tt></a> - Describing a configuration</h3>1499 <hr><h3><a name="Describing a configuration"></a><a href="#index"><tt>11. 1</tt></a> - Describing a configuration</h3> 1312 1500 <blockquote> 1313 1501 <p><tt>CMT</tt> … … 1511 1699 </ol> 1512 1700 </blockquote> 1513 <hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>1 0. 2</tt></a> - Defining the user tags</h3>1701 <hr><h3><a name="Defining the user tags"></a><a href="#index"><tt>11. 2</tt></a> - Defining the user tags</h3> 1514 1702 <blockquote> 1515 1703 <p>The user configuration tags can generally be specified though … … 1577 1765 </ul> 1578 1766 </blockquote> 1579 <hr><h3><a name="Activating tags"></a><a href="#index"><tt>1 0. 3</tt></a> - Activating tags</h3>1767 <hr><h3><a name="Activating tags"></a><a href="#index"><tt>11. 3</tt></a> - Activating tags</h3> 1580 1768 <blockquote> 1581 1769 By default, <tt>CMTCONFIG</tt> … … 1723 1911 </blockquote> 1724 1912 </blockquote> 1725 <hr><h2><a name="Working on a package"></a><a href="#index"><tt>1 1</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> 1726 1914 <blockquote> 1727 1915 <p>In this section, we'll see, through a quite simple scenario, … … 1730 1918 of the <tt>Foo</tt> 1731 1919 package already used in this document. </p> 1732 <hr><h3><a name="Working on a library"></a><a href="#index"><tt>1 1. 1</tt></a> - Working on a library</h3>1920 <hr><h3><a name="Working on a library"></a><a href="#index"><tt>12. 1</tt></a> - Working on a library</h3> 1733 1921 <blockquote> 1734 1922 <p>Let's assume, as a first example, that the <tt>Foo</tt> … … 1878 2066 operation</p> 1879 2067 </blockquote> 1880 <hr><h3><a name="Working on an application"></a><a href="#index"><tt>1 1. 2</tt></a> - Working on an application</h3>2068 <hr><h3><a name="Working on an application"></a><a href="#index"><tt>12. 2</tt></a> - Working on an application</h3> 1881 2069 <blockquote> 1882 2070 <p>Assume we now want to add a test program to our … … 1963 2151 </ul> 1964 2152 </blockquote> 1965 <hr><h3><a name="Working on a test or external application"></a><a href="#index"><tt>1 1. 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. 3</tt></a> - Working on a test or external application</h3> 1966 2154 <blockquote> 1967 2155 It is also possible to work on a <i>test</i> … … 1990 2178 interface are still available in these conditions. </p> 1991 2179 </blockquote> 1992 <hr><h3><a name="Construction of a global environment"></a><a href="#index"><tt>1 1. 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. 4</tt></a> - Construction of a global environment</h3> 1993 2181 <blockquote> 1994 2182 <p>A software base generally consists in many <i>packages</i> … … 2063 2251 </blockquote> 2064 2252 </blockquote> 2065 <hr><h2><a name="Defining a document generator"></a><a href="#index"><tt>1 2</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> 2066 2254 <blockquote> 2067 2255 <p> In a Unix environment, documents are built using <tt>make</tt> … … 2124 2312 containing one main target. Both the resulting make fragment and 2125 2313 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>1 2. 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. 1</tt></a> - An example : the tex document-style</h3> 2127 2315 <blockquote> 2128 2316 <p> … … 2252 2440 </ul> 2253 2441 </blockquote> 2254 <hr><h3><a name="How to create and install a new document style"></a><a href="#index"><tt>1 2. 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. 2</tt></a> - How to create and install a new document style</h3> 2255 2443 <blockquote> 2256 2444 <blockquote><hr> … … 2406 2594 </center> 2407 2595 </blockquote> 2408 <hr><h3><a name="Examples"></a><a href="#index"><tt>1 2. 3</tt></a> - Examples</h3>2596 <hr><h3><a name="Examples"></a><a href="#index"><tt>13. 3</tt></a> - Examples</h3> 2409 2597 <blockquote> 2410 2598 <ol> … … 2463 2651 </blockquote> 2464 2652 </blockquote> 2465 <hr><h2><a name="The tools provided by CMT"></a><a href="#index"><tt>1 3</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> 2466 2654 <blockquote> 2467 2655 The set of conventions and tools provided by <tt>CMT</tt> … … 2497 2685 commands available through the <tt>cmt</tt> 2498 2686 user interface. </p> 2499 <hr><h3><a name="The requirements file"></a><a href="#index"><tt>1 3. 1</tt></a> - The requirements file</h3>2500 <blockquote> 2501 <hr><h4><a name="The general requirements syntax"></a><a href="#index"><tt>1 3. 1. 1</tt></a> - The general requirements syntax</h4>2687 <hr><h3><a name="The requirements file"></a><a href="#index"><tt>14. 1</tt></a> - The requirements file</h3> 2688 <blockquote> 2689 <hr><h4><a name="The general requirements syntax"></a><a href="#index"><tt>14. 1. 1</tt></a> - The general requirements syntax</h4> 2502 2690 <blockquote> 2503 2691 <ul> … … 2513 2701 by space characters).</p> 2514 2702 <p>Each statement is composed of words separated with spaces 2515 2703 or tabulations.</p> 2516 2704 <p>The first word of a statement is the name of the 2517 2705 configuration parameter.</p> … … 2564 2752 <p>Comments : they start with the <tt>#</tt> 2565 2753 character and 2566 2754 extend up to the end of the current line. 2567 2755 </p> 2568 2756 </li> … … 2572 2760 </blockquote> 2573 2761 </blockquote> 2574 <hr><h3><a name="The concepts handled in the requirements file"></a><a href="#index"><tt>1 3. 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>1 3. 2. 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>1 3. 2. 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. 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. 2. 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. 2. 2</tt></a> - Meta-information : author, manager</h4> 2580 2768 <blockquote> 2581 2769 The author and manager names 2582 2770 </blockquote> 2583 <hr><h4><a name="package, version"></a><a href="#index"><tt>1 3. 2. 3</tt></a> - package, version</h4>2771 <hr><h4><a name="package, version"></a><a href="#index"><tt>14. 2. 3</tt></a> - package, version</h4> 2584 2772 <blockquote> 2585 2773 The package name and version. These statements are purely 2586 2774 informational. 2587 2775 </blockquote> 2588 <hr><h4><a name="Constituents : application, library, document"></a><a href="#index"><tt>1 3. 2. 4</tt></a> - Constituents : application, library, document</h4>2776 <hr><h4><a name="Constituents : application, library, document"></a><a href="#index"><tt>14. 2. 4</tt></a> - Constituents : application, library, document</h4> 2589 2777 <blockquote> 2590 2778 <p>Describe the composition of a constituent. Application … … 2846 3034 </ol> 2847 3035 </blockquote> 2848 <hr><h4><a name="Groups"></a><a href="#index"><tt>1 3. 2. 5</tt></a> - Groups</h4>3036 <hr><h4><a name="Groups"></a><a href="#index"><tt>14. 2. 5</tt></a> - Groups</h4> 2849 3037 <blockquote> 2850 3038 Groups permit the organization of the constituents that must … … 2895 3083 related constituents.</p> 2896 3084 </blockquote> 2897 <hr><h4><a name="Languages"></a><a href="#index"><tt>1 3. 2. 6</tt></a> - Languages</h4>3085 <hr><h4><a name="Languages"></a><a href="#index"><tt>14. 2. 6</tt></a> - Languages</h4> 2898 3086 <blockquote> 2899 3087 Some computer languages are known by default by <tt>CMT</tt> … … 2991 3179 . 2992 3180 </blockquote> 2993 <hr><h4><a name="Symbols"></a><a href="#index"><tt>1 3. 2. 7</tt></a> - Symbols</h4>3181 <hr><h4><a name="Symbols"></a><a href="#index"><tt>14. 2. 7</tt></a> - Symbols</h4> 2994 3182 <blockquote> 2995 3183 <p>This is a generic concept supporting the notion of … … 3365 3553 VisualC "link.exe /nologo /machine:IX86 " 3366 3554 </pre> 3367 <hr><h5><a name="actions"></a><a href="#index"><tt>1 3. 2. 7. 1</tt></a> - actions</h5>3368 <blockquote> 3369 Actions are one of the possible symbols. Their3555 <hr><h5><a name="actions"></a><a href="#index"><tt>14. 2. 7. 1</tt></a> - actions</h5> 3556 <blockquote> 3557 Actions are one of the possible symbols. Their 3370 3558 definition as said previously follow the generic 3371 3559 conventions for any symbol type, and they implement the … … 3439 3627 </blockquote> 3440 3628 </blockquote> 3441 <hr><h4><a name="use"></a><a href="#index"><tt>1 3. 2. 8</tt></a> - use</h4>3629 <hr><h4><a name="use"></a><a href="#index"><tt>14. 2. 8</tt></a> - use</h4> 3442 3630 <blockquote> 3443 3631 <p>Describe the relationships with other packages; the … … 3526 3714 </ul> 3527 3715 </blockquote> 3528 <hr><h4><a name="patterns"></a><a href="#index"><tt>1 3. 2. 9</tt></a> - patterns</h4>3716 <hr><h4><a name="patterns"></a><a href="#index"><tt>14. 2. 9</tt></a> - patterns</h4> 3529 3717 <blockquote> 3530 3718 <p>Often, similar configuration items are needed over a … … 3654 3842 <tt>${<package>_root}/src</tt> 3655 3843 . However, often projects 3656 3844 need to override this default convention, and typical 3657 3845 example is to set it to a branch named with the package 3658 3846 name. This convention is easily applied by defining a … … 3693 3881 <p>Installing a systematic test application in all packages</p> 3694 3882 <p>Quality assurance requirements might specify that every 3695 3883 package should provide a test program. One way to enforce 3696 3884 this is to build a global pattern declaring this 3697 3885 application. Then every make command would naturally … … 3705 3893 </li> 3706 3894 </ol> 3707 <hr><h5><a name="Applying a pattern"></a><a href="#index"><tt>1 3. 2. 9. 1</tt></a> - Applying a pattern</h5>3895 <hr><h5><a name="Applying a pattern"></a><a href="#index"><tt>14. 2. 9. 1</tt></a> - Applying a pattern</h5> 3708 3896 <blockquote> 3709 3897 According to whether the <tt>-global</tt> … … 3770 3958 </blockquote> 3771 3959 </blockquote> 3772 <hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>1 3. 2.10</tt></a> - cmtpath_patterns</h4>3960 <hr><h4><a name="cmtpath_patterns"></a><a href="#index"><tt>14. 2.10</tt></a> - cmtpath_patterns</h4> 3773 3961 <blockquote> 3774 3962 <p>These patterns act quite similarly to the <i>global</i> … … 3778 3966 <i>packages</i> 3779 3967 , they are automatically applied to all 3780 entries in the <tt>CMTPATH</tt>3968 entries in the <tt>CMTPATH</tt> 3781 3969 list.</p> 3782 3970 <p>Only few system parameters can be used here: … … 3817 4005 </p> 3818 4006 </blockquote> 3819 <hr><h4><a name="branches"></a><a href="#index"><tt>1 3. 2.11</tt></a> - branches</h4>4007 <hr><h4><a name="branches"></a><a href="#index"><tt>14. 2.11</tt></a> - branches</h4> 3820 4008 <blockquote> 3821 4009 <p>Describe the specific directory branches to be added while … … 3832 4020 .</p> 3833 4021 </blockquote> 3834 <hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>1 3. 2.12</tt></a> - Strategy specifications</h4>4022 <hr><h4><a name="Strategy specifications"></a><a href="#index"><tt>14. 2.12</tt></a> - Strategy specifications</h4> 3835 4023 <blockquote> 3836 4024 <p>Users can control the behaviour of <tt>CMT</tt> … … 3953 4141 <project>_no_cleanup</pre> 3954 4142 </blockquote> 3955 <hr><h4><a name="setup_script, cleanup_script"></a><a href="#index"><tt>1 3. 2.13</tt></a> - setup_script, cleanup_script</h4>4143 <hr><h4><a name="setup_script, cleanup_script"></a><a href="#index"><tt>14. 2.13</tt></a> - setup_script, cleanup_script</h4> 3956 4144 <blockquote> 3957 4145 <p>Specify user defined configuration scripts, which will be … … 3979 4167 ).</p> 3980 4168 </blockquote> 3981 <hr><h4><a name="include_path"></a><a href="#index"><tt>1 3. 2.14</tt></a> - include_path</h4>4169 <hr><h4><a name="include_path"></a><a href="#index"><tt>14. 2.14</tt></a> - include_path</h4> 3982 4170 <blockquote> 3983 4171 <p>Override the specification for the default include search … … 3997 4185 instead).</p> 3998 4186 </blockquote> 3999 <hr><h4><a name="include_dirs"></a><a href="#index"><tt>1 3. 2.15</tt></a> - include_dirs</h4>4187 <hr><h4><a name="include_dirs"></a><a href="#index"><tt>14. 2.15</tt></a> - include_dirs</h4> 4000 4188 <blockquote> 4001 4189 <p>Add explicit specifications for include access paths.</p> 4002 4190 </blockquote> 4003 <hr><h4><a name="make_fragment"></a><a href="#index"><tt>1 3. 2.16</tt></a> - make_fragment</h4>4191 <hr><h4><a name="make_fragment"></a><a href="#index"><tt>14. 2.16</tt></a> - make_fragment</h4> 4004 4192 <blockquote> 4005 4193 <p>This statement specifies a specialized makefile fragment, … … 4034 4222 <li> those used internally by CMT as primary building 4035 4223 blocks for assembling the makefile. (Generally developers 4036 should not see them).4224 should not see them). 4037 4225 <blockquote><hr> 4038 4226 <i> … … 4077 4265 libraries (in which case they have the <tt>_library</tt> 4078 4266 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) 4080 4268 is provided by CMT itself but it is expected that projects 4081 4269 add new languages according to their needs. Event if the 4082 4270 make fragment meant to be the implementation of a language 4083 4271 support is declared, the language support itself must be … … 4145 4333 </p> 4146 4334 </blockquote> 4147 <hr><h4><a name="public, private"></a><a href="#index"><tt>1 3. 2.17</tt></a> - public, private</h4>4335 <hr><h4><a name="public, private"></a><a href="#index"><tt>14. 2.17</tt></a> - public, private</h4> 4148 4336 <blockquote> 4149 4337 <p>The <tt>public</tt> … … 4179 4367 the sub-trees whether they are public or private (in order 4180 4368 to ensure the hierarchy dependencies)</p> 4181 <hr><h5><a name="Scoping sections"></a><a href="#index"><tt>1 3. 2.17. 1</tt></a> - Scoping sections</h5>4369 <hr><h5><a name="Scoping sections"></a><a href="#index"><tt>14. 2.17. 1</tt></a> - Scoping sections</h5> 4182 4370 <blockquote> 4183 4371 By using the <tt>public</tt> … … 4239 4427 </blockquote> 4240 4428 </blockquote> 4241 <hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>1 3. 2.18</tt></a> - tag, apply_tag</h4>4429 <hr><h4><a name="tag, apply_tag"></a><a href="#index"><tt>14. 2.18</tt></a> - tag, apply_tag</h4> 4242 4430 <blockquote> 4243 4431 <p>The <tt>tag</tt> … … 4290 4478 </blockquote> 4291 4479 </blockquote> 4292 <hr><h3><a name="The general cmt user interface"></a><a href="#index"><tt>1 3. 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. 3</tt></a> - The general cmt user interface</h3> 4293 4481 <blockquote> 4294 4482 This utility (a shell script combined with a <tt>C++</tt> … … 4410 4598 -no_cleanup : inhibit install area cleanup</font></i></pre> 4411 4599 <p>The following sections present the detail of each available command. </p> 4412 <hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>1 3. 3. 1</tt></a> - cmt broadcast</h4>4600 <hr><h4><a name="cmt broadcast"></a><a href="#index"><tt>14. 3. 1</tt></a> - cmt broadcast</h4> 4413 4601 <blockquote> 4414 4602 This command tries to repeatedly execute a shell command in the … … 4475 4663 list</li> 4476 4664 </ol> 4477 <hr><h5><a name="Specifying the shell command"></a><a href="#index"><tt>1 3. 3. 1. 1</tt></a> - Specifying the shell command</h5>4665 <hr><h5><a name="Specifying the shell command"></a><a href="#index"><tt>14. 3. 1. 1</tt></a> - Specifying the shell command</h5> 4478 4666 <blockquote> 4479 4667 <p>A priori any Unix or DOS shell command can be specified … … 4492 4680 sometimes useful to have two levels of quotes</p> 4493 4681 </blockquote> 4494 <hr><h5><a name="Templates in the shell command"></a><a href="#index"><tt>1 3. 3. 1. 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. 3. 1. 2</tt></a> - Templates in the shell command</h5> 4495 4683 <blockquote> 4496 4684 <p>Similarly to what exists in the <a href="#patterns">pattern</a> … … 4559 4747 </blockquote> 4560 4748 </blockquote> 4561 <hr><h4><a name="cmt build <option>"></a><a href="#index"><tt>1 3. 3. 2</tt></a> - cmt build <option></h4>4749 <hr><h4><a name="cmt build <option>"></a><a href="#index"><tt>14. 3. 2</tt></a> - cmt build <option></h4> 4562 4750 <blockquote> 4563 4751 <p>The actions associated with the build options are … … 4614 4802 for Unix environments. The main makefile is 4615 4803 expected to be named <tt>NMake</tt> 4616 4804 and the standard header 4617 4805 is named <tt>NMakefile.header</tt> 4618 4806 </p> … … 4716 4904 </ul> 4717 4905 </blockquote> 4718 <hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>1 3. 3. 3</tt></a> - cmt check configuration</h4>4906 <hr><h4><a name="cmt check configuration"></a><a href="#index"><tt>14. 3. 3</tt></a> - cmt check configuration</h4> 4719 4907 <blockquote> 4720 4908 This command reads the hierarchy of requirements files … … 4723 4911 <p>An empty output means that everything is fine. </p> 4724 4912 </blockquote> 4725 <hr><h4><a name="cmt check files <reference-file> <new-file>"></a><a href="#index"><tt>1 3. 3. 4</tt></a> - cmt check files <reference-file> <new-file></h4>4913 <hr><h4><a name="cmt check files <reference-file> <new-file>"></a><a href="#index"><tt>14. 3. 4</tt></a> - cmt check files <reference-file> <new-file></h4> 4726 4914 <blockquote> 4727 4915 This command compares the reference file to the new file, and … … 4732 4920 ) is produced. </p> 4733 4921 </blockquote> 4734 <hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>1 3. 3. 5</tt></a> - cmt checkout ...</h4>4922 <hr><h4><a name="cmt checkout ..."></a><a href="#index"><tt>14. 3. 5</tt></a> - cmt checkout ...</h4> 4735 4923 <blockquote> 4736 4924 See the <a href="#Using cvs together with CMT">paragraph</a> … … 4740 4928 . 4741 4929 </blockquote> 4742 <hr><h4><a name="cmt co ..."></a><a href="#index"><tt>1 3. 3. 6</tt></a> - cmt co ...</h4>4930 <hr><h4><a name="cmt co ..."></a><a href="#index"><tt>14. 3. 6</tt></a> - cmt co ...</h4> 4743 4931 <blockquote> 4744 4932 This is simply a short cut to the <tt>cmt checkout</tt> 4745 4933 command. 4746 4934 </blockquote> 4747 <hr><h4><a name="cmt cleanup [-csh|-sh]"></a><a href="#index"><tt>1 3. 3. 7</tt></a> - cmt cleanup [-csh|-sh]</h4>4935 <hr><h4><a name="cmt cleanup [-csh|-sh]"></a><a href="#index"><tt>14. 3. 7</tt></a> - cmt cleanup [-csh|-sh]</h4> 4748 4936 <blockquote> 4749 4937 This command generates (to the standard output) a set of shell … … 4755 4943 command. </p> 4756 4944 </blockquote> 4757 <hr><h4><a name="cmt config"></a><a href="#index"><tt>1 3. 3. 8</tt></a> - cmt config</h4>4945 <hr><h4><a name="cmt config"></a><a href="#index"><tt>14. 3. 8</tt></a> - cmt config</h4> 4758 4946 <blockquote> 4759 4947 <p>This command (re-)generates the setup scripts and the … … 4795 4983 are required any longer.</p> 4796 4984 </blockquote> 4797 <hr><h4><a name="cmt create <package> <version> [<area>]"></a><a href="#index"><tt>1 3. 3. 9</tt></a> - cmt create <package> <version> [<area>]</h4>4985 <hr><h4><a name="cmt create <package> <version> [<area>]"></a><a href="#index"><tt>14. 3. 9</tt></a> - cmt create <package> <version> [<area>]</h4> 4798 4986 <blockquote> 4799 4987 <p> … … 4818 5006 </ul> 4819 5007 </blockquote> 4820 <hr><h4><a name="cmt expand model [-strict] <model-string>"></a><a href="#index"><tt>1 3. 3.10</tt></a> - cmt expand model [-strict] <model-string></h4>5008 <hr><h4><a name="cmt expand model [-strict] <model-string>"></a><a href="#index"><tt>14. 3.10</tt></a> - cmt expand model [-strict] <model-string></h4> 4821 5009 <blockquote> 4822 5010 This command produces on the standard output an … … 4948 5136 </ul> 4949 5137 </blockquote> 4950 <hr><h4><a name="cmt filter <in-file> <out-file>"></a><a href="#index"><tt>1 3. 3.11</tt></a> - cmt filter <in-file> <out-file></h4>5138 <hr><h4><a name="cmt filter <in-file> <out-file>"></a><a href="#index"><tt>14. 3.11</tt></a> - cmt filter <in-file> <out-file></h4> 4951 5139 <blockquote> 4952 5140 This command reads <in-file>, substitutes all occurences … … 4965 5153 configuration files, etc... </p> 4966 5154 </blockquote> 4967 <hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>1 3. 3.12</tt></a> - cmt help | --help</h4>5155 <hr><h4><a name="cmt help | --help"></a><a href="#index"><tt>14. 3.12</tt></a> - cmt help | --help</h4> 4968 5156 <blockquote> 4969 5157 This command shows the list of options of the <tt>cmt</tt> 4970 5158 driver. 4971 5159 </blockquote> 4972 <hr><h4><a name="cmt lock [ <package> <version> [<area>] ]"></a><a href="#index"><tt>1 3. 3.13</tt></a> - cmt lock [ <package> <version> [<area>] ]</h4>5160 <hr><h4><a name="cmt lock [ <package> <version> [<area>] ]"></a><a href="#index"><tt>14. 3.13</tt></a> - cmt lock [ <package> <version> [<area>] ]</h4> 4973 5161 <blockquote> 4974 5162 This command tries to set a lock onto the current package (or onto the … … 4995 5183 </ol> 4996 5184 </blockquote> 4997 <hr><h4><a name="cmt remove <package> <version> [<area>]"></a><a href="#index"><tt>1 3. 3.14</tt></a> - cmt remove <package> <version> [<area>]</h4>5185 <hr><h4><a name="cmt remove <package> <version> [<area>]"></a><a href="#index"><tt>14. 3.14</tt></a> - cmt remove <package> <version> [<area>]</h4> 4998 5186 <blockquote> 4999 5187 This command removes one version of the specified package. If … … 5009 5197 will be deleted.</p> 5010 5198 </blockquote> 5011 <hr><h4><a name="cmt remove library_links"></a><a href="#index"><tt>1 3. 3.15</tt></a> - cmt remove library_links</h4>5199 <hr><h4><a name="cmt remove library_links"></a><a href="#index"><tt>14. 3.15</tt></a> - cmt remove library_links</h4> 5012 5200 <blockquote> 5013 5201 This command removes symbolic links towards all imported … … 5018 5206 when one runs <tt>gmake clean</tt> 5019 5207 </blockquote> 5020 <hr><h4><a name="cmt run [shell-command]"></a><a href="#index"><tt>1 3. 3.16</tt></a> - cmt run [shell-command]</h4>5208 <hr><h4><a name="cmt run [shell-command]"></a><a href="#index"><tt>14. 3.16</tt></a> - cmt run [shell-command]</h4> 5021 5209 <blockquote> 5022 5210 This command runs any shell command, in the context of the … … 5038 5226 to any package context. </p> 5039 5227 </blockquote> 5040 <hr><h4><a name="cmt set version <version>"></a><a href="#index"><tt>1 3. 3.17</tt></a> - cmt set version <version></h4>5228 <hr><h4><a name="cmt set version <version>"></a><a href="#index"><tt>14. 3.17</tt></a> - cmt set version <version></h4> 5041 5229 <blockquote> 5042 5230 This command creates and/or fills in the … … 5050 5238 one CMT package.</p> 5051 5239 </blockquote> 5052 <hr><h4><a name="cmt set versions"></a><a href="#index"><tt>1 3. 3.18</tt></a> - cmt set versions</h4>5240 <hr><h4><a name="cmt set versions"></a><a href="#index"><tt>14. 3.18</tt></a> - cmt set versions</h4> 5053 5241 <blockquote> 5054 5242 This command applies recursively the <tt>cmt set version … … 5061 5249 files</p> 5062 5250 </blockquote> 5063 <hr><h4><a name="cmt setup [-csh|-sh|-bat]"></a><a href="#index"><tt>1 3. 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. 3.19</tt></a> - cmt setup [-csh|-sh|-bat]</h4> 5064 5252 <blockquote> 5065 5253 This command generates (to the standard output) a set of shell … … 5076 5264 command.</p> 5077 5265 </blockquote> 5078 <hr><h4><a name="cmt show <option>"></a><a href="#index"><tt>1 3. 3.20</tt></a> - cmt show <option></h4>5266 <hr><h4><a name="cmt show <option>"></a><a href="#index"><tt>14. 3.20</tt></a> - cmt show <option></h4> 5079 5267 <blockquote> 5080 5268 <ul> … … 5132 5320 <li><tt>groups</tt> 5133 5321 <p>This command displays all groups possibly defined 5134 5322 in constituents of the current package (using the 5135 5323 <tt>-group=<<i>group-name</i> 5136 5324 ></tt> … … 5379 5567 </ul> 5380 5568 </blockquote> 5381 <hr><h4><a name="cmt system"></a><a href="#index"><tt>1 3. 3.21</tt></a> - cmt system</h4>5569 <hr><h4><a name="cmt system"></a><a href="#index"><tt>14. 3.21</tt></a> - cmt system</h4> 5382 5570 <blockquote> 5383 5571 This command displays the current value assigned by default to … … 5385 5573 environment variable. 5386 5574 </blockquote> 5387 <hr><h4><a name="cmt unlock [ <package> <version> [<area>] ]"></a><a href="#index"><tt>1 3. 3.22</tt></a> - cmt unlock [ <package> <version> [<area>] ]</h4>5575 <hr><h4><a name="cmt unlock [ <package> <version> [<area>] ]"></a><a href="#index"><tt>14. 3.22</tt></a> - cmt unlock [ <package> <version> [<area>] ]</h4> 5388 5576 <blockquote> 5389 5577 This command tries to remove a lock from the current package (or from the … … 5408 5596 </p> 5409 5597 </blockquote> 5410 <hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>1 3. 3.23</tt></a> - cmt version | --version</h4>5598 <hr><h4><a name="cmt version | --version"></a><a href="#index"><tt>14. 3.23</tt></a> - cmt version | --version</h4> 5411 5599 <blockquote> 5412 5600 This command shows the current verion of <tt>CMT</tt> … … 5416 5604 sources. 5417 5605 </blockquote> 5418 <hr><h4><a name="cmt cvstags <module>"></a><a href="#index"><tt>1 3. 3.24</tt></a> - cmt cvstags <module></h4>5606 <hr><h4><a name="cmt cvstags <module>"></a><a href="#index"><tt>14. 3.24</tt></a> - cmt cvstags <module></h4> 5419 5607 <blockquote> 5420 5608 (see the section on <i>how tu use </i> … … 5424 5612 for more details on this command) 5425 5613 </blockquote> 5426 <hr><h4><a name="cmt cvsbranches <module>"></a><a href="#index"><tt>1 3. 3.25</tt></a> - cmt cvsbranches <module></h4>5427 <blockquote> 5428 </blockquote> 5429 <hr><h4><a name="cmt cvssubpackages <module>"></a><a href="#index"><tt>1 3. 3.26</tt></a> - cmt cvssubpackages <module></h4>5430 <blockquote> 5431 </blockquote> 5432 </blockquote> 5433 <hr><h3><a name="The setup and cleanup scripts"></a><a href="#index"><tt>1 3. 4</tt></a> - The setup and cleanup scripts</h3>5614 <hr><h4><a name="cmt cvsbranches <module>"></a><a href="#index"><tt>14. 3.25</tt></a> - cmt cvsbranches <module></h4> 5615 <blockquote> 5616 </blockquote> 5617 <hr><h4><a name="cmt cvssubpackages <module>"></a><a href="#index"><tt>14. 3.26</tt></a> - cmt cvssubpackages <module></h4> 5618 <blockquote> 5619 </blockquote> 5620 </blockquote> 5621 <hr><h3><a name="The setup and cleanup scripts"></a><a href="#index"><tt>14. 4</tt></a> - The setup and cleanup scripts</h3> 5434 5622 <blockquote> 5435 5623 They are produced by the <tt>cmt config</tt> … … 5481 5669 development area. 5482 5670 </blockquote> 5483 <hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>1 3. 5</tt></a> - cmt build prototype</h3>5671 <hr><h3><a name="cmt build prototype"></a><a href="#index"><tt>14. 5</tt></a> - cmt build prototype</h3> 5484 5672 <blockquote> 5485 5673 This command is only provided for development of <tt>C</tt> … … 5523 5711 </blockquote> 5524 5712 </blockquote> 5525 <hr><h2><a name="Using cvs together with CMT"></a><a href="#index"><tt>1 4</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> 5526 5714 <blockquote> 5527 5715 <p>Nothing special is apriori required by <tt>CMT</tt> … … 5547 5735 <a href="#The internal mechanism of cmt cvs operations">appendix</a> 5548 5736 .</p> 5549 <hr><h3><a name="Importing a package into a cvs repository"></a><a href="#index"><tt>1 4. 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. 1</tt></a> - Importing a package into a cvs repository</h3> 5550 5738 <blockquote> 5551 5739 <p>Generally, everything composing a package (below the … … 5599 5787 form. </p> 5600 5788 </blockquote> 5601 <hr><h3><a name="Checking a package out from a cvs repository"></a><a href="#index"><tt>1 4. 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. 2</tt></a> - Checking a package out from a cvs repository</h3> 5602 5790 <blockquote> 5603 5791 <p>Assuming the previous conventions on module name and version … … 5626 5814 </li> 5627 5815 <li> 5628 5816 creating a base directory with the package name is mandatory 5629 5817 here, and is <i>not</i> 5630 5818 taken into account by <tt>cvs</tt> … … 5683 5871 csh> [g]make</pre> 5684 5872 </blockquote> 5685 <hr><h3><a name="Querying CVS about some important infos"></a><a href="#index"><tt>1 4. 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. 3</tt></a> - Querying CVS about some important infos</h3> 5686 5874 <blockquote> 5687 5875 It is possible, using the commands : … … 5749 5937 </ol> 5750 5938 </blockquote> 5751 <hr><h3><a name="Working on a package, creating a new release"></a><a href="#index"><tt>1 4. 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. 4</tt></a> - Working on a package, creating a new release</h3> 5752 5940 <blockquote> 5753 5941 <p>This section presents the way to instanciate a new release of … … 5792 5980 </ol> 5793 5981 </blockquote> 5794 <hr><h3><a name="Getting a particular tagged version out of CVS"></a><a href="#index"><tt>1 4. 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. 5</tt></a> - Getting a particular tagged version out of CVS</h3> 5795 5983 <blockquote> 5796 5984 <p>The previous example presented the standard case where one gets … … 5820 6008 </blockquote> 5821 6009 </blockquote> 5822 <hr><h2><a name="Interfacing an external package with CMT"></a><a href="#index"><tt>1 5</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> 5823 6011 <blockquote> 5824 6012 <p>Very often, external packages (typically commercial products, or … … 5900 6088 packages. </p> 5901 6089 </blockquote> 5902 <hr><h2><a name="The installation area mechanism"></a><a href="#index"><tt>1 6</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> 5903 6091 <blockquote> 5904 6092 <p>CMT proposes and implements a flexible architecture for … … 5937 6125 files, documentation and header files.</li> 5938 6126 </ol> 5939 <hr><h3><a name="The default implementation"></a><a href="#index"><tt>1 6. 1</tt></a> - The default implementation</h3>6127 <hr><h3><a name="The default implementation"></a><a href="#index"><tt>17. 1</tt></a> - The default implementation</h3> 5940 6128 <blockquote> 5941 6129 <p>It is provided in terms of</p> … … 6008 6196 local patterns.</p> 6009 6197 </blockquote> 6010 <hr><h3><a name="Tuning the installation area mechanisms"></a><a href="#index"><tt>1 6. 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. 2</tt></a> - Tuning the installation area mechanisms</h3> 6011 6199 <blockquote> 6012 6200 <p>First of all every individual sub-project may activate or … … 6087 6275 </blockquote> 6088 6276 </blockquote> 6089 <hr><h2><a name="Installing CMT for the first time"></a><a href="#index"><tt>1 7</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> 6090 6278 <blockquote> 6091 6279 <P>These sections are of interest only if <tt>CMT</tt> … … 6110 6298 or operate <tt>CMT</tt> 6111 6299 . </P> 6112 <hr><h3><a name="Installing CMT on your Unix site"></a><a href="#index"><tt>1 7. 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. 1</tt></a> - Installing CMT on your Unix site</h3> 6113 6301 <blockquote> 6114 6302 <P>The very first operation after dowloading <tt>CMT</tt> … … 6187 6375 csh> gmake</pre> 6188 6376 </blockquote> 6189 <hr><h3><a name="Installing CMT on a Windows or Windows NT site"></a><a href="#index"><tt>1 7. 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. 2</tt></a> - Installing CMT on a Windows or Windows NT site</h3> 6190 6378 <blockquote> 6191 6379 <p>You first have to fetch the distribution kit from the Web at … … 6219 6407 package global access paths. </li> 6220 6408 <li>HKEY_LOCAL_MACHINE/Software/CMT/site will contain the 6221 conventional site name. </li>6409 conventional site name. </li> 6222 6410 <li>HKEY_CURRENT_USER/Software/CMT/path/ may contain a set of 6223 6411 text of text values corresponding to the different package … … 6239 6427 </blockquote> 6240 6428 </blockquote> 6241 <hr><h2><a name="Appendices"></a><a href="#index"><tt>1 8</tt></a> - Appendices</h2>6242 <blockquote> 6243 <hr><h3><a name="Copyright"></a><a href="#index"><tt>1 8. 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. 1</tt></a> - Copyright</h3> 6244 6432 <blockquote> 6245 6433 <center><b>Copyright LAL and Christian Arnault LAL-Orsay CNRS</b> … … 6276 6464 knowledge of the CeCILL license and that you accept its terms.</p> 6277 6465 </blockquote> 6278 <hr><h3><a name="Standard make targets predefined in CMT"></a><a href="#index"><tt>1 8. 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. 2</tt></a> - Standard make targets predefined in CMT</h3> 6279 6467 <blockquote> 6280 6468 <p>These targets can always be listed through the following command : </p> … … 6339 6527 <td>only build this 6340 6528 particular component (as opposed to the <tt>all</tt> 6341 6529 target that tries to build all components of this 6342 6530 package)</td> 6343 6531 </tr> … … 6356 6544 sh> gmake Foo </pre> 6357 6545 </blockquote> 6358 <hr><h3><a name="Standard macros predefined in CMT"></a><a href="#index"><tt>1 8. 3</tt></a> - Standard macros predefined in CMT</h3>6359 <blockquote> 6360 <hr><h4><a name="CMT static macros"></a><a href="#index"><tt>1 8. 3. 1</tt></a> - CMT static macros</h4>6546 <hr><h3><a name="Standard macros predefined in CMT"></a><a href="#index"><tt>19. 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. 3. 1</tt></a> - CMT static macros</h4> 6361 6549 <blockquote> 6362 6550 These macros provide static data about CMT itself. They cannot be … … 6395 6583 </p> 6396 6584 </blockquote> 6397 <hr><h4><a name="Structural macros"></a><a href="#index"><tt>1 8. 3. 2</tt></a> - Structural macros</h4>6585 <hr><h4><a name="Structural macros"></a><a href="#index"><tt>19. 3. 2</tt></a> - Structural macros</h4> 6398 6586 <blockquote> 6399 6587 These macros describe the structural conventions followed by … … 6493 6681 </p> 6494 6682 </blockquote> 6495 <hr><h4><a name="Language related macros"></a><a href="#index"><tt>1 8. 3. 3</tt></a> - Language related macros</h4>6683 <hr><h4><a name="Language related macros"></a><a href="#index"><tt>19. 3. 3</tt></a> - Language related macros</h4> 6496 6684 <blockquote> 6497 6685 These macros are purely conventional. They are expected in the … … 6500 6688 providing the various building actions. 6501 6689 <p>During the mechanism of new language declaration and definition 6502 available in the <tt>CMT</tt>6690 available in the <tt>CMT</tt> 6503 6691 syntax, developers are expected to 6504 6692 define similar conventions for corresponding actions.</p> … … 6745 6933 </p> 6746 6934 </blockquote> 6747 <hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>1 8. 3. 4</tt></a> - Package customizing macros</h4>6935 <hr><h4><a name="Package customizing macros"></a><a href="#index"><tt>19. 3. 4</tt></a> - Package customizing macros</h4> 6748 6936 <blockquote> 6749 6937 These macros do not receive default values. They are all prefixed … … 6903 7091 <td>specifies the base location for external software 6904 7092 described in glue packages. This macro is generally used to 6905 7093 specify the previous one</td> 6906 7094 </tr> 6907 7095 </table> 6908 7096 </p> 6909 7097 </blockquote> 6910 <hr><h4><a name="Constituent specific customizing macros"></a><a href="#index"><tt>1 8. 3. 5</tt></a> - Constituent specific customizing macros</h4>7098 <hr><h4><a name="Constituent specific customizing macros"></a><a href="#index"><tt>19. 3. 5</tt></a> - Constituent specific customizing macros</h4> 6911 7099 <blockquote> 6912 7100 These macros do not receive any default values (ie they are empty … … 6973 7161 <td> 6974 7162 provides additional linker options to the application. It is 6975 complementary to - and should not be confused with - the7163 complementary to - and should not be confused with - the 6976 7164 <tt><<i>package</i> 6977 7165 >_linkopts</tt> 6978 7166 macro, which 6979 7167 provides exported linker options required by clients 6980 7168 packages to use the package libraries. 6981 7169 </td> … … 7029 7217 </p> 7030 7218 </blockquote> 7031 <hr><h4><a name="Source specific customizing macros"></a><a href="#index"><tt>1 8. 3. 6</tt></a> - Source specific customizing macros</h4>7219 <hr><h4><a name="Source specific customizing macros"></a><a href="#index"><tt>19. 3. 6</tt></a> - Source specific customizing macros</h4> 7032 7220 <blockquote> 7033 7221 These macros do not receive any default values (ie they are empty … … 7069 7257 </p> 7070 7258 </blockquote> 7071 <hr><h4><a name="Generated macros"></a><a href="#index"><tt>1 8. 3. 7</tt></a> - Generated macros</h4>7259 <hr><h4><a name="Generated macros"></a><a href="#index"><tt>19. 3. 7</tt></a> - Generated macros</h4> 7072 7260 <blockquote> 7073 7261 <p> These macros are automatically <i>generated</i> … … 7263 7451 </p> 7264 7452 </blockquote> 7265 <hr><h4><a name="Macros related with the installation area mechanisms"></a><a href="#index"><tt>1 8. 3. 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. 3. 8</tt></a> - Macros related with the installation area mechanisms</h4> 7266 7454 <blockquote> 7267 7455 These macros contain the parameterisation of the installation area … … 7369 7557 </p> 7370 7558 </blockquote> 7371 <hr><h4><a name="Utility macros"></a><a href="#index"><tt>1 8. 3. 9</tt></a> - Utility macros</h4>7559 <hr><h4><a name="Utility macros"></a><a href="#index"><tt>19. 3. 9</tt></a> - Utility macros</h4> 7372 7560 <blockquote> 7373 7561 These macros are used to specify the behaviour of various actions … … 7514 7702 </blockquote> 7515 7703 </blockquote> 7516 <hr><h3><a name="Standard tags generated by CMT"></a><a href="#index"><tt>1 8. 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. 4</tt></a> - Standard tags generated by CMT</h3> 7517 7705 <blockquote> 7518 7706 <p> … … 7621 7809 </p> 7622 7810 </blockquote> 7623 <hr><h3><a name="Standard templates for makefile fragments"></a><a href="#index"><tt>1 8. 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. 5</tt></a> - Standard templates for makefile fragments</h3> 7624 7812 <blockquote> 7625 7813 <p> … … 7764 7952 </p> 7765 7953 </blockquote> 7766 <hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>1 8. 6</tt></a> - Makefile generation sequences</h3>7954 <hr><h3><a name="Makefile generation sequences"></a><a href="#index"><tt>19. 6</tt></a> - Makefile generation sequences</h3> 7767 7955 <blockquote> 7768 7956 <blockquote><hr> … … 7883 8071 </p> 7884 8072 </blockquote> 7885 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>1 8. 7</tt></a> - The complete requirements syntax</h3>8073 <hr><h3><a name="The complete requirements syntax"></a><a href="#index"><tt>19. 7</tt></a> - The complete requirements syntax</h3> 7886 8074 <blockquote> 7887 8075 The syntax of specification statements that can be installed in a … … 9613 9801 </center> 9614 9802 </blockquote> 9615 <hr><h3><a name="The default strategies defined in CMT"></a><a href="#index"><tt>1 8. 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. 8</tt></a> - The default strategies defined in CMT</h3> 9616 9804 <blockquote> 9617 9805 <pre class="cmt"> … … 9619 9807 DefaultInstallAreaStrategy = WithoutInstallArea</pre> 9620 9808 </blockquote> 9621 <hr><h3><a name="The internal mechanism of cmt cvs operations"></a><a href="#index"><tt>1 8. 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. 9</tt></a> - The internal mechanism of cmt cvs operations</h3> 9622 9810 <blockquote> 9623 9811 Generally, CVS does not handle queries upon the repository (such as … … 9718 9906 <tr> 9719 9907 <td width="100"><tt> 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> 4. 1</tt></td> 9912 <td> <a href="#CMTPROJECTPATH">CMTPROJECTPATH</a></td> 9913 </tr> 9914 <tr> 9915 <td width="100"><tt> 4. 2</tt></td> 9916 <td> <a href="#CMTPATH">CMTPATH</a></td> 9917 </tr> 9918 <tr> 9919 <td width="100"><tt> 5</tt></td> 9720 9920 <td><a href="#Installing a new package">Installing a new package</a></td> 9721 9921 </tr> 9722 9922 <tr> 9723 <td width="100"><tt> 5</tt></td>9923 <td width="100"><tt> 6</tt></td> 9724 9924 <td><a href="#Localizing a package">Localizing a package</a></td> 9725 9925 </tr> 9726 9926 <tr> 9727 <td width="100"><tt> 6</tt></td>9927 <td width="100"><tt> 7</tt></td> 9728 9928 <td><a href="#The concept of project">The concept of project</a></td> 9729 9929 </tr> 9730 9930 <tr> 9731 <td width="100"><tt> 7</tt></td>9931 <td width="100"><tt> 8</tt></td> 9732 9932 <td><a href="#Assigning semantics to packages. Common practices">Assigning semantics to packages. Common practices</a></td> 9733 9933 </tr> 9734 9934 <tr> 9735 <td width="100"><tt> 7. 1</tt></td>9935 <td width="100"><tt> 8. 1</tt></td> 9736 9936 <td> <a href="#The primary package">The primary package</a></td> 9737 9937 </tr> 9738 9938 <tr> 9739 <td width="100"><tt> 7. 2</tt></td>9939 <td width="100"><tt> 8. 2</tt></td> 9740 9940 <td> <a href="#The policy package">The policy package</a></td> 9741 9941 </tr> 9742 9942 <tr> 9743 <td width="100"><tt> 7. 3</tt></td>9943 <td width="100"><tt> 8. 3</tt></td> 9744 9944 <td> <a href="#The container or management package">The container or management package</a></td> 9745 9945 </tr> 9746 9946 <tr> 9747 <td width="100"><tt> 7. 4</tt></td>9947 <td width="100"><tt> 8. 4</tt></td> 9748 9948 <td> <a href="#The release package">The release package</a></td> 9749 9949 </tr> 9750 9950 <tr> 9751 <td width="100"><tt> 7. 5</tt></td>9951 <td width="100"><tt> 8. 5</tt></td> 9752 9952 <td> <a href="#The glue or interface package">The glue or interface package</a></td> 9753 9953 </tr> 9754 9954 <tr> 9755 <td width="100"><tt> 8</tt></td>9955 <td width="100"><tt> 9</tt></td> 9756 9956 <td><a href="#Managing site dependent features - The CMTSITE environment variable">Managing site dependent features - The CMTSITE environment variable</a></td> 9757 9957 </tr> 9758 9958 <tr> 9759 <td width="100"><tt> 9</tt></td>9959 <td width="100"><tt>10</tt></td> 9760 9960 <td><a href="#Configuring a package">Configuring a package</a></td> 9761 9961 </tr> 9762 9962 <tr> 9763 <td width="100"><tt>1 0</tt></td>9963 <td width="100"><tt>11</tt></td> 9764 9964 <td><a href="#Selecting a specific configuration">Selecting a specific configuration</a></td> 9765 9965 </tr> 9766 9966 <tr> 9767 <td width="100"><tt>1 0. 1</tt></td>9967 <td width="100"><tt>11. 1</tt></td> 9768 9968 <td> <a href="#Describing a configuration">Describing a configuration</a></td> 9769 9969 </tr> 9770 9970 <tr> 9771 <td width="100"><tt>1 0. 2</tt></td>9971 <td width="100"><tt>11. 2</tt></td> 9772 9972 <td> <a href="#Defining the user tags">Defining the user tags</a></td> 9773 9973 </tr> 9774 9974 <tr> 9775 <td width="100"><tt>1 0. 3</tt></td>9975 <td width="100"><tt>11. 3</tt></td> 9776 9976 <td> <a href="#Activating tags">Activating tags</a></td> 9777 9977 </tr> 9778 9978 <tr> 9779 <td width="100"><tt>1 1</tt></td>9979 <td width="100"><tt>12</tt></td> 9780 9980 <td><a href="#Working on a package">Working on a package</a></td> 9781 9981 </tr> 9782 9982 <tr> 9783 <td width="100"><tt>1 1. 1</tt></td>9983 <td width="100"><tt>12. 1</tt></td> 9784 9984 <td> <a href="#Working on a library">Working on a library</a></td> 9785 9985 </tr> 9786 9986 <tr> 9787 <td width="100"><tt>1 1. 2</tt></td>9987 <td width="100"><tt>12. 2</tt></td> 9788 9988 <td> <a href="#Working on an application">Working on an application</a></td> 9789 9989 </tr> 9790 9990 <tr> 9791 <td width="100"><tt>1 1. 3</tt></td>9991 <td width="100"><tt>12. 3</tt></td> 9792 9992 <td> <a href="#Working on a test or external application">Working on a test or external application</a></td> 9793 9993 </tr> 9794 9994 <tr> 9795 <td width="100"><tt>1 1. 4</tt></td>9995 <td width="100"><tt>12. 4</tt></td> 9796 9996 <td> <a href="#Construction of a global environment">Construction of a global environment</a></td> 9797 9997 </tr> 9798 9998 <tr> 9799 <td width="100"><tt>1 2</tt></td>9999 <td width="100"><tt>13</tt></td> 9800 10000 <td><a href="#Defining a document generator">Defining a document generator</a></td> 9801 10001 </tr> 9802 10002 <tr> 9803 <td width="100"><tt>1 2. 1</tt></td>10003 <td width="100"><tt>13. 1</tt></td> 9804 10004 <td> <a href="#An example : the tex document-style">An example : the tex document-style</a></td> 9805 10005 </tr> 9806 10006 <tr> 9807 <td width="100"><tt>1 2. 2</tt></td>10007 <td width="100"><tt>13. 2</tt></td> 9808 10008 <td> <a href="#How to create and install a new document style">How to create and install a new document style</a></td> 9809 10009 </tr> 9810 10010 <tr> 9811 <td width="100"><tt>1 2. 3</tt></td>10011 <td width="100"><tt>13. 3</tt></td> 9812 10012 <td> <a href="#Examples">Examples</a></td> 9813 10013 </tr> 9814 10014 <tr> 9815 <td width="100"><tt>1 3</tt></td>10015 <td width="100"><tt>14</tt></td> 9816 10016 <td><a href="#The tools provided by CMT">The tools provided by CMT</a></td> 9817 10017 </tr> 9818 10018 <tr> 9819 <td width="100"><tt>1 3. 1</tt></td>10019 <td width="100"><tt>14. 1</tt></td> 9820 10020 <td> <a href="#The requirements file">The requirements file</a></td> 9821 10021 </tr> 9822 10022 <tr> 9823 <td width="100"><tt>1 3. 1. 1</tt></td>10023 <td width="100"><tt>14. 1. 1</tt></td> 9824 10024 <td> <a href="#The general requirements syntax">The general requirements syntax</a></td> 9825 10025 </tr> 9826 10026 <tr> 9827 <td width="100"><tt>1 3. 2</tt></td>10027 <td width="100"><tt>14. 2</tt></td> 9828 10028 <td> <a href="#The concepts handled in the requirements file">The concepts handled in the requirements file</a></td> 9829 10029 </tr> 9830 10030 <tr> 9831 <td width="100"><tt>1 3. 2. 1</tt></td>10031 <td width="100"><tt>14. 2. 1</tt></td> 9832 10032 <td> <a href="#The package structuring style ">The package structuring style </a></td> 9833 10033 </tr> 9834 10034 <tr> 9835 <td width="100"><tt>1 3. 2. 2</tt></td>10035 <td width="100"><tt>14. 2. 2</tt></td> 9836 10036 <td> <a href="#Meta-information : author, manager">Meta-information : author, manager</a></td> 9837 10037 </tr> 9838 10038 <tr> 9839 <td width="100"><tt>1 3. 2. 3</tt></td>10039 <td width="100"><tt>14. 2. 3</tt></td> 9840 10040 <td> <a href="#package, version">package, version</a></td> 9841 10041 </tr> 9842 10042 <tr> 9843 <td width="100"><tt>1 3. 2. 4</tt></td>10043 <td width="100"><tt>14. 2. 4</tt></td> 9844 10044 <td> <a href="#Constituents : application, library, document">Constituents : application, library, document</a></td> 9845 10045 </tr> 9846 10046 <tr> 9847 <td width="100"><tt>1 3. 2. 5</tt></td>10047 <td width="100"><tt>14. 2. 5</tt></td> 9848 10048 <td> <a href="#Groups">Groups</a></td> 9849 10049 </tr> 9850 10050 <tr> 9851 <td width="100"><tt>1 3. 2. 6</tt></td>10051 <td width="100"><tt>14. 2. 6</tt></td> 9852 10052 <td> <a href="#Languages">Languages</a></td> 9853 10053 </tr> 9854 10054 <tr> 9855 <td width="100"><tt>1 3. 2. 7</tt></td>10055 <td width="100"><tt>14. 2. 7</tt></td> 9856 10056 <td> <a href="#Symbols">Symbols</a></td> 9857 10057 </tr> 9858 10058 <tr> 9859 <td width="100"><tt>1 3. 2. 7. 1</tt></td>10059 <td width="100"><tt>14. 2. 7. 1</tt></td> 9860 10060 <td> <a href="#actions">actions</a></td> 9861 10061 </tr> 9862 10062 <tr> 9863 <td width="100"><tt>1 3. 2. 8</tt></td>10063 <td width="100"><tt>14. 2. 8</tt></td> 9864 10064 <td> <a href="#use">use</a></td> 9865 10065 </tr> 9866 10066 <tr> 9867 <td width="100"><tt>1 3. 2. 9</tt></td>10067 <td width="100"><tt>14. 2. 9</tt></td> 9868 10068 <td> <a href="#patterns">patterns</a></td> 9869 10069 </tr> 9870 10070 <tr> 9871 <td width="100"><tt>1 3. 2. 9. 1</tt></td>10071 <td width="100"><tt>14. 2. 9. 1</tt></td> 9872 10072 <td> <a href="#Applying a pattern">Applying a pattern</a></td> 9873 10073 </tr> 9874 10074 <tr> 9875 <td width="100"><tt>1 3. 2.10</tt></td>10075 <td width="100"><tt>14. 2.10</tt></td> 9876 10076 <td> <a href="#cmtpath_patterns">cmtpath_patterns</a></td> 9877 10077 </tr> 9878 10078 <tr> 9879 <td width="100"><tt>1 3. 2.11</tt></td>10079 <td width="100"><tt>14. 2.11</tt></td> 9880 10080 <td> <a href="#branches">branches</a></td> 9881 10081 </tr> 9882 10082 <tr> 9883 <td width="100"><tt>1 3. 2.12</tt></td>10083 <td width="100"><tt>14. 2.12</tt></td> 9884 10084 <td> <a href="#Strategy specifications">Strategy specifications</a></td> 9885 10085 </tr> 9886 10086 <tr> 9887 <td width="100"><tt>1 3. 2.13</tt></td>10087 <td width="100"><tt>14. 2.13</tt></td> 9888 10088 <td> <a href="#setup_script, cleanup_script">setup_script, cleanup_script</a></td> 9889 10089 </tr> 9890 10090 <tr> 9891 <td width="100"><tt>1 3. 2.14</tt></td>10091 <td width="100"><tt>14. 2.14</tt></td> 9892 10092 <td> <a href="#include_path">include_path</a></td> 9893 10093 </tr> 9894 10094 <tr> 9895 <td width="100"><tt>1 3. 2.15</tt></td>10095 <td width="100"><tt>14. 2.15</tt></td> 9896 10096 <td> <a href="#include_dirs">include_dirs</a></td> 9897 10097 </tr> 9898 10098 <tr> 9899 <td width="100"><tt>1 3. 2.16</tt></td>10099 <td width="100"><tt>14. 2.16</tt></td> 9900 10100 <td> <a href="#make_fragment">make_fragment</a></td> 9901 10101 </tr> 9902 10102 <tr> 9903 <td width="100"><tt>1 3. 2.17</tt></td>10103 <td width="100"><tt>14. 2.17</tt></td> 9904 10104 <td> <a href="#public, private">public, private</a></td> 9905 10105 </tr> 9906 10106 <tr> 9907 <td width="100"><tt>1 3. 2.17. 1</tt></td>10107 <td width="100"><tt>14. 2.17. 1</tt></td> 9908 10108 <td> <a href="#Scoping sections">Scoping sections</a></td> 9909 10109 </tr> 9910 10110 <tr> 9911 <td width="100"><tt>1 3. 2.18</tt></td>10111 <td width="100"><tt>14. 2.18</tt></td> 9912 10112 <td> <a href="#tag, apply_tag">tag, apply_tag</a></td> 9913 10113 </tr> 9914 10114 <tr> 9915 <td width="100"><tt>1 3. 3</tt></td>10115 <td width="100"><tt>14. 3</tt></td> 9916 10116 <td> <a href="#The general cmt user interface">The general cmt user interface</a></td> 9917 10117 </tr> 9918 10118 <tr> 9919 <td width="100"><tt>1 3. 3. 1</tt></td>10119 <td width="100"><tt>14. 3. 1</tt></td> 9920 10120 <td> <a href="#cmt broadcast">cmt broadcast</a></td> 9921 10121 </tr> 9922 10122 <tr> 9923 <td width="100"><tt>1 3. 3. 1. 1</tt></td>10123 <td width="100"><tt>14. 3. 1. 1</tt></td> 9924 10124 <td> <a href="#Specifying the shell command">Specifying the shell command</a></td> 9925 10125 </tr> 9926 10126 <tr> 9927 <td width="100"><tt>1 3. 3. 1. 2</tt></td>10127 <td width="100"><tt>14. 3. 1. 2</tt></td> 9928 10128 <td> <a href="#Templates in the shell command">Templates in the shell command</a></td> 9929 10129 </tr> 9930 10130 <tr> 9931 <td width="100"><tt>1 3. 3. 2</tt></td>10131 <td width="100"><tt>14. 3. 2</tt></td> 9932 10132 <td> <a href="#cmt build <option>">cmt build <option></a></td> 9933 10133 </tr> 9934 10134 <tr> 9935 <td width="100"><tt>1 3. 3. 3</tt></td>10135 <td width="100"><tt>14. 3. 3</tt></td> 9936 10136 <td> <a href="#cmt check configuration">cmt check configuration</a></td> 9937 10137 </tr> 9938 10138 <tr> 9939 <td width="100"><tt>1 3. 3. 4</tt></td>10139 <td width="100"><tt>14. 3. 4</tt></td> 9940 10140 <td> <a href="#cmt check files <reference-file> <new-file>">cmt check files <reference-file> <new-file></a></td> 9941 10141 </tr> 9942 10142 <tr> 9943 <td width="100"><tt>1 3. 3. 5</tt></td>10143 <td width="100"><tt>14. 3. 5</tt></td> 9944 10144 <td> <a href="#cmt checkout ...">cmt checkout ...</a></td> 9945 10145 </tr> 9946 10146 <tr> 9947 <td width="100"><tt>1 3. 3. 6</tt></td>10147 <td width="100"><tt>14. 3. 6</tt></td> 9948 10148 <td> <a href="#cmt co ...">cmt co ...</a></td> 9949 10149 </tr> 9950 10150 <tr> 9951 <td width="100"><tt>1 3. 3. 7</tt></td>10151 <td width="100"><tt>14. 3. 7</tt></td> 9952 10152 <td> <a href="#cmt cleanup [-csh|-sh]">cmt cleanup [-csh|-sh]</a></td> 9953 10153 </tr> 9954 10154 <tr> 9955 <td width="100"><tt>1 3. 3. 8</tt></td>10155 <td width="100"><tt>14. 3. 8</tt></td> 9956 10156 <td> <a href="#cmt config">cmt config</a></td> 9957 10157 </tr> 9958 10158 <tr> 9959 <td width="100"><tt>1 3. 3. 9</tt></td>10159 <td width="100"><tt>14. 3. 9</tt></td> 9960 10160 <td> <a href="#cmt create <package> <version> [<area>]">cmt create <package> <version> [<area>]</a></td> 9961 10161 </tr> 9962 10162 <tr> 9963 <td width="100"><tt>1 3. 3.10</tt></td>10163 <td width="100"><tt>14. 3.10</tt></td> 9964 10164 <td> <a href="#cmt expand model [-strict] <model-string>">cmt expand model [-strict] <model-string></a></td> 9965 10165 </tr> 9966 10166 <tr> 9967 <td width="100"><tt>1 3. 3.11</tt></td>10167 <td width="100"><tt>14. 3.11</tt></td> 9968 10168 <td> <a href="#cmt filter <in-file> <out-file>">cmt filter <in-file> <out-file></a></td> 9969 10169 </tr> 9970 10170 <tr> 9971 <td width="100"><tt>1 3. 3.12</tt></td>10171 <td width="100"><tt>14. 3.12</tt></td> 9972 10172 <td> <a href="#cmt help | --help">cmt help | --help</a></td> 9973 10173 </tr> 9974 10174 <tr> 9975 <td width="100"><tt>1 3. 3.13</tt></td>10175 <td width="100"><tt>14. 3.13</tt></td> 9976 10176 <td> <a href="#cmt lock [ <package> <version> [<area>] ]">cmt lock [ <package> <version> [<area>] ]</a></td> 9977 10177 </tr> 9978 10178 <tr> 9979 <td width="100"><tt>1 3. 3.14</tt></td>10179 <td width="100"><tt>14. 3.14</tt></td> 9980 10180 <td> <a href="#cmt remove <package> <version> [<area>]">cmt remove <package> <version> [<area>]</a></td> 9981 10181 </tr> 9982 10182 <tr> 9983 <td width="100"><tt>1 3. 3.15</tt></td>10183 <td width="100"><tt>14. 3.15</tt></td> 9984 10184 <td> <a href="#cmt remove library_links">cmt remove library_links</a></td> 9985 10185 </tr> 9986 10186 <tr> 9987 <td width="100"><tt>1 3. 3.16</tt></td>10187 <td width="100"><tt>14. 3.16</tt></td> 9988 10188 <td> <a href="#cmt run [shell-command]">cmt run [shell-command]</a></td> 9989 10189 </tr> 9990 10190 <tr> 9991 <td width="100"><tt>1 3. 3.17</tt></td>10191 <td width="100"><tt>14. 3.17</tt></td> 9992 10192 <td> <a href="#cmt set version <version>">cmt set version <version></a></td> 9993 10193 </tr> 9994 10194 <tr> 9995 <td width="100"><tt>1 3. 3.18</tt></td>10195 <td width="100"><tt>14. 3.18</tt></td> 9996 10196 <td> <a href="#cmt set versions">cmt set versions</a></td> 9997 10197 </tr> 9998 10198 <tr> 9999 <td width="100"><tt>1 3. 3.19</tt></td>10199 <td width="100"><tt>14. 3.19</tt></td> 10000 10200 <td> <a href="#cmt setup [-csh|-sh|-bat]">cmt setup [-csh|-sh|-bat]</a></td> 10001 10201 </tr> 10002 10202 <tr> 10003 <td width="100"><tt>1 3. 3.20</tt></td>10203 <td width="100"><tt>14. 3.20</tt></td> 10004 10204 <td> <a href="#cmt show <option>">cmt show <option></a></td> 10005 10205 </tr> 10006 10206 <tr> 10007 <td width="100"><tt>1 3. 3.21</tt></td>10207 <td width="100"><tt>14. 3.21</tt></td> 10008 10208 <td> <a href="#cmt system">cmt system</a></td> 10009 10209 </tr> 10010 10210 <tr> 10011 <td width="100"><tt>1 3. 3.22</tt></td>10211 <td width="100"><tt>14. 3.22</tt></td> 10012 10212 <td> <a href="#cmt unlock [ <package> <version> [<area>] ]">cmt unlock [ <package> <version> [<area>] ]</a></td> 10013 10213 </tr> 10014 10214 <tr> 10015 <td width="100"><tt>1 3. 3.23</tt></td>10215 <td width="100"><tt>14. 3.23</tt></td> 10016 10216 <td> <a href="#cmt version | --version">cmt version | --version</a></td> 10017 10217 </tr> 10018 10218 <tr> 10019 <td width="100"><tt>1 3. 3.24</tt></td>10219 <td width="100"><tt>14. 3.24</tt></td> 10020 10220 <td> <a href="#cmt cvstags <module>">cmt cvstags <module></a></td> 10021 10221 </tr> 10022 10222 <tr> 10023 <td width="100"><tt>1 3. 3.25</tt></td>10223 <td width="100"><tt>14. 3.25</tt></td> 10024 10224 <td> <a href="#cmt cvsbranches <module>">cmt cvsbranches <module></a></td> 10025 10225 </tr> 10026 10226 <tr> 10027 <td width="100"><tt>1 3. 3.26</tt></td>10227 <td width="100"><tt>14. 3.26</tt></td> 10028 10228 <td> <a href="#cmt cvssubpackages <module>">cmt cvssubpackages <module></a></td> 10029 10229 </tr> 10030 10230 <tr> 10031 <td width="100"><tt>1 3. 4</tt></td>10231 <td width="100"><tt>14. 4</tt></td> 10032 10232 <td> <a href="#The setup and cleanup scripts">The setup and cleanup scripts</a></td> 10033 10233 </tr> 10034 10234 <tr> 10035 <td width="100"><tt>1 3. 5</tt></td>10235 <td width="100"><tt>14. 5</tt></td> 10036 10236 <td> <a href="#cmt build prototype">cmt build prototype</a></td> 10037 10237 </tr> 10038 10238 <tr> 10039 <td width="100"><tt>1 4</tt></td>10239 <td width="100"><tt>15</tt></td> 10040 10240 <td><a href="#Using cvs together with CMT">Using cvs together with CMT</a></td> 10041 10241 </tr> 10042 10242 <tr> 10043 <td width="100"><tt>1 4. 1</tt></td>10243 <td width="100"><tt>15. 1</tt></td> 10044 10244 <td> <a href="#Importing a package into a cvs repository">Importing a package into a cvs repository</a></td> 10045 10245 </tr> 10046 10246 <tr> 10047 <td width="100"><tt>1 4. 2</tt></td>10247 <td width="100"><tt>15. 2</tt></td> 10048 10248 <td> <a href="#Checking a package out from a cvs repository">Checking a package out from a cvs repository</a></td> 10049 10249 </tr> 10050 10250 <tr> 10051 <td width="100"><tt>1 4. 3</tt></td>10251 <td width="100"><tt>15. 3</tt></td> 10052 10252 <td> <a href="#Querying CVS about some important infos">Querying CVS about some important infos</a></td> 10053 10253 </tr> 10054 10254 <tr> 10055 <td width="100"><tt>1 4. 4</tt></td>10255 <td width="100"><tt>15. 4</tt></td> 10056 10256 <td> <a href="#Working on a package, creating a new release">Working on a package, creating a new release</a></td> 10057 10257 </tr> 10058 10258 <tr> 10059 <td width="100"><tt>1 4. 5</tt></td>10259 <td width="100"><tt>15. 5</tt></td> 10060 10260 <td> <a href="#Getting a particular tagged version out of CVS">Getting a particular tagged version out of CVS</a></td> 10061 10261 </tr> 10062 10262 <tr> 10063 <td width="100"><tt>1 5</tt></td>10263 <td width="100"><tt>16</tt></td> 10064 10264 <td><a href="#Interfacing an external package with CMT">Interfacing an external package with CMT</a></td> 10065 10265 </tr> 10066 10266 <tr> 10067 <td width="100"><tt>1 6</tt></td>10267 <td width="100"><tt>17</tt></td> 10068 10268 <td><a href="#The installation area mechanism">The installation area mechanism</a></td> 10069 10269 </tr> 10070 10270 <tr> 10071 <td width="100"><tt>1 6. 1</tt></td>10271 <td width="100"><tt>17. 1</tt></td> 10072 10272 <td> <a href="#The default implementation">The default implementation</a></td> 10073 10273 </tr> 10074 10274 <tr> 10075 <td width="100"><tt>1 6. 2</tt></td>10275 <td width="100"><tt>17. 2</tt></td> 10076 10276 <td> <a href="#Tuning the installation area mechanisms">Tuning the installation area mechanisms</a></td> 10077 10277 </tr> 10078 10278 <tr> 10079 <td width="100"><tt>1 7</tt></td>10279 <td width="100"><tt>18</tt></td> 10080 10280 <td><a href="#Installing CMT for the first time">Installing CMT for the first time</a></td> 10081 10281 </tr> 10082 10282 <tr> 10083 <td width="100"><tt>1 7. 1</tt></td>10283 <td width="100"><tt>18. 1</tt></td> 10084 10284 <td> <a href="#Installing CMT on your Unix site">Installing CMT on your Unix site</a></td> 10085 10285 </tr> 10086 10286 <tr> 10087 <td width="100"><tt>1 7. 2</tt></td>10287 <td width="100"><tt>18. 2</tt></td> 10088 10288 <td> <a href="#Installing CMT on a Windows or Windows NT site">Installing CMT on a Windows or Windows NT site</a></td> 10089 10289 </tr> 10090 10290 <tr> 10091 <td width="100"><tt>1 8</tt></td>10291 <td width="100"><tt>19</tt></td> 10092 10292 <td><a href="#Appendices">Appendices</a></td> 10093 10293 </tr> 10094 10294 <tr> 10095 <td width="100"><tt>1 8. 1</tt></td>10295 <td width="100"><tt>19. 1</tt></td> 10096 10296 <td> <a href="#Copyright">Copyright</a></td> 10097 10297 </tr> 10098 10298 <tr> 10099 <td width="100"><tt>1 8. 2</tt></td>10299 <td width="100"><tt>19. 2</tt></td> 10100 10300 <td> <a href="#Standard make targets predefined in CMT">Standard make targets predefined in CMT</a></td> 10101 10301 </tr> 10102 10302 <tr> 10103 <td width="100"><tt>1 8. 3</tt></td>10303 <td width="100"><tt>19. 3</tt></td> 10104 10304 <td> <a href="#Standard macros predefined in CMT">Standard macros predefined in CMT</a></td> 10105 10305 </tr> 10106 10306 <tr> 10107 <td width="100"><tt>1 8. 3. 1</tt></td>10307 <td width="100"><tt>19. 3. 1</tt></td> 10108 10308 <td> <a href="#CMT static macros">CMT static macros</a></td> 10109 10309 </tr> 10110 10310 <tr> 10111 <td width="100"><tt>1 8. 3. 2</tt></td>10311 <td width="100"><tt>19. 3. 2</tt></td> 10112 10312 <td> <a href="#Structural macros">Structural macros</a></td> 10113 10313 </tr> 10114 10314 <tr> 10115 <td width="100"><tt>1 8. 3. 3</tt></td>10315 <td width="100"><tt>19. 3. 3</tt></td> 10116 10316 <td> <a href="#Language related macros">Language related macros</a></td> 10117 10317 </tr> 10118 10318 <tr> 10119 <td width="100"><tt>1 8. 3. 4</tt></td>10319 <td width="100"><tt>19. 3. 4</tt></td> 10120 10320 <td> <a href="#Package customizing macros">Package customizing macros</a></td> 10121 10321 </tr> 10122 10322 <tr> 10123 <td width="100"><tt>1 8. 3. 5</tt></td>10323 <td width="100"><tt>19. 3. 5</tt></td> 10124 10324 <td> <a href="#Constituent specific customizing macros">Constituent specific customizing macros</a></td> 10125 10325 </tr> 10126 10326 <tr> 10127 <td width="100"><tt>1 8. 3. 6</tt></td>10327 <td width="100"><tt>19. 3. 6</tt></td> 10128 10328 <td> <a href="#Source specific customizing macros">Source specific customizing macros</a></td> 10129 10329 </tr> 10130 10330 <tr> 10131 <td width="100"><tt>1 8. 3. 7</tt></td>10331 <td width="100"><tt>19. 3. 7</tt></td> 10132 10332 <td> <a href="#Generated macros">Generated macros</a></td> 10133 10333 </tr> 10134 10334 <tr> 10135 <td width="100"><tt>1 8. 3. 8</tt></td>10335 <td width="100"><tt>19. 3. 8</tt></td> 10136 10336 <td> <a href="#Macros related with the installation area mechanisms">Macros related with the installation area mechanisms</a></td> 10137 10337 </tr> 10138 10338 <tr> 10139 <td width="100"><tt>1 8. 3. 9</tt></td>10339 <td width="100"><tt>19. 3. 9</tt></td> 10140 10340 <td> <a href="#Utility macros">Utility macros</a></td> 10141 10341 </tr> 10142 10342 <tr> 10143 <td width="100"><tt>1 8. 4</tt></td>10343 <td width="100"><tt>19. 4</tt></td> 10144 10344 <td> <a href="#Standard tags generated by CMT">Standard tags generated by CMT</a></td> 10145 10345 </tr> 10146 10346 <tr> 10147 <td width="100"><tt>1 8. 5</tt></td>10347 <td width="100"><tt>19. 5</tt></td> 10148 10348 <td> <a href="#Standard templates for makefile fragments">Standard templates for makefile fragments</a></td> 10149 10349 </tr> 10150 10350 <tr> 10151 <td width="100"><tt>1 8. 6</tt></td>10351 <td width="100"><tt>19. 6</tt></td> 10152 10352 <td> <a href="#Makefile generation sequences">Makefile generation sequences</a></td> 10153 10353 </tr> 10154 10354 <tr> 10155 <td width="100"><tt>1 8. 7</tt></td>10355 <td width="100"><tt>19. 7</tt></td> 10156 10356 <td> <a href="#The complete requirements syntax">The complete requirements syntax</a></td> 10157 10357 </tr> 10158 10358 <tr> 10159 <td width="100"><tt>1 8. 8</tt></td>10359 <td width="100"><tt>19. 8</tt></td> 10160 10360 <td> <a href="#The default strategies defined in CMT">The default strategies defined in CMT</a></td> 10161 10361 </tr> 10162 10362 <tr> 10163 <td width="100"><tt>1 8. 9</tt></td>10363 <td width="100"><tt>19. 9</tt></td> 10164 10364 <td> <a href="#The internal mechanism of cmt cvs operations">The internal mechanism of cmt cvs operations</a></td> 10165 10365 </tr> -
CMT/v1r19/doc/CMTDoc.xml
r11 r18 27 27 28 28 <p>This environment, based on some management conventions and 29 comprising several shell-basedutilities, is an attempt to29 comprising several utilities, is an attempt to 30 30 formalize software production and especially configuration 31 31 management around a <i>package</i>-oriented principle.</p> … … 58 58 59 59 <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 64 68 a single tree). </li> 65 69 … … 112 116 </ul> 113 117 </li> 118 119 <li>Projects are also referenced using a <i>release</i></li> 114 120 115 121 <li> Version control and management schemes (eg. by using … … 188 194 189 195 <p>This environment relies on a set of conventions, mainly for 190 organizing the directories where p ackages are maintained and191 developed : </p>196 organizing the directories where projects and packages are 197 maintained and developed : </p> 192 198 193 199 <ul> … … 198 204 <cmt:code><some root>/<Package mnemonic>/<version mnemonic>/cmt</cmt:code> 199 205 200 <p>or / and(<i>obsolescent convention</i>)206 <p>or (<i>obsolescent convention</i>) 201 207 202 208 <cmt:code><some root>/<Package mnemonic>/<version mnemonic>/mgr</cmt:code> … … 262 268 <p>A software base is generally composed of multiple coherent 263 269 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> 270 272 271 273 <p>Package areas implement the concept of <i>projects</i> or … … 273 275 organization of the software developments.</p> 274 276 277 <p>There are no constraints on the number of such areas into 278 which <tt>CMT</tt> packages are installed. We'll see <a 279 HREF="#Localizing a package">later</a> how the different areas 280 or sub-projects can be declared and identified by 281 <tt>CMT</tt>.</p> 282 275 283 <p>examples of such organization can be : </p> 276 284 … … 286 294 <p>This environment is based on the fact that one of its packages 287 295 (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> 312 322 313 323 <p><tt>CMT</tt> is operated through one main user interface : the 314 <tt>cmt</tt> command, which handles the <tt>CMT</tt> conventions and315 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> 316 326 317 327 <ul> 318 328 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 321 330 the local package directory tree and generate several minimal 322 331 scripts (see the description of the <a HREF="#create">create</a> … … 353 362 and <tt>CMT</tt> itself, the management of a similar architecture 354 363 for <tt>Windows</tt> or <tt>OS9</tt>, setting up protections for 355 packages (th ough locks) etc...). </p>364 packages (through locks) etc...). </p> 356 365 357 366 <cmt:section title="Supported platforms"> … … 407 416 408 417 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> 558 use Core 1.0 559 use 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 409 596 <cmt:section title="Installing a new package"> 410 597 … … 414 601 of this document.</p> 415 602 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> 421 607 422 608 <cmt:code> … … 431 617 dos> call \lal\CMT\&CMTVersion;\mgr\setup.bat</cmt:code> 432 618 433 <p>Obviously, this operation < tt>must</tt> be performed (once)619 <p>Obviously, this operation <i>must</i> be performed (once) 434 620 before any other <tt>CMT</tt> action. Therefore it is often 435 621 recommended to install this setup action straight in the … … 440 626 441 627 <p> The <i>setup script</i> used in this example is a constant 442 in the <tt>CMT</tt> environment : every configured package will443 have one such setup script automatically generated and628 in the <tt>CMT</tt> environment : every configured package 629 will have one such setup script automatically generated and 444 630 installed by <tt>CMT</tt>. It is one important entry point to 445 631 any package (and thus to <tt>CMT</tt> itself). It provides 446 environment variable definitions and recursive invocations of447 setup scripts for related (<i>used</i>) packages (A448 corresponding cleanup script is also provided). This script449 contains a uniform mechanism for<i>interpreting</i> the &CMTrequirements; file so as to632 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 450 636 dynamically define environment variables, aliases for the 451 637 package itself and all its used packages. It is constructed … … 471 657 Creating a new project file </font></i></cmt:code> 472 658 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> 476 663 477 664 <p> A package is primarily defined by a <i>name</i> and a -
CMT/v1r19/mgr/Makefile
r15 r18 173 173 174 174 python = /afs/cern.ch/sw/lcg/external/Python/2.2.2/rh73_gcc32/bin/python2.2 175 python = /cygdrive/c/Arnault/Python23/python.exe 175 176 176 177 #--------------------------------------------------------- … … 178 179 #--------------------------------------------------------- 179 180 gendoc :: 180 @cd ../doc; $(python) gendoc.py CMTDoc.xml > |CMTDoc.html181 @cd ../doc; $(python) gendoc.py CMTDoc.xml > CMTDoc.html 181 182 @echo "CMTDoc.html generated from CMTDoc.xml" 182 183 -
CMT/v1r19/source/cmt_parser.cxx
r16 r18 3888 3888 3889 3889 IProjectFactory& factory = ProjectFactory::instance (); 3890 factory.create_project ( pwd, "CurrentProject", 0);3890 factory.create_project ("", pwd, "CurrentProject", 0); 3891 3891 3892 3892 /* -
CMT/v1r19/source/cmt_project.cxx
r16 r18 95 95 } 96 96 97 static 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 97 139 /* 98 140 Every new CMTPATH entry becomes associated with a dedicated PROJECT … … 102 144 - then it tries to read and parse its project file 103 145 */ 104 Project* ProjectFactory::create_project (const cmt_string& path, 146 Project* ProjectFactory::create_project (const cmt_string& specified_name, 147 const cmt_string& path, 105 148 const cmt_string& source, 106 149 Project* parent) … … 108 151 cmt_string compressed_path = path; 109 152 CmtSystem::compress_path (compressed_path); 153 bool specify_name = (specified_name != ""); 110 154 111 155 //cerr << "Creating project " << path << " with parent " << ((parent==0)? "0" : parent->get_name ()) << endl; … … 118 162 119 163 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 122 177 if (parent != 0) 123 178 { … … 133 188 } 134 189 } 135 190 191 136 192 Project* project = 0; 137 193 Project* cmt = 0; … … 156 212 /* 157 213 Now Figure out the project name from the project file 158 Or construct an automatic project name when project file does no exist159 214 or does not specify the project name 160 215 */ … … 170 225 if (name == "") 171 226 { 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 } 174 339 } 175 340 } 176 341 else 177 342 { 178 char buffer[20]; 343 // There is no project file in this path. 344 179 345 if (source == "default path") 180 346 { 181 strcpy (buffer, "CMT"); 182 name = buffer; 347 name = "CMT"; 183 348 } 184 349 else 185 350 { 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 } 188 392 } 189 393 } … … 980 1184 IProjectFactory& factory = ProjectFactory::instance (); 981 1185 982 factory.create_project ( p, "ProjectPath", this);1186 factory.create_project (name, p, "ProjectPath", this); 983 1187 984 1188 break; -
CMT/v1r19/source/cmt_project.h
r16 r18 67 67 public: 68 68 void reset (); 69 Project* create_project (const cmt_string& path, 69 Project* create_project (const cmt_string& name, 70 const cmt_string& path, 70 71 const cmt_string& path_source, 71 72 Project* parent); -
CMT/v1r19/source/cmt_system.cxx
r16 r18 1303 1303 } 1304 1304 1305 m_project = factory.create_project ( npath, path_source, m_project);1305 m_project = factory.create_project ("", npath, path_source, m_project); 1306 1306 } 1307 1307 } -
CMT/v1r19/source/cmt_system.h
r11 r18 19 19 public: 20 20 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, 22 23 const cmt_string& path_source, 23 24 Project* parent) = 0;
Note: See TracChangeset
for help on using the changeset viewer.