[asdf-devel] Unexpected behavior when loading different versions of a system

Robert Goldman rpgoldman at sift.info
Thu Sep 1 17:01:59 UTC 2011


On 9/1/11 Sep 1 -6:58 AM, Zach Beane wrote:
> Say I download version 1 of the FOO library and put it in /tmp/foo-1/,
> so it looks like this:
> 
>   /tmp/foo-1/foo.asd
>   /tmp/foo-1/a.lisp
> 
> foo.asd has this:
> 
>   (asdf:defsystem #:foo
>     :serial t
>     :components ((:file "a")))
> 
> Then I add the path to the central registry and load it:
> 
>   (push #p"/tmp/foo-1/" asdf:*central-registry*)
>   (asdf:load-system "foo")
> 
> Everything loads fine.
> 
> Oops, I need to upgrade, I better get version 2 and put it in
> /tmp/foo-2/, which looks like this:
> 
>   /tmp/foo-2/foo.asd
>   /tmp/foo-2/a.lisp
>   /tmp/foo-2/b.lisp
> 
> foo.asd looks like this:
> 
>   (asdf:defsystem #:foo
>     :serial t
>     :components ((:file "a")
>                  (:file "b")))
> 
> Then I add the path to central registry:
> 
>   (push #p"/tmp/foo-2/" asdf:*central-registry*)
> 
> It seems to find the new system:
> 
>   (asdf:system-source-directory "foo") => #p"/tmp/foo-2/"
> 
> However, when I try this:
> 
>   (asdf:load-system "foo")
> 
> I end up with this error, which I don't really understand:
> 
>   failed to find the TRUENAME of /tmp/foo-1/b.lisp:
>     No such file or directory
> 
> Why does that happen? What's the best way to work around it?
> 
> I'm using ASDF 2.017 and a very recent SBCL from git. You can reproduce
> my scenario by unpacking http://xach.com/tmp/foofail.tgz and loading
> "foofail.lisp".

FWIW, I get the same error on ACL, so I believe this is an 
ASDF issue, and not SBCL-specific....

I haven't solved the problem, but when I look into the "foo" 
system object I see an interesting mismatch between the 
relative and absolute pathname slots:

A NEW ASDF-UTILITIES:SYSTEM @ #x100436e292 = #<ASDF-UTILITIES:SYSTEM "foo">
   0 Class --------> #<STANDARD-CLASS ASDF-UTILITIES:SYSTEM>
   1 NAME ---------> A simple-string (3) "foo"
   2 VERSION ------> symbol :--UNBOUND--
   3 LOAD-DEPENDENCIES -> symbol NIL
   4 IN-ORDER-TO --> symbol NIL
   5 DO-FIRST -----> ((ASDF-UTILITIES:COMPILE-OP (ASDF-UTILITIES:LOAD-OP))), a proper list with 1 element
   6 INLINE-METHODS -> symbol NIL
   7 PARENT -------> symbol NIL
   8 RELATIVE-PATHNAME -> PATHNAME struct = #P"/Users/rpg/Downloads/foofail/foo-2/"
   9 ABSOLUTE-PATHNAME -> PATHNAME struct = #P"/Users/rpg/Downloads/foofail/foo-1/"
....

This is probably the right place to look for the bug.  I'm afraid that I will be in
meetings all day, and am unlikely to get around to this in the near future...

Zach, would you mind blowing this into the launchpad?

thanks,
r




More information about the asdf-devel mailing list