Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
No related merge requests found
;;; 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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment