On 10 May 2011 12:45, Nikodemus Siivola nikodemus@random-state.net wrote:
Steps to reproduce:
Get ASDF 2.015 or .1
Install Quicklisp, (ql:quickload "flexi-streams")
Install Flexi-Streams outside quicklisp as well. (For the purposes
of bug reproduction, putting a copy of flexi-streams.asd into eg ~/tmp is enough.)
Go to the directory with the non-Quicklisp copy of flexi-streams.asd.
In lisp:
(push "./" asdf:*central-registry*)
(asdf:load-system "flexi-streams")
...endless recursion that eventually blows either stack or heap.
What is happening is approximately this:
ASDF starts loading ~/tmp/flexi-streams.asd
DEFSYSTEM FLEXI-STREAMS is ok.
During processing of DEFYSTEM FLEXI-STREAMS-TEST, FIND-SYSTEM is called for FLEXI-STREAM-TEST -- ironically _after_ it has been registered and its pathname set.
Source-registry doesn't find it because there is no file flexi-stream-test.asd, and neither does SYSTEM-FIND-ASDF, but Quicklisp which _does_ find it:
ASDF starts loading quicklisp/.../flexi-streams.asd
...you can guess where this leads. But even without the endless recursion this find is bogus.
This did not happen with prior versions of ASDF. This is really messing up things for me -- enough so that I'm contemplating reverting the SBCL provided ASDF to 2.014.
Ouch.
Does 2.014 fix this? If it does, that makes sense indeed. I'll have to go back to the drawing board and maybe change the way find-system works, to make it more robust.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] You can tell whether a man is clever by his answers. You can tell whether a man is wise by his questions. — Naguib Mahfouz