Hi list,
I'm having trouble hot-upgrading asdf. My old setup was not checked out of a repository, but does have a file modified date of 2007-06-18. I also use asdf-binary-locations version "0.3.8".
To begin with, I have created the following config file (~ is at c:/home)
~/.config/common-lisp/source-registry.conf
(:source-registry (:directory "e:/src/ltk-0.90/") (:tree "c:/home/code/lisp/libs/") (:exclude "_darcs") :ignore-inherited-configuration)
I then load-file asdf.lisp from Slime. My clisp-2.47 (non-cygwin Windows) is previously already running with asdf, asdf-binary-locations, and many systems loaded (and other random work done).
I then tried to load a system that I could previously load just fine, in this case ironclad_0.27.
CL-USER> (asdf:load-system :ironclad) ; loading system definition from C:\home\code\lisp\libs\ironclad_0.27\ironclad.asd into #<PACKAGE ASDF0> ;; Loading file C:\home\code\lisp\libs\ironclad_0.27\ironclad.asd ... ; registering #<SYSTEM :IRONCLAD #x26F7286D> as IRONCLAD ; registering #<SYSTEM IRONCLAD-TESTS #x26FE5225> as IRONCLAD-TESTS ;; Loaded file C:\home\code\lisp\libs\ironclad_0.27\ironclad.asd
; No value
This gave the following error.
TRANSLATE-PATHNAME: replacement pieces (NIL NIL (:DIRECTORY #1="home" #2="code" #3="lisp" #4="libs" #5="ironclad_0.27") "package" "fas" :NEWEST) do not fit into #P"C:\Documents and Settings\chewyong\Local Settings\Temporary Internet Files\common-lisp\**\*.*" [Condition of type SIMPLE-ERROR]
I browsed around in the stack trace (yes clisp stack traces are ugly), and looked deeper into this particular frame:
...
17: <1/1718> #<SYSTEM-FUNCTION TRANSLATE-PATHNAME> [1712] EVAL frame for form (TRANSLATE-PATHNAME (ASDF::DIRECTORIZE-PATHNAME-HOST-DEVICE ASDF::P) ASDF::ABSOLUTE-SOURCE ASDF::DESTINATION) Locals: ASDF::ABSOLUTE-SOURCE = #P"\**\*.*" ASDF::ROOT = #P"\" ASDF::DESTINATION = #P"C:\Documents and Settings\chewyong\Local Settings\Temporary Internet.. ASDF::SOURCE = T #:LIST-13280 = ((T ..)) ASDF::P = #P"\home\code\lisp\libs\ironclad_0.27\package.fas" #:PATTERN-13281 = (T ..) #:TYPECASE-KEY-13279 = #P"C:\home\code\lisp\libs\ironclad_0.27\package.fas" #:TYPECASE-KEY-13278 = #P"C:\home\code\lisp\libs\ironclad_0.27\package.fas" ASDF::PATH = #P"C:\home\code\lisp\libs\ironclad_0.27\package.fas" ...
In particular, I'm guessing that this is related to truenamize (has it taken the wrong branch?) with respect to (line 677 on my version of asdf.lisp)
(ignore-errors (return (truename p)))
Am I close enough? See the following:
CL-USER> (truename (merge-pathnames #P"\home\code\lisp\libs\ironclad_0.27\package.fas"))
==>
TRUENAME: File #1=#P"C:\home\code\lisp\libs\ironclad_0.27\package.fas" does not exist [Condition of type SYSTEM::SIMPLE-FILE-ERROR]
My package.fas, due to asdf-binary-locations, has been stored previously in ~/code/lisp/libs/ironclad_0.27/clisp-2.47-win32-i386/package.fas
I hope this is useful for fixing asdf + a-b-l hot upgrade. I can restart a new Lisp and give full backtraces or other further info, should that be necessary.
Cheers.