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.