source: CMT/v1r19/doc/todo.html

Last change on this file was 11, checked in by arnault, 21 years ago

Changing eol-style property

  • Property svn:eol-style set to native
File size: 13.3 KB
RevLine 
[2]1<!--
2//-----------------------------------------------------------
3// Copyright Christian Arnault LAL-Orsay CNRS
4// arnault@lal.in2p3.fr
5// See the complete license in cmt_license.txt "http://www.cecill.info".
6//-----------------------------------------------------------
7-->
8
9 <center><h1><b>ToDo list</b></h1></center>
10
11 <blockquote>
12
13 <center><i>Users are welcome to contribute to this list, by sending
14 proposals to the <a href="discussion.html">discussion list</a>
15 </i></center>
16
17 </blockquote>
18 <br>
19 <hr>
20
21 <blockquote>
22
23 <center><table border>
24 <tr>
25 <td><center><i>Type</i></center></td>
26 <td><center><i>Feature</i></center></td>
27 <td><center><i>Status</i></center></td>
28 </tr>
29
30 <tr>
31 <td>Implemented</td>
32 <td><a href="#Support for unstructured directory organization">Support for unstructured directory organization</a></td>
33 <td>Implemented in v1r14 serie</td>
34 </tr>
35
36 <tr>
37 <td>Implemented</td>
38 <td><a href="#Management of versions of external software in Interface packages">Management of versions of external software in Interface packages</a></td>
39 <td>Implemented in v1r12p20020515</td>
40 </tr>
41
42 <tr>
43 <td>Bug</td>
44 <td><a href="#Calling source setup onto a standalone package">Calling "source setup" onto a standalone package</a></td>
45 <td>Fixed in v1r12p20020515</td>
46 </tr>
47
48 <tr>
49 <td>Implemented</td>
50 <td><a href="#Advanced tag management in the requirements file">Advanced tag management in the requirements file</a></td>
51 <td>Implemented in v1r14 serie</td>
52 </tr>
53
54 <tr>
55 <td>Implemented</td>
56 <td><a href="#Advanced tag management (2)">Advanced tag management (2)</a></td>
57 <td>Implemented in v1r14 serie</td>
58 </tr>
59
60 <tr>
61 <td>Proposed</td>
62 <td><a href="#A new concept for binary tag management">A new concept for binary tag management : the <b>project</b></a></td>
63 <td>No longer envisaged</td>
64 </tr>
65
66<!--
67 <tr>
68 <td>Foreseen|Bug|Proposed</td>
69 <td><a href="#">-</a></td>
70 <td>-</td>
71 </tr>
72-->
73
74 </table></center>
75
76 </blockquote>
77 <br>
78 <hr>
79 <h2>Foreseen</h2>
80 <blockquote>
81 <ol>
82 <li><i><a name="Support for unstructured directory organization"></a>Support for unstructured directory organization.</i>
83
84 <p>
85 It has been decided during the <a
86 href="workshop/minutes.html#structure">first CMT workshop</a> to study
87 the possibility to support, in addition to the conventional
88 directory structure, an alternate convention (with limited
89 control power) where the version directory would be absent.</p>
90
91 <p>
92 In this scheme, the following package organization would
93 be permitted, in addition to the existing one:
94
95 <blockquote>
96 <pre>
97&lt;package&gt;/cmt
98 /src
99 /...
100 </pre>
101 </blockquote>
102 </p>
103
104 <p>
105 The version specification for this package could then be
106 optionally located inside the file
107 <tt>cmt/version.cmt</tt>. When found, this specification
108 would be used for version checks.
109 </p>
110
111 <p>
112 Each package would then individually select one or the
113 other structuring style. This selection being done in the
114 "cmt create" or the "cmt checkout" commands through either
115
116 <ul>
117
118 <li>one environment variable CMTSTRUCTURINGSTYLE,
119 taking the possible values:
120
121 <ul>
122 <li>with_version_directory (<i>default value</i>)</li>
123 <li>without_version_directory</li>
124 </ul>
125 </li>
126
127 <li>or the new following options to the cmt command:
128 <ul>
129 <li>-with_version_directory (<i>default value</i>)</li>
130 <li>-without_version_directory</li>
131 </ul>
132 </li>
133 </ul>
134 </p>
135
136 <p>The known drawbacks and limitations of this new structuring style are:
137 <ul>
138
139 <li>lack of systematic version checking possibilities
140 (since the version file is optional)</li>
141
142 <li>only one version of a given package is possible in the
143 context of a given CMT path</li>
144
145 <li>CVS actions may not be restricted to only one package
146 when sub-packages exist</li>
147
148 </ul>
149 </p>
150
151 <p>Strict backward compatibility is expected (implying that
152 the two structuring styles can always coexist)</p>
153
154 <p>A temptative implementation is currently achieved and
155 will be made visible after stabilization of the v1r12.</p>
156
157 </li>
158
159 <br>
160 <hr>
161 <li><i><a name="Management of versions of external software in Interface packages"></a>Management of versions of external software in Interface packages</i></li>
162
163 <p>As a follow up of discussions in the <a
164 href="workshop/minutes.html#last minute">CMT workshop</a>, it is
165 foreseen to support the new conventional macro
166 <i>&lt;package&gt;_native_version</i>. This macro will be
167 available to specify the exact value of the native version of
168 the associated package.</p>
169
170 <blockquote>
171 <pre>
172macro CLHEP_native_version "1.7.0.1"
173 </pre>
174 </blockquote>
175
176 <p>When specified, this native version will appear in the "cmt
177 show uses" output</p>
178
179 <blockquote>
180 <pre>
181...
182# use CLHEP CLHEP-00-00-01 External (native_version=1.7.0.1)
183...
184 </pre>
185 </blockquote>
186
187<!-- Next item:
188
189 <br>
190 <hr>
191 <li><i><a name=""></a></i>
192
193-->
194
195 </ol>
196 </blockquote>
197
198 <br>
199 <hr>
200 <h2>Known bugs</h2>
201 <blockquote>
202 <ol>
203 <li><i><a name="Calling source setup onto a standalone package"></a>Calling "source setup" onto a standalone package</i>
204
205 <p>When this operation is <i>not</i> done right in the
206 package directory this produces an error:</p>
207
208 <blockquote>
209 <pre>
210&gt; cd &lt;<i>somewhere</i>&gt;
211&gt; source setup.sh
212 </pre>
213 </blockquote>
214
215 works well, whereas:
216
217 <blockquote>
218 <pre>
219&gt; source &lt;<i>somewhere</i>&gt;/setup.sh
220 </pre>
221 </blockquote>
222
223 produces an error.
224
225 <p><i>(Note that this works well for a conventional package,
226 after a bug fix in v1r12)</i></p>
227
228 <p><b>Solution:</b></p>
229
230 <blockquote>
231 <i>
232 The setup.[c]sh and cleanup.[c]sh files are badly generated. The "cmt setup"
233 command requires an option "-pack=cmt_standalone"
234 </i>
235 <blockquote>
236
237 </li>
238
239<!-- Next item:
240
241 <br>
242 <hr>
243 <li><i><a name=""></a></i>
244-->
245
246 </ol>
247 </blockquote>
248
249 <br>
250 <hr>
251 <h2>Possible improvements (to be discussed)</h2>
252 <blockquote>
253 <ol>
254 <li><i><a name="Advanced tag management in the requirements file"></a>Advanced tag management in the requirements file.</i>
255
256 <p>This concerns the possibility to manipulate the tag
257 associations, to add, remove association-tags or to clear
258 the association-tags</p>
259
260 <p>So far tags are defined in a requirements file by declaring associations with other tags</p>
261
262 <blockquote>
263 <pre>
264tag A B C
265 </pre>
266 </blockquote>
267
268 <p>The last revision of v1r12 (ie. v1r12p20020515)
269 introduced the iterative accumulation of those
270 associations. Therefore what is missing now is the
271 possibility to manage this list of associations, such as
272 with:</p>
273
274 <ul>
275 <li>tag_remove A B</li>
276 <li>tag_clear A</li>
277 <li>tag_apply A (<i>or apply_tag A ?</i>)</li>
278 </ul>
279 </li>
280
281 <br>
282 <hr>
283 <li><i><a name="Advanced tag management (2)"></a>Advanced tag management (2).</i>
284
285 <p>Another syntax evolution of the requirements file dealing
286 with tag associations is the possibility to use <i>tag
287 expressions</i> when specifying alternate symbol values.</p>
288
289 <blockquote>
290 <pre>
291macro_append cppflags "" \
292 Linux&debug " -g " \
293 WIN32&debug " /G "
294 </pre>
295 </blockquote>
296
297 <p>This would avoid the need to construct explicit tag mixture
298 associated with new tags.</p>
299
300 <p>Since tags are boolean values (a tag is active or inactive)
301 one considers <i>and</i> and <i>or</i> operations, with the
302 <b>&amp;</b> and <b>|</b> operators, with the obvious meaning
303 that "A&B" is true when both A and B are true.</p>
304
305 <br>
306 <hr>
307 <li><i><a name="A new concept for binary tag management"></a>A new concept for binary tag management : the <b>project</b></i></li>
308
309 <p>Binary tags can follow different conventions according to the
310 <i>sub-projects</i> where packages are defined. Currently,
311 <i>policy</i> packages are the preferred location where these
312 conventions are defined. However, policy packages are
313 submitted to the usual dependency relationship, and tag
314 associations are therefore freely transmitted across multiple
315 policy packages, leading to conflicts and ambiguities,
316 especially when packages from multiple and independent
317 sub-projects are simultaneously used.</p>
318
319 <p>
320 The concept of <b>project</b> is proposed to solve this
321 question, by making explicit the <i>context</i> for all
322 definitions that only belong to a given project, . The
323 following definitions and characteristics are proposed:
324 </p>
325
326 <ul>
327
328 <li>CMT defines one global project by default</li>
329
330 <li>
331 So far two CMT features are candidates for being scoped by the projects:
332 <ul><li>tags</li><li>patterns</li></ul>
333
334 <p>Other features (eg. macros, sets,...) will still be
335 normally transmitted in the use relationship</p>
336
337 </li>
338
339 <li>
340 A project is specified using the following new CMT statement:
341 <blockquote>
342 <pre>
343project &lt;project name&gt;
344 </pre>
345 </blockquote>
346 </li>
347
348 <li>
349 Once defined in a given package, a project becomes
350 <i>the</i> context project, and cannot be overridden by
351 used packages (which will specify their own context project).
352
353 <p>
354 The context project is persistent in the subsequent use
355 graph, unless another context project was specified
356 before
357 </p>
358
359 <p>
360 In the following example:
361 </p>
362
363 <img src="Images/Projects.jpg">
364
365 <p>
366 <ol>
367 <li>A is in the default project (ie CMT)</li>
368 <li>P1 defines the project P1</li>
369 <li>P2 defines the project P2</li>
370 <li>B and F directly and respectively connect to one project</li>
371 <li>C, D and E transitively connect to project P1</li>
372 <li>G is inside project P1 (rather than P2) since it is the <i>first</i> definition</li>
373 </ol>
374 </p>
375 </li>
376
377 <li>When one enters the requirements of a package, the
378 context project is always empty (ie. reset to the default
379 project)</li>
380
381 <li>The first "project" statement met along the use chain
382 defines the context project</li>
383
384 <li>When leaving a requirements, the context project is
385 persistent unless another one was already specified</li>
386
387 <li>Tags and patterns defined in the default project (ie. in
388 CMT) are visible in all projects</li>
389
390 <li>A package gets its tag associations and patterns from
391 its context project (and from the default project too)</li>
392
393 <li>Tag associations and patterns from other projects are
394 not visible nor active <i>by default</i></li>
395
396 <li>
397 A pattern or a tag defined in a project may be applied
398 even is the context project is different through the
399 following syntax:
400 <blockquote>
401 <pre>
402apply_pattern &lt;project name&gt;.&lt;pattern name&gt;
403apply_tag &lt;project name&gt;.&lt;tag name&gt;
404 </pre>
405 </blockquote>
406 </li>
407
408 <li>Every project is associated with a new standard tag macro
409
410 <blockquote>
411 <pre>
412&lt;project&gt;tag
413 </pre>
414 </blockquote>
415
416 And a new environment variable (with the same semantics as CMTCONFIG)
417
418 <blockquote>
419 <pre>
420&lt;PROJECT&gt;CONFIG
421 </pre>
422 </blockquote>
423
424 The project macro acts as the default value for all
425 $(&lt;package&gt;_tag) macros, and the project
426 configuration variable is the default for the project
427 macro. Ie. the following <i>defaults</i> settings are
428 considered (for any project and package) unless
429 explicitly specified through usual environment variables
430 or macro settings:
431
432 <blockquote>
433 <pre>
434&lt;PROJECT&gt;CONFIG=${CMTCONFIG}
435&lt;project&gt;tag=${&lt;PROJECT&gt;CONFIG}
436&lt;package&gt;_tag=$(&lt;project&gt;tag)
437 </pre>
438 </blockquote>
439
440 </li>
441
442 <li>
443 Primary tags are defined by CMT:
444
445 <ol>
446 <li>All values of <i>uname</i></li>
447 <li>Compilers (gcc, egcs, CC, cxx, KAI, VC, ...)</li>
448 <li>Compiler versions</li>
449 <li>Main build options (debug, optimized, profiled, ...)</li>
450 </ol>
451
452 Therefore all projects can be affected when a primary tag is activated.
453 </li>
454
455 </ul>
456
457<!-- Next item:
458
459 <br>
460 <hr>
461 <li><i><a name=""></a></i></li>
462
463-->
464
465 </ol>
466 </blockquote>
467
468 <hr>
Note: See TracBrowser for help on using the repository browser.