[asdf-devel] strange interaction between ql:quickload and ASDF

Anton Vodonosov avodonosov at yandex.ru
Wed Feb 27 02:50:31 UTC 2013


Hello.

I have very strange behaviour of ql:quickload that I observer only on ABCL.
It happens when I run (ql:quickload :modf).
Precondition: the system :modf is NOT installed into quicklisp.

> java -jar abcl.jar --noinit --nosystem
Armed Bear Common Lisp 1.1.0
Java 1.6.0_26 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.945 seconds.
Startup completed in 4.8 seconds.
Type ":help" for a list of available commands.


CL-USER(1): (load "C:\\Users\\anton\\quicklisp\\setup.lisp")
T
CL-USER(2): (ql:quickload :modf)
Error loading C:/Users/anton/quicklisp/dists/quicklisp/software/closer-mop-20130128-darcs/closer-mop.asd at line 43 (offset 1649)
#<THREAD "interpreter" {40773F4B}>: Debugger invoked on condition of type LOAD-SYSTEM-DEFINITION-ERROR
  Error while trying to load definition for system closer-mop from pathname C:/Users/anton/quicklisp/dists/quicklisp/software/closer-mop-20130128
-darcs/closer-mop.asd: Unrecognized keyword argument ("closer-mop-packages" "closer-mop-shared")
Restarts:
  0: REINITIALIZE-SOURCE-REGISTRY-AND-RETRY Retry finding system closer-mop after reinitializing the source-registry.
  1: ABORT                                  Give up on "modf"
  2: TOP-LEVEL                              Return to top level.
[1] ASDF0(3):


As you see it is trying to load closer-mop. Why? If :modf ASDF is not available, quicklisp should not 
load anything other systems yet. Moreover, modf.asd has

   :depends-on (:alexandria
                 #-abcl :closer-mop
                 :iterate)

So on ABCL it does not depend on closer-mop.

I got backtrace using this command:

[1] ASDF0(3): (with-open-file (stream "C:\\Users\\anton\\unpacked\\abcl\\abcl-bin-1.1.0\\backtrace.txt"
                        :direction :output
                        :if-exists :supersede
                        :if-does-not-exist :create)
  (let ((*debug-io* stream)) (top-level::backtrace-command "10000")))

The resulting file is here: https://dl.dropbox.com/u/5708042/backtrace.txt.

 @abcl dvelopers: this backtrace seem to contain not only the current invocation stack, 
but also previous calls, already finished. For example the
(LOAD "C:\\Users\\anton\\quicklisp\\setup.lisp") at the very bottom of the file.
Do I retrieve backtrace incorrectly?

Back to the ql:quickload problem. I know that if I install :modf with CCL,
this problem doesn't happen anymore, and ABCL can load it.

Zach, how it works?

Best regards,
- Anton




More information about the asdf-devel mailing list