![](https://secure.gravatar.com/avatar/28c05beed819c8b15c3544206235f5a6.jpg?s=120&d=mm&r=g)
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?