[asdf-devel] Trying again

james anderson james.anderson at setf.de
Fri Feb 12 14:23:56 UTC 2010


good afternoon;

On 2010-02-12, at 15:07 , Faré wrote:

>>> : Faré
>> : james anderson
>>
>>> Maybe the current timestamps in ASDF are somewhat lacking, but
>>> that doesn't mean timestamps can't solve the issue. I think that
>>> one timestamp per pair (op component) should do the trick, stored
>>> as an alist (op timestamp) in a slot of the component.
>>
>> is that not what the `operation-time` cache[1] is already there to  
>> do?
>>
> Indeed.
>
> I propose to modify operation-done-p as follows i.e. always check  
> op-time.
>
> (defmethod operation-done-p ((o operation) (c component))
>   (let ((out-files (output-files o c))
>         (in-files (input-files o c))
>         (op-time (gethash (type-of o)
>                           (component-operation-times c))))
>     (and op-time
>      (cond
>        ((and (not in-files) (not out-files)))
>         ;; arbitrary decision: an operation that uses nothing to
>         ;; produce nothing probably isn't doing much,
>         t)
>        ((not out-files)
>         (>= op-time
>          (apply #'max
>                 (mapcar #'safe-file-write-date in-files))))
>        ((not in-files) nil)
>        (t
>         (and
>          (every #'probe-file in-files)
>          (every #'probe-file out-files)
>          (> (apply #'min (mapcar #'safe-file-write-date out-files))
>             (apply #'max (mapcar #'safe-file-write-date in- 
> files))))))))

would it not be necessary to at least compare that with some sort of  
time-stamp on the operation itself?





More information about the asdf-devel mailing list