Commit 80477bdb authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

Merge branch 'master' of http://common-lisp.net/project/asdf/asdf

parents dcdc48a0 4711ad45
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -467,6 +467,16 @@ processed in order by OPERATE."))
;;;; General Purpose Utilities

(defmacro while-collecting ((&rest collectors) &body body)
  "COLLECTORS should be a list of names for collections.  A collector
defines a function that, when applied to an argument inside BODY, will
add its argument to the corresponding collection.  Returns multiple values,
a list for each collection, in order.
   E.g.,
\(while-collecting \(foo bar\)
           \(dolist \(x '\(\(a 1\) \(b 2\) \(c 3\)\)\)
             \(foo \(first x\)\)
             \(bar \(second x\)\)\)\)
Returns two values: \(A B C\) and \(1 2 3\)."
  (let ((vars (mapcar #'(lambda (x) (gensym (symbol-name x))) collectors))
        (initial-values (mapcar (constantly nil) collectors)))
    `(let ,(mapcar #'list vars initial-values)
+16 −0
Original line number Diff line number Diff line
;;; -*- Lisp -*-
(asdf:defsystem test-redundant-recompile
  :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))
                                            (load-op (load-op "file1"))))
               (:file "file1")))

#|
;;;This test system definition attempts to replicate the excess dependencies
;;;that seem to give rise to launchpad bug 590517
;;;(https://bugs.launchpad.net/asdf/+bug/590517)

1) from clean, check that all fasl files build and that some function
   defined in the second file is present

2) load again.  Check to make sure that nothing is recompiled.
|#
+28 −0
Original line number Diff line number Diff line
;;; -*- Lisp -*-
(load "script-support")
(load-asdf)

(quit-on-error
 (setf asdf:*central-registry* '(*default-pathname-defaults*))
 (asdf:operate 'asdf:load-op 'test-redundant-recompile)
 ;; test that it compiled
 (let* ((file1 (asdf:compile-file-pathname* "file1"))
        (file2 (asdf:compile-file-pathname* "file2"))
        (file1-date (file-write-date file1))
        (file2-date (file-write-date file2)))

   (format t "~&test-redundant-recompile 1: ~S ~S~%" file1 file1-date)
   (format t "~&test-redundant-recompile 2: ~S ~S~%" file2 file2-date)
   (assert file1-date)
   (assert file2-date)

   ;; and loaded
   (assert (symbol-value (find-symbol (symbol-name :*file1*) :test-package)))

   ;; now rerun the load-op and check that no files are recompiled

   ;;(trace asdf::operation-done-p asdf::traverse)
   (asdf:operate 'asdf:load-op 'test-redundant-recompile)
   (assert (= file1-date (file-write-date file1)))
   (assert (= file2-date (file-write-date file2)))))