I think you're headed the right way, and I'd recommend studying how Ruby/rubygems are handled in Gentoo. A similar pattern, with eselect, a set of symlinks, and versioned package directories, would do an awful lot. One may end up with a mass of installed slots, but that sort of problem is usually resolved over time.

One thing of benefit, assuming it's being applied properly by all vendors, is the availability of std.compiler and a few predefined version identifiers so that D programs can already check what compiler and version they are being processed by. This saves the trouble of trying to establish a USE flag convention for that.

In light of trying to support different compilers, it might be a good idea to have a virtual/dmd (or virtual/dc? or...?) package to provide dependency genericity. I know you mentioned having a virtual/phobos package, but I'm not sure that's safe -- yet. Once we are at a stage where dynamic libraries work well enough that phobos is normally used as such, then it would make more sense.

Reply via email to