Robert Goldman rpgoldman@sift.net wrote:
There was some discussion about this in connection with finding what needed to be recompiled. Is the latter even a query that ASDF can answer? In old ASDF we computed the plan first, and only after that did we decide whether the operations needed performing.
I was the one who asked about that and this is what I ended up with:
(defun out-of-date-components (system &key (other-systems t)) "Returns a list of the components of SYSTEM (or its dependent systems, if OTHER-SYSTEMS is true (which is the default)) which are out-of-date." (let ((op (make-instance 'asdf/lisp-action:compile-op)) res) (dolist (c (asdf:required-components system :force nil :force-not nil :keep-component 'asdf:cl-source-file :keep-operation 'asdf:compile-op :other-systems other-systems)) (when (eq (asdf/action:compute-action-stamp nil op c) t) ;; Operation timestamp is in the future. This indicates that the operation ;; needs to be performed. (push c res))) res))
I would have been nice if I hadn't had to write this myself.