[asdf-devel] 1.675 bug

szergling senatorzergling at gmail.com
Thu Apr 15 00:46:19 UTC 2010


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.




More information about the asdf-devel mailing list