Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

From Joanne Bogart

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.

From Navid

One of the biggest flaws of CMT (or our way of using it) is that when
you have multiple libraries/applications listed in your requirements
file you can't easily make them depend on each other. Our attempt at
solving this is to use static libraries (which are built before
shared ones) and to separate out test apps into their own packages.

CMT links against unnecessary libraries. When you depend on another
package, you automatically inherit all the libraries that package
makes and all its sub-packages. Again this is not desired all the
time. A variation of this is that if your package creates two
constituents and one depends on a different package and the other
does not. Both your constituents have no choice but to use this other
package.

There's more flaws in CMT (redundant versioning, container packages,
etc..) but the above two are recent ones that are biting us over and
over again that are also major flaws I think. Joanne Bogart

CMT Items in JIRA

Jira Issues
columnskey,summary,assignee,status
urlhttp://jira.slac.stanford.edu/secure/IssueNavigator.jspa?view=rss&pid=10041&statusIds=1&statusIds=3&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&decorator=none&os_username=glast-jira-issue-browser&os_password=glast

...