Commit e6a5a01f authored by Daniel Barlow's avatar Daniel Barlow
Browse files

experimental! checked in for kmr to test dependency issues

parent 52edf602
Loading
Loading
Loading
Loading
+32 −28
Original line number Diff line number Diff line
;;; This is asdf: Another System Definition Facility.  $Revision: 1.54 $
;;; This is asdf: Another System Definition Facility.  $Revision: 1.55 $
;;;
;;; Feedback, bug reports, and patches are all welcome: please mail to
;;; <cclan-list@lists.sf.net>.  But note first that the canonical
@@ -88,7 +88,7 @@
(in-package #:asdf)

;;; parse the cvs revision into something that might be vaguely useful.  
(defvar *asdf-revision* (let* ((v "$Revision: 1.54 $")
(defvar *asdf-revision* (let* ((v "$Revision: 1.55 $")
			       (colon (position #\: v))
			       (dot (position #\. v)))
			  (and v colon dot 
@@ -573,8 +573,10 @@ system."))
      (loop for (required-op . deps) in (component-depends-on operation c)
	    do (do-dep required-op deps))
      ;; constituent bits
      (let ((module-ops
	     (when (typep c 'module)
	       (let ((at-least-one nil)
		     (forced nil)
		     (error nil))
		 (loop for kid in (module-components c)
		       do (handler-case
@@ -588,9 +590,10 @@ system."))
			      (setf at-least-one t))))
		 (when (and (eq (module-if-component-dep-fails c) :try-next)
			    (not at-least-one))
	    (error error))))
		   (error error))
		 forced))))
	;; now the thing itself
      (when (or forced
	(when (or forced module-ops
		  (operation-forced-p (operation-ancestor operation))
		  (not (operation-done-p operation c)))
	  (let ((do-first (cdr (assoc (class-name (class-of operation))
@@ -598,7 +601,8 @@ system."))
	    (loop for (required-op . deps) in do-first
		  do (do-dep required-op deps)))
	  (setf forced (append (delete 'pruned-op forced :key #'car)
			     (list (cons operation c)))))
			       (delete 'pruned-op module-ops :key #'car)
			       (list (cons operation c))))))
      (setf (visiting-component operation c) nil)
      (visit-component operation c (and forced t))
      forced)))