:FEATURE dependency-def
Robert Goldman
rpgoldman at sift.net
Tue May 17 17:35:54 UTC 2016
On 5/17/16 May 17 -8:47 AM, Faré wrote:
> On Tue, May 17, 2016 at 9:39 AM, Didier Verna <didier at lrde.epita.fr> wrote:
>> Stelian Ionescu wrote:
>>
>>> #-feature
>>> (error "FEATURE missing")
>>>
>>> at toplevel, so you get an error on reading the .asd file.
>>
>> Of course. I said a "declarative way" within the system itself tho ;-)
>>
> I strongly recommend against erroring in the .asd file itself based on
> the implementation, because that hinders cross-compilation.
IIUC what this boils down to is a preference for failing to *operate* on
the system, rather than failing to parse the system definition. Correct?
[As an aside, there may be a separate bug: when I tried to load DecLt
into ACL, the loading *succeeded*, but the contents of the decLt "core"
subsystem failed to be loaded. So I believe there may be an oddity in
the way ASDF is handling these "failed" :feature dependencies. I will
try to replicate and provide a minimal test case.]
>
> The traditional solution is to load a file that fails.
> i.e. create a file unsupported-implementation.lisp that
> has an (error ...) form and in your asd file, use a component
> (:file "unsupported-implementation" :if-feature (:not :sbcl))
I would prefer that we provide a more readable version of this. I think
we could readily add
(:depends-on (:essential-feature :sbcl))
As I said earlier, the "bogus file" solution seems to me unpleasantly
indirect, because then the poor reader must grovel over
"unsupported-implementation" to see what will happen if one tries to
load it, when the intent is simply to say "this won't work unless you
are on SBCL."
I believe we could provide this with the semantics you propose (fail on
operation, not on loading the system definition).
> And yes, I probably should have called it :when-feature instead of
> :if-feature. My bad. If you think that's worth it, we can add the new
> name now and remove the old name in 2 years.
>
> PS: Robert, I pushed a tiny tweak to the documentation.
Thanks, I'll pull and have a look now.
best,
r
More information about the asdf-devel
mailing list