I wrote:

> Thoughts ? Will this be enough to satisfy ASDF ?

  Not quite. I missed NORMALIZE-VERSION (ASDF attempting to be clever
  and doing all sorts of nasty DWIM stuff on version numbers).

  Attached patch would solve the problem, it seems. But then again, I
  don't really know what I'm doing. It wraps NORMALIZE-VERSION within a
  generic function which I can then specialize on my system, essentially
  bypassing normalization altogether, like this:

(defmethod asdf/parse-defsystem:normalize-component-version
    ((system my-system) form &key pathname component parent)
  (declare (ignore pathname component parent))
  form)

diff --git a/parse-defsystem.lisp b/parse-defsystem.lisp
index e674e0c..ade94d7 100644
--- a/parse-defsystem.lisp
+++ b/parse-defsystem.lisp
@@ -10,6 +10,7 @@
   (:import-from :asdf/system #:depends-on #:weakly-depends-on)
   (:export
    #:defsystem #:register-system-definition
+   #:normalize-component-version
    #:class-for-type #:*default-component-class*
    #:determine-system-directory #:parse-component-form
    #:non-toplevel-system #:non-system-system
@@ -119,7 +120,11 @@
                     (invalid))))
         (if-let (pv (parse-version v #'invalid-parse))
           (unparse-version pv)
-          (invalid))))))
+          (invalid)))))
+  (defgeneric* (normalize-component-version) (c form &key pathname component parent)
+    (:method (c form &key pathname component parent)
+      (declare (ignore c))
+      (normalize-version form :pathname pathname :component component :parent parent))))
 
 
 ;;; "inline methods"
@@ -233,7 +238,7 @@ system names contained using COERCE-NAME. Return the result."
         (let ((sysfile (system-source-file (component-system component)))) ;; requires the previous
           (when (and (typep component 'system) (not bspp))
             (setf (builtin-system-p component) (lisp-implementation-pathname-p sysfile)))
-          (setf version (normalize-version version :component name :parent parent :pathname sysfile)))
+          (setf version (normalize-component-version component version :component name :parent parent :pathname sysfile)))
         ;; Don't use the accessor: kluge to avoid upgrade issue on CCL 1.8.
         ;; A better fix is required.
         (setf (slot-value component 'version) version)
-- 
My new Jazz CD entitled "Roots and Leaves" is out!
Check it out: http://didierverna.com/records/roots-and-leaves.php

Lisp, Jazz, Aïkido: http://www.didierverna.info

Reply via email to