Commit d6331a4a by Daniel Barlow

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

parent ae9d0db6
;;; 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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment