From d6331a4aa09dc953bb440dfe84e1dff625625be2 Mon Sep 17 00:00:00 2001 From: Daniel Barlow <> Date: Mon, 18 Nov 2002 17:42:54 +0000 Subject: [PATCH] mostly untested fixes for more nearly correct dependency checking. Use caution when upgrading --- asdf.lisp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/asdf.lisp b/asdf.lisp index bd5b5ed9..11baf6c5 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -1,4 +1,4 @@ -;;; 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) -- GitLab