On Wed, Feb 6, 2013 at 9:22 PM, Anton Vodonosov avodonosov@yandex.ru wrote:
Trying with ASDF 2.28.4
The ECL problem has gone, but CCL still can't run quicklisp:
OK, I committed a workaround to ASDF 2.28.5.
lisps/ccl-1.8/lx86cl --no-init --load quicklisp-patched2/setup.lisp
Error: Error while trying to load definition for system quicklisp from pathname /home/testgrid/quicklisp-patched2/quicklisp/quicklisp.asd: Undefined function #:|ASDF::COMPONENT-VERSION| called with arguments ("2012112500" #<SYSTEM "quicklisp">) . While executing: (:INTERNAL ASDF/FIND-SYSTEM:LOAD-ASD), in process listener(1). Type :GO to continue, :POP to abort, :R for a list of available restarts. If continued: Retry applying #:|ASDF::COMPONENT-VERSION| to ("2012112500" #<SYSTEM "quicklisp">). Type :? for other options.
This is a problem with package upgrade of the setf-function. Background: CCL and CLISP both use a trick whereby (setf foo::bar) is internally resolved to some regular symbol, bound to a function, SETF::|FOO::BAR| in the case of CCL. When ASDF is split into several packages and ASDF:COMPONENT-VERSION becomes ASDF/COMPONENT:COMPONENT-VERSION, care is taken to move the SETF symbols so that SETF::|ASDF::COMPONENT-VERSION| is replaced by SETF::|ASDF/COMPONENT::COMPONENT-VERSION| in the mapping table; but apparently something is not right between ASDF and CCL 1.8, so that the new parse-component-form gets compiled with the old uninterned SETF symbol. A recent CCL 1.9 doesn't seem to have the same issue. It's harder for me to write a real solution without being able to reproduce locally.
My current workaround is to use SETF SLOT-VALUE instead of the accessor, and eschew this SETF symbol issue. Ugly, but seems to work, or at least to get us further. Maybe I need more magic in define-package for SETF symbols on older CCLs, or maybe I need to detect bad ASDF/CCL combos and punt on upgrades in these cases. Or maybe I just need to convince Xach that he should do the safe thing and load asdf from source before to compile-file it, since my recent attempt at putting everything in an EVAL-WHEN to make that unnecessary seems to have failed on CCL.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "To speak algebraically, Mr. M. is execrable, but Mr. G. is (x+1)ecrable." — Edgar Alan Poe