[asdf-devel] asdf2 reloads already loaded fasls

Faré fahree at gmail.com
Sun May 2 04:59:11 UTC 2010


Works for me on ASDF.

For load-op and compile-op, times are stored in the operation-times
slot of the component, as accessed by component-operation-times.
Load-source-op should be doing the same, really. I've just added a
method component-operation-time that allows one to do the Right
Thing(tm) whatever that right thing is. Maybe we want load-source-op
and load-op to share a same time, for instance.

If ABCL is doing the wrong thing, I suggest that you TRACE
operation-done-p and/or safe-file-write-date and see what it tells
you.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
Death is only a milestone - albeit one that is dropped on you
from a very great height
        — Terry Pratchett.




On 2 May 2010 00:17, Alan Ruttenberg <alanruttenberg at gmail.com> wrote:
> Situation:
>
> abcl
> there is a newer compiled file than source file
> calling load-op on the system with this file causes the fasl to be repeatedly loaded.
>
> The reason, it appears:
>
> (defmethod perform ((o load-op) (c cl-source-file))
>  #-ecl (mapcar #'load (input-files o c))
>  #+ecl (loop :for i :in (input-files o c)
>          :unless (string= (pathname-type i) "fas")
>          :collect (let ((output (compile-file-pathname (lispize-pathname i))))
>                     (load output))))
>
> compared to
>
> (defmethod perform ((o load-source-op) (c cl-source-file))
>  (let ((source (component-pathname c)))
>    (setf (component-property c 'last-loaded-as-source)
>          (and (load source)
>               (get-universal-time)))))
>
> i.e. the last loaded-time is recorded only when the source is loaded.
>
> -Alan




More information about the asdf-devel mailing list