You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

CMT Problems

Please report here, as precisely as you can, any general or specific problem you have with the use of CMT. Some of the problems here will probably be redeclared later as JIRA items. PLEASE GIVE YOUR NAME AT THE END OF YOUR CONTRIBUTION.

1. Container packages and directories

From R.Giannitrapani

One of the problem encountered in MRvcmt is the following: I'm using the command "cmt show packages" to have the list of the packages contained in the cmtpaths. If some packages belongs to a subdirectory of the cmtpaths and this subdirectory is not a package itself, such contained packages are not shown in the output of this command and so will not shown in the tree of MRvcmt.

This is not a bug of CMT, I think it is a feature; but sometime it could be helpful to just have directories that can contains packages without the need for them to be a true cmt package.

In general this is due (imho) to the fact that in CMT container packages have two roles:

  • on one side they are just container; actually, if you use a contained package you will write in your requirements file something like "use Geant4 v2r6* IExternal" and you never specify a version for "IExternal", i.e. you are using it exactly as a directory, not as a package
  • on the other side they need to be packages, so they need to have the normal package structure (cmt directory and so on), to be seen from cmt (and so from the current version of MRvcmt).

This double role can create more subtle effects, for example if you have two versions of a container package, as I've tried to describe here http://www.fisica.uniud.it/~glast/MRStudio/history.html (in fact I'm tring something different from MRvcmt in the incoming MRStudio).

Last problem (that is also reported in some JIRA issues cited below), the command of cmt to show packages has some problem that prevent to show all the packages contained in a container package (and again this is reflected in an incomplete tree of MRvcmt .. also for this, MRStudio will not use cmt to build the packages tree, but it will use a paths traversal search with regular expressions).

From D.Chamont

I feel the container packages was originally meant to refer to others packages at the same "directory level", not as subdirectories of the container package itself. There was no need for such double role. On other hand, there is this concept oif subpackages in CMT which are far from documented, and need investigation.

The bug with Geant4 mentionned in JIRA seems fixed in v1r18. Yet, the overall problem of "cmt show packages" remains : it should be able to parse subdirectories even when they are not packages, at least to a configurable depth.

2. Tag and Branch Name Confusion

From Heather

We have run into this problem both for EM and GR when creating branches.  For example, if there is a tag called v6r4 on GlastPolicy and then later someone creates a branch on GlastPolicy named, ScienceTools-v6r4 - the next time we go to checkout a package using GlastPolicy v6r4 using CMT, we will receive the ScienceTools-v6r4 tag and not the v6r4 of GlastPolicy.  It seems CMT searches for the first instance of the string "v6r4" rather than literally searching for just that particular tag name.

From D. Chamont

Bug reported to CMT team.

3. Version Upgrade and CVS pluggin

Original Problem.

The upgrade of CMT version requires we also replace the current CVS pluggin, which is a script, with the new C++ pluggin. This pluggin is used by several "cmt cvs*" commands.
When trying to use the new pluggin, we got two problems :

  • the ordering of the ouput of command "cmt cvstags <package>" is having : the tag v0 is appearing first, where it should be the last one.
  • the recursive chekcout of a release package is failing. this could come from our specific installation of the pluggin.

Status

A bug in cvstags was probably also the source of checkout failure.
I applied a small fix to the v1r1 pluggin. Reported to CMT team.

4. Installation Area

Can somebody explain why this CMT feature has been discarded ?

From Heather

I'm curious to see what others recall, but here are some notes I've found:

  • Here is a page that Traudl maintained concerning the Install Area:  http://www.slac.stanford.edu/~hansl/soft/TestInstall/
  • When using the Install Area, there were problems using CMT packages installed on NFS space - often the libraries could not be found.  Apparently Traudl found some work-around, but I know I and others seemingly randomly continued to have trouble.
  • From the core minutes April 20, 2004:  At least one other issue remains to be resolved: what to do about the xml file hierarchy in xmlGeoDbs. The normal install area expectation is that data files are stored in a single level.
    This would definitely be problematic as we do need some structure for the XML files since we support multiple configurations
  • Toby disabled the install area by updating GlastPolicy on Oct 10, 2004 - perhaps he recalls exactly what was the major problem at the time that forced him to do this - though I'll point out..I don't recall many people were upset to see the Install Area disabled.

From Joanne Bogart

I recall having problems with picking up the right version of libraries.  It's been a while now so my memory is suspect, but I think that old libraries in the Install Area maybe didn't get deleted at the expected time and would get used preferentially.  Or something like that.  However, I never encountered any such problems with Navid's implementation of a similar functionality, so I don't see any reason to attempt to revive the official CMT Install Area.

5. CMT Is Too Coarse

Most of my complaints boil down to a lack of fine control in a natural way. As soon as there is more than one build target in a package, there are likely to be problems. As Navid mentioned, we've had trouble with multiple library targets when one should depend on the other, and trouble in general with multiple targets in a package because often they shouldn't have the same set of use statements.  Private/public doesn't do the trick; the only sure way I"m aware of to deal with this is not to have multiple targets in a package unless they have similar or identical properties w.r.t. uses. The CMT use concept is also too coarse with respect to time.  A package - actually, a target within a package - might need access to another at run-time but not during compile or link, or at compile and run time, but not link time. There is no way to express this with a use statement. 

Careful use of -no_auto_imports and other features (by those who understand them, not a group I belong to) can sometimes help, but such solutions seem to be very fragile, for example causing problems with build order. Overall, there is just too much riding on a CMT use statement.  The other tools at one's disposal, like -no_auto_imports, are essentially tinkering, and they tend to interact in unpleasant and unpredictable ways.

 Joanne Bogart

CMT Items in JIRA

key summary assignee status

Unable to locate Jira server for this macro. It may be due to Application Link configuration.

Error rendering macro 'jiraissues'

Macro params are invalid

 

 

 

 

  • No labels