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

mostly untested fixes for more nearly correct dependency checking. Use caution when upgrading

parent ae9d0db6
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
;;; This is asdf: Another System Definition Facility.  $Revision: 1.51 $
;;; This is asdf: Another System Definition Facility.  $Revision: 1.52 $
;;;
;;; 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.51 $")
(defvar *asdf-revision* (let* ((v "$Revision: 1.52 $")
			       (colon (position #\: v))
			       (dot (position #\. v)))
			  (and v colon dot 
@@ -133,7 +133,7 @@ and NIL NAME and TYPE components"
	     (apply #'format s (format-control c) (format-arguments c)))))

(define-condition circular-dependency (system-definition-error)
  ((components :initarg :components)))
  ((components :initarg :components :reader circular-dependency-components)))

(define-condition missing-component (system-definition-error)
  ((requires :initform "(unnamed)" :reader missing-requires :initarg :requires)
@@ -158,6 +158,8 @@ and NIL NAME and TYPE components"
	 "Component name, restricted to portable pathname characters")
   (version :accessor component-version :initarg :version)
   (in-order-to :initform nil :initarg :in-order-to)
   ;;; XXX crap name
   (do-first :initform nil :initarg :do-first)
   ;; methods defined using the "inline" style inside a defsystem form:
   ;; need to store them somewhere so we can delete them when the system
   ;; is re-evaluated
@@ -499,6 +501,8 @@ system."))
	;; original source file, then
	(list (component-pathname c)))))

 (defmethod input-files ((operation operation) (c module)) nil)

(defmethod operation-done-p ((o operation) (c component))
  (let ((out-files (output-files o c))
	(in-files (input-files o c)))
@@ -589,6 +593,10 @@ system."))
      (when (or forced
		(operation-forced-p (operation-ancestor operation))
		(not (operation-done-p operation c)))
	(let ((do-first (cdr (assoc (class-name (class-of operation))
				    (slot-value c 'do-first)))))
	  (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)))))
      (setf (visiting-component operation c) nil)
@@ -820,8 +828,9 @@ Returns the new tree (which probably shares structure with the old one)"
		     :parent parent
		     :in-order-to (union-of-dependencies
				   in-order-to
				   `((compile-op (load-op ,@depends-on))
				   `((compile-op (compile-op ,@depends-on))
				     (load-op (load-op ,@depends-on))))
		     :do-first `((compile-op (load-op ,@depends-on)))
		     other-args)
	      (when (typep ret 'module)
		(setf (module-default-component-class ret)