Re: ASDF depends-on / do-first

Richard M Kreuter <[email protected]> Tue, 26 Jun 2007 20:23:24 -0400
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
Andreas Fuchs <[email protected]> writes:
> Kilian Sprotte wrote:
>> 
>> what is the difference between :in-order-to and :do-first then? Or
>> what is so special about :do-first?
>
> I think it's just the order in which they are processed in TRAVERSE.
> in-order-to forms seem to be done before do-first is, but do-first
> needs to happen before the actual operation (iiuc).

I'm guessing that the DO-FIRST slot was either a quick hack or a
vestigial remnant of something.  There's also something weird about
the handling of the :DO-FIRST initarg: whereas IN-ORDER-TO
dependencies are merged with some dependencies inferred from the
:DEPENDS-ON keyword, the DO-FIRST slot is unconditionally set to a
value that doesn't involve the :DO-FIRST keyword argument.  It's hard
to say whether this is a bug or design.

Anyhow, by inspection, altering PARSE-COMPONENT-FORM to leave the
DO-FIRST slot set to NIL and to treat the :DEPENDS-ON argument as
signifying the dependency list,

  ((compile-op (compile-op <component names>))
   (compile-op (load-op <component names>))
   (load-op (load-op <component names>)))

seems to cause TRAVERSE to produce a differently-ordered, but probably
equivalent plan for each of COMPILE-OP and LOAD-OP, so it's likely
that whatever DO-FIRST is supposed to be could be left out of a future
ASDF-like defsystem facility.

--
RmK


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/