committed patch for missing-component versus missing-version disambiguation

Gary King <[email protected]> Fri, 20 Jun 2008 10:10:20 -0400
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
tested on OS X with SBCL and ACL.


Index: asdf.lisp
===================================================================
RCS file: /cvsroot/cclan/asdf/asdf.lisp,v
retrieving revision 1.119
diff -u -w -r1.119 asdf.lisp
--- asdf.lisp	18 Jun 2008 01:29:18 -0000	1.119
+++ asdf.lisp	20 Jun 2008 13:11:32 -0000
@@ -95,7 +95,9 @@
             #:error-component #:error-operation
             #:system-definition-error
             #:missing-component
+	   #:missing-component-of-version
             #:missing-dependency
+           #:missing-dependency-of-version
             #:circular-dependency        ; errors
             #:duplicate-names

@@ -179,12 +181,18 @@

  (define-condition missing-component (system-definition-error)
    ((requires :initform "(unnamed)" :reader missing- 
requires :initarg :requires)
-   (version :initform nil :reader missing-version :initarg :version)
     (parent :initform nil :reader missing-parent :initarg :parent)))

+(define-condition missing-component-of-version (missing-component)
+  ((version :initform nil :reader missing-version :initarg :version)))
+
  (define-condition missing-dependency (missing-component)
    ((required-by :initarg :required-by :reader missing-required-by)))

+(define-condition missing-dependency-of-version (missing-dependency
+						 missing-component-of-version)
+  ())
+
  (define-condition operation-error (error)
    ((component :reader error-component :initarg :component)
     (operation :reader error-operation :initarg :operation))
@@ -230,7 +238,13 @@

  (defmethod print-object ((c missing-component) s)
    (format s "~@<component ~S not found~
-             ~@[ or does not match version ~A~]~
+             ~@[ in ~A~]~@:>"
+          (missing-requires c)
+          (when (missing-parent c)
+            (component-name (missing-parent c)))))
+
+(defmethod print-object ((c missing-component-of-version) s)
+  (format s "~@<component ~S does not match version ~A~
               ~@[ in ~A~]~@:>"
            (missing-requires c)
            (missing-version c)
@@ -671,10 +685,14 @@
                                    ;; in-order-to slot with  
canonicalized
                                    ;; names instead of coercing this  
late
                                    (coerce-name required-c) required-v)
-                                 (error 'missing-dependency
+				 (if required-v
+				     (error 'missing-dependency-of-version
                                          :required-by c
                                          :version required-v
-                                        :requires required-c)))
+					    :requires required-c)
+				     (error 'missing-dependency
+					    :required-by c
+					    :requires required-c))))
                        (op (make-sub-operation c operation dep-c  
required-op)))
                   (traverse op dep-c)))
               (do-dep (op dep)
@@ -981,7 +999,7 @@
           (*verbose-out* (if verbose *standard-output* (make- 
broadcast-stream)))
           (system (if (typep system 'component) system (find-system  
system))))
      (unless (version-satisfies system version)
-      (error 'missing-component :requires system :version version))
+      (error 'missing-component-of-version :requires system :version  
version))
      (let ((steps (traverse op system)))
        (with-compilation-unit ()
          (loop for (op . component) in steps do
Index: test/test5.script
===================================================================
RCS file: /cvsroot/cclan/asdf/test/test5.script,v
retrieving revision 1.1
diff -u -w -r1.1 test5.script
--- test/test5.script	10 May 2008 23:18:22 -0000	1.1
+++ test/test5.script	20 Jun 2008 13:11:32 -0000
@@ -1,4 +1,7 @@
  ;;; -*- Lisp -*-
+
+;;; test :load-only-p support
+
  (load "script-support")
  (load "../asdf")
  (exit-on-error

--
Gary Warren King, metabang.com
Cell: (413) 559 8738
Fax: (206) 338-4052
gwkkwg on Skype * garethsan on AIM





-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php