Am 04.09.2013 18:14, schrieb Jacob Carlborg:> On Wed, 04 Sep 2013 08:48:16 GMT, Sönke Ludwig wrote:

There are the two directories /var/lib/dub/ and ~/.dub/ where it installs source packages (more or less just a verbatim copy of the git repository contents, except that the package.json gets annotated with an additional "version" field). Installing binary files was/is on the agenda, but mostly just for application packages, as it is too easy to break binary compatibility when using precompiled libraries (e.g. by using different -version= identifiers) for it to make much sense in the current ecosystem of libraries. But this is something that mostly Robert Klotzner was driving forward and now he is still busy with his studies, so this may take a while until it is picked up again.

So a package manager that doesn't install packages, hmm...

It does install packages, just that they are source packages and not binary packages. It's no different from all those package managers for the various interpreted languages if you want. But if you have a good idea how to sanely install binary packages considering that there is almost no guarantee for binary compatibility unless everything is exactly the same, I'm all ears.

Currently, whenever a version based dependency is given (e.g. ">=1.0.0"), only tagged versions are considered. Similarly, when a branch dependency is given (e.g. "~master") only the HEAD of that branch is tracked. Two extensions to this have been considered up to now:

  • Make it possible to also specify exact commit SHA's
  • Let a version based dependency using ">=" fall back to "~master" in case the same package is also referenced as "~master" by some other involved package (thus assuming that version tags are always on master or at least that master is source compatible with tagged versions and not something completely different)

I've been looking at the registry, http://code.dlang.org/, it seems I can't tell the registry what's available?

I think I don't fully get the question. You can register any package to make it available. The registry currently only supports GitHub and BitBucket hosted repositories, though. If you need something else like sourcing form a locally hosted .zip file or from a git URL, that's quite simple to add, I'm sure we can work something out there.

Alternatively a simple HTTP server with the following directory structure also works:

  • packages/
    • (packname).json
    • (packname)/(version).json
    • (packname)/(version).zip

(packname).json contains a "versions" field with an array of each package.json file for every available version/branch.