| | 127 | === What is the conventional directory tree for projets and packages? === |
| | 128 | |
| | 129 | This environment relies on a set of conventions, mainly for organizing the directories where |
| | 130 | projects and packages are maintained and developed : |
| | 131 | * Each package is installed in a standard directory structure defined at least as follows: |
| | 132 | |
| | 133 | {{{ |
| | 134 | <some root>/<Package mnemonic>/<version mnemonic>/cmt |
| | 135 | }}} |
| | 136 | or (obsolescent convention ) |
| | 137 | {{{ |
| | 138 | <some root>/<Package mnemonic>/<version mnemonic>/mgr |
| | 139 | }}} |
| | 140 | |
| | 141 | The <version mnemonic> directory level may also be omitted, in which case the version |
| | 142 | information will be stored inside the cmt directory in a conventional file named |
| | 143 | version.cmt leading to the following alternate organization: |
| | 144 | <some root>/<Package mnemonic>/cmt/version.cmt |
| | 145 | In both cases, the cmt directory holds the main source of information needed by CMT : the |
| | 146 | requirements file. All CMT -related operations are generally executed from this directory. |
| | 147 | This style of organization should be considered as the basic (and unique) criterion for a |
| | 148 | package to be recognized as a valid CMT package . Any other structuring convention will be |
| | 149 | supported by CMT and its operations can always be customized to follow them |
| | 150 | This structure is a central concept since all relationships between packages relies on the |
| | 151 | package identification which unambiguously and exclusively consists in the duet [ |
| | 152 | package-name , package-version ] (or package-name only when the version directory level |
| | 153 | is omitted). |
| | 154 | |
| | 155 | * Constructing the internal structure of a package. |
| | 156 | |
| | 157 | Many other parallel directory branches (similar to cmt ) such as src , include or test |
| | 158 | may be freely added to this list according to the specific needs of each package. In particular, |
| | 159 | a set of such parallel branches are expected to contain binary outputs (those that compilers, |
| | 160 | linkers, archive managers or other kinds of code or pseudo-code generators can produce). |
| | 161 | Their name always corresponds to the particular configuration tag used to produce the |
| | 162 | output (such as the machine or operating system type). The CMT toolkit provides, through |
| | 163 | the cmt system utility, a default value for this token. An environment variable |
| | 164 | (CMTCONFIG ) is also assigned to this value. |
| | 165 | Each branch may in addition be freely structured, and there is no constraint to the |
| | 166 | complexity of this organization. |
| | 167 | |
| | 168 | |
| | 169 | |