quicklisp-client
quicklisp-client copied to clipboard
quicklisp system (as defined in quicklisp.asd) is incomplete
Code inside the system refers to symbols in toplevel setup.lisp file (ql-setup:qmerge), what may lead to broken builds of standalone executables depending on Quicklisp. I suspect that it also affects systems which doesn't depend on Quicklisp, because ASDF have Quicklisp searcher registered.
Steps to reproduce (on ECL, but I saw this error also when tried to use buildapp with SBCL when building from bundle):
;;; my-system.asd
(in-package #:asdf)
(defsystem #:my-system
:depends-on (#:asdf #:quicklisp)
:components ((:file "my-system")))
;;; my-system.lisp
(print 'foo)
% ecl --eval '(asdf:load-asd "my-system.asd")' \
--eval '(asdf:make-build :my-system :type :program :move-here ".")' \
--eval '(quit)'
% ./my-system
Condition of type: UNDEFINED-FUNCTION
The function QL-SETUP:QMERGE is undefined.
No restarts available.
Top level in: #<process TOP-LEVEL>.
>
That's the current design. It works that way to ensure that Quicklisp is always loaded through setup.lisp, and not directly through ASDF.
I've recently decided to change how this works, so that Quicklisp can be loaded only via ASDF, but it requires some initialization (to set the quicklisp directory) before anything can be loaded. And setup.lisp will automatically do that initialization, but some other process could, too.
I'll remark on this issue when the change happens.