[asdf-devel] [cclan-list] How to depend on a system optionally?

Robert Goldman rpgoldman at sift.info
Mon Jul 20 23:41:19 UTC 2009


james anderson wrote:
> On 2009-07-21, at 01:18 , Robert Goldman wrote:
> 
>> james anderson wrote:
>>> On 2009-07-21, at 00:35 , Robert Goldman wrote:
>   [...]
>>>>   What would it mean, for
>>>> example, to be :contingent-on or :weakly-depend on a :file?
>>> if the file is present, then the contingent component is included in
>>> the system and dependent on that file.
>>> no different than a simple dependency. the only difference are in the
>>> effective behaviour of operate.
>>> in my case it makes it possible to do things like include a ffi
>>> interface iff dependent on runtime conditionalization and include a
>>> particular aspect of the higher level interface iff the particular
>>> ffi interface is there.
>> I don't believe that is correct.
> 
> ?
> in that weakly-depends-on does not do this, or this is not a  
> "correct" thing to do?

The former.  weakly-depends-on does not do these sophisticated things.

> i do not use weakly-depends-on. i implemented :contingent-on.
> 
>>   If you look at the source,
>> weakly-depends-on is not handled as a first class citizen, the way
>> :depends-on is.  :depends-on is squirreled away in a slot, and then
>> manipulated at the time we carry out an ASDF operation.  The WEAKLY  
>> part
>> of :weakly-depends-on, on the other hand (1) only works when the
>> dependency is on a system, not a feature or a file and (2) is resolved
>> when the defsystem is "parsed".  I.e., there's no way you can load a
>> system that has weakly-depends on, THEN define another system on which
>> it weakly depends, and have the first system do anything reasonable.
>> The :weakly-depends-on is gone by the time the second system is
>> introduced to your lisp image.
> 
> weakly depends on may well not be well implemented. i do not use it.

Yes, that's my point.  I'd rather it not become widely used, lest it
become another oddity with which we must maintain backward compatibility.





More information about the asdf-devel mailing list