quicklisp-client
quicklisp-client copied to clipboard
new client fails to load any library on CMUCL and old versions of ECL
After updating to new quicklisp client and restarting CMUCL, or old versions of ECL, I have the following sitnuation:
CMU Common Lisp 20c release-20c (20C Unicode), running on ubuntu
With core: /home/testgrid/lisps/cmucl-20c/lib/cmucl/lib/lisp-sse2.core
Dumped on: Thu, 2011-11-03 10:30:38+02:00 on lorien2
See <http://www.cons.org/cmucl/> for support information.
Loaded subsystems:
Unicode 1.28 with Unicode version 6.0.0
Python 1.1, target Intel x86/sse2
CLOS based on Gerd's PCL 2010/03/19 15:19:03
* (ql:quickload :alexandria)
Error in KERNEL::UNDEFINED-SYMBOL-ERROR-HANDLER: the function ASDF:FIND-SYSTEM is undefined.
[Condition of type UNDEFINED-FUNCTION]
Restarts:
0: [ABORT] Give up on "alexandria"
1: Return to Top-Level.
Is it ASDF update problem?
With ECL, it just fails to load. For ecl-12.7.1-4a4c2289-linux-x86 of Oct 31 2012:
testgrid@ubuntu:~$ lisps/ecl-bin/bin/ecl
;;; Loading "/home/testgrid/quicklisp/setup.lisp"
;;; Loading #P"/home/testgrid/lisps/ecl-bin/lib/ecl-12.7.1/cmp.fas"
;;; Loading #P"/home/testgrid/lisps/ecl-bin/lib/ecl-12.7.1/asdf.fas"
An error occurred during initialization:
Error while trying to load definition for system quicklisp from pathname
/home/testgrid/quicklisp/quicklisp/quicklisp.asd:
:depends-on must be a list.
The value specified for module quicklisp is SI:MISSING-KEYWORD.
for ecl-12.7.1-ce653d88-linux-x86 of Sep 16 2012:
testgrid@ubuntu:~/lisps$ ./ecl-bin.old/bin/ecl
;;; Loading "/home/testgrid/quicklisp/setup.lisp"
;;; Loading #P"/home/testgrid/lisps/ecl-bin.old/lib/ecl-12.7.1/cmp.fas"
;;; Loading #P"/home/testgrid/lisps/ecl-bin.old/lib/ecl-12.7.1/asdf.fas"
ASDF could not load sockets because Error while trying to load definition for system sockets from pathname /home/testgrid/lisps/ecl-bin.old/lib/ecl-12.7.1/sockets.asd: No applicable method for SOURCE-FILE-TYPE with arguments of types
COMPILED-FILE
PREBUILT-SYSTEM.
;;; Error:
;;; in file impl.lisp, position 7644
;;; at (DEFINE-IMPLEMENTATION-PACKAGE ECL ...)
;;; * The form (REQUIRE 'SOCKETS) was not evaluated successfully.
;;; Error detected:
;;; Error while trying to load definition for system sockets from pathname /home/testgrid/lisps/ecl-bin.old/lib/ecl-12.7.1/sockets.asd: No applicable method for ASDF:SOURCE-FILE-TYPE with arguments of types
;;; COMPILED-FILE
;;; PREBUILT-SYSTEMAn error occurred during initialization:
Error while invoking #<compile-op (:VERBOSE NIL) 09223d20> on
#<cl-source-file "quicklisp" "impl">.
OK, I understand the issue with ECL: it's because refreshing the ASDF from ECL's old version to Quicklisp's version breaks asdf-bundle, and the subsequent call to ECL's internal (require 'sockets) needs the asdf-bundle functionality and fails.
This means that on ECL, Quicklisp needs to either not upgrade asdf, or also upgrade asdf-bundle. Sigh.
I've bundled (sic) asdf-bundle into a single file, to make it easier for ECL and/or Quicklisp to bundle it.
I'm also considering bundling asdf-bundle directly with asdf 2.27 so we can be done with this issue.
I have no idea what's happening with CMUCL; this is a separate bug. Can you file it separately and include a backtrace? From the look of it, it is probably an ASDF bug, not a Quicklisp bug, in which case https://launchpad.net/asdf is more appropriate.
I can't reproduce with CMUCL 20d.
CMUCL 20d has newer ASDF. From 20d release notes: "ASDF2 updated to version 2.24."
Interesting. Do you know what version of ASDF CMUCL 20c was using?
I've been experiencing trouble upgrading ASDF on CMUCL from versions older than 2.015 because it doesn't like the change of source-registry from list of directories to pre-populated hash-table of .asd files.
What you're experiencing looks different, though, and seems related to some changes I made in ASDF 2.20.20. I don't have CMUCL on my current machines; I'll try to install one some time later, so I may run such tests again.
;;; This is ASDF 2.017: Another System Definition Facility.
Registered launchpad ticket https://bugs.launchpad.net/asdf/+bug/1084644 for the CMUCL situation.
One ugly workaround for ECL, until we resolve the bundle issue, would be for quicklisp to #+ecl (require 'sockets) in setup.lisp, before it upgrades asdf. I'm not sure I recommend it.
The more I think of it, the more putting asdf-bundle inside asdf.lisp looks like the solution with least headaches for users.
As for the CMUCL bug, a workaround is available in ASDF 2.26.5.
As for the ECL issue, I plan to fix it before ASDF 2.27 my merging asdf-bundle into asdf, unless someone objects.
Hopefully, this will all be bad memories by next Quicklisp release.