DIP11: Automatic downloading of libraries

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Jun 14 09:31:52 PDT 2011


On 6/14/11 11:26 AM, Graham Fawcett wrote:
> On Tue, 14 Jun 2011 10:31:59 -0500, Andrei Alexandrescu wrote:
>
>> On 6/14/11 10:27 AM, Graham Fawcett wrote:
>>> On Tue, 14 Jun 2011 08:53:16 -0500, Andrei Alexandrescu wrote:
>>>
>>>> http://www.wikiservice.at/d/wiki.cgi?LanguageDevel/DIPs/DIP11
>>>>
>>>> Destroy.
>>>>
>>>>
>>>> Andrei
>>>
>>> What's the expected payload format? A text/plain D source-file? A zip
>>> or tar archive?
>>
>> Text for now.
>>
>>> If an archive, what's the required directory layout? Should
>>> "dsource.foo.baz" be required to be in "/dsource/foo/baz.d" within the
>>> archive?
>>
>> I agree we need to address these in the future, and also binary
>> distributions (e.g. .di files + .a/.lib files).
>>
>>> And if not an archive, how to reasonably handle multi-file packages?
>>
>> Consider a library "acme" consisting of three files: widgets.d,
>> gadgets.d, fidgets.d in "http://acme.com/d/". It also depends on the
>> external library monads on "http://nad.mo/d".
>>
>> // User code:
>> pragma(lib, acme, "http://acme.com/d/"); import acme.widgets;
>> ... use ...
>>
>> // widgets.d
>> // Assume it depends on other stuff in the same lib // and on monads.d
>> pragma(lib, monads, "http://nad.mo/d/"); import acme.gadgets,
>> acme.fidgets, monads.io;
>>
>> This is all that's needed for the compiler to download and compile
>> everything needed.
>
> So, to clarify:
>
>> pragma(lib, acme, "http://acme.com/d/");
>
> ...establishes a "prefix" relationship: modules names prefixed with
> "acme." may be found at URLs prefixed with "http://acme.com/d/". So we
> would expect to find:
>
>    acme.widgets         at  http://acme.com/d/widgets.d
>    acme.widgets.core.x  at  http://acme.com/d/widgets/core/x.d
>
> Correct?
>
> Graham

Yes, that's the intent. I added an explanation and an example to 
subsection "Package case".

Andrei


More information about the Digitalmars-d mailing list