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