[asdf-devel] Ordering of system :depends-on elements

Anton Vodonosov avodonosov at yandex.ru
Tue Jul 9 19:12:18 UTC 2013



09.07.2013, 06:17, "Anton Vodonosov" <avodonosov at yandex.ru>:
> 08.07.2013, 01:34, "Zach Beane" <xach at xach.com>:
>
>>  A few projects in quicklisp work something like this:
>>
>>     ;;; foo.asd
>>
>>     (defsystem foo ...)
>>
>>     (defsystem foo-extra ...)
>>
>>     ;;; bar.asd
>>
>>     (defsystem bar :depends-on (:foo-extra :foo))
>>
>>  With asdf 2, (asdf:load-system "bar") seems to work fine, I guess
>>  because asdf 2 does the equivalent of find-system on the elements from
>>  right-to-left.
>>
>>  With asdf 3, it doesn't seem to work fine, I guess because asdf 3 does
>>  the equivalent of find-system on the elements from left-to-right.
>>
>>  Are those guesses correct?
>>
>>  What's the best way to have a system definition that works equally well
>>  in asdf2 and asdf3 in this kind of situation?
>
> If we surround the non-findable system with the main system like this:
>
>  (defsystem bar :depends-on (:foo :foo-extra :foo))
>
> will it work?
>
> :)
>
> It's a dirty workaround (worksurround), but the level of dirtiness is the same
> as the original: have a system not findable by asdf:find-system due to
> difference between the system name and it's .asd file name; solve it
> by relying on the order ASDF loads dependencies, having a findable
> system name first.

But the best solution is separation of these ASDF systems
into different .asd files. Right now everyone seems to prefer dealing
with systems written that way - separate .asd files per ASDF system.



More information about the asdf-devel mailing list