[asdf-devel] can't run quicklisp with asdf 2.28 on CCL (upgrage issue?)
Faré
fahree at gmail.com
Thu Feb 7 01:54:21 UTC 2013
On Wed, Feb 6, 2013 at 9:22 PM, Anton Vodonosov <avodonosov at 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
More information about the asdf-devel
mailing list