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".
Thanks,
Zach