diff --git a/asdf.lisp b/asdf.lisp index 43b61894572f9a7986444075301ea0a041993795..5485cdc87ba0cb10a4d485c4251d1e939a0e915c 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -63,7 +63,7 @@ (remove "asdf" excl::*autoload-package-name-alist* :test 'equalp :key 'car)) (let* ((asdf-version ;; the 1+ hair is to ensure that we don't do an inadvertent find and replace - (subseq "VERSION:1.710" (1+ (length "VERSION")))) + (subseq "VERSION:1.711" (1+ (length "VERSION")))) (existing-asdf (find-package :asdf)) (versym '#:*asdf-version*) (existing-version (and existing-asdf @@ -72,7 +72,7 @@ (redefined-functions '(#:perform #:explain #:output-files #:operation-done-p #:perform-with-restarts #:component-relative-pathname - #:system-source-file))) + #:system-source-file #:operate))) (unless (equal asdf-version existing-version) (when existing-asdf (format *error-output* @@ -1776,9 +1776,11 @@ recursive calls to traverse.") ;;;; ------------------------------------------------------------------------- ;;;; Invoking Operations -(defun operate (operation-class system &rest args - &key ((:verbose *asdf-verbose*) *asdf-verbose*) version force - &allow-other-keys) +(defgeneric operate (operation-class system &key &allow-other-keys)) + +(defmethod operate (operation-class system &rest args + &key ((:verbose *asdf-verbose*) *asdf-verbose*) version force + &allow-other-keys) (declare (ignore force)) (let* ((*package* *package*) (*readtable* *readtable*) @@ -1794,8 +1796,9 @@ recursive calls to traverse.") (loop :for (op . component) :in steps :do (loop (restart-case - (progn (perform-with-restarts op component) - (return)) + (progn + (perform-with-restarts op component) + (return)) (retry () :report (lambda (s) diff --git a/test/test1.script b/test/test1.script index c3713f3d4ef6cfcb09baa57a4c4c261433a691dd..3c4462cea45b87dc7d78b22b0f1750401ff16b5e 100644 --- a/test/test1.script +++ b/test/test1.script @@ -4,7 +4,6 @@ (quit-on-error (setf asdf:*central-registry* '(*default-pathname-defaults*)) - ;;(trace ASDF::MERGE-COMPONENT-RELATIVE-PATHNAME ASDF::COMPONENT-RELATIVE-PATHNAME) (asdf:operate 'asdf:load-op 'test1) ;; test that it compiled (let* ((file1 (asdf:compile-file-pathname* "file1")) @@ -18,9 +17,7 @@ ;; and loaded (assert (symbol-value (find-symbol (symbol-name :*file1*) :test-package))) - ;; now remove one output file and check that the other is _not_ - ;; recompiled - (sleep 1) ; mtime has 1-second granularity, so pause here for fast machines + ;; now remove one output file and check that the other is _not_ recompiled ;;(trace asdf::operation-done-p asdf::traverse) (asdf::run-shell-command "rm -f ~A" (namestring file2)) @@ -34,6 +31,7 @@ ;; unix cwd. this is not a problem for run-tests.sh, but can be in general (let ((before (file-write-date file2))) + ;; filesystem mtime has 1 second granularity. Make sure even fast machines see a difference. (sleep 1) (asdf::run-shell-command "touch file1.lisp") (asdf:operate 'asdf:load-op 'test1)