'plan' branch fails to load QUICKLISP-ABCL
The QUICKLISP-ABCL system ensures that Quicklisp is available for the ABCL user. It takes advantage of the the ability in ABCL to CL:LOAD
code from the network to use that mechanism to install Quicklisp if it is not present.
QUICKLISP-ABCL consists of a single method which overrides the system's ASDF:LOAD-OP to CL:LOAD the Quicklisp "setup.lisp" code. The Quicklisp code locates the quicklisp.asd, and then uses ASDF to load its definition.
This violates the following from https://gitlab.common-lisp.net/asdf/asdf/blob/master/doc/best_practices.md
You MUST NOT call `asdf:operate` or any of its derivatives,
such as `asdf:load-system` or `asdf:test-system` from within a `perform` method.
Instead, you SHOULD declare proper dependencies between actions using methods on
`component-depends-on`, or more simply using an `:in-order-to` clause in your `defsystem` form.
But I can't figure out how to do this in the QUICKLISP-ABCL case, because ASDF cannot know how to load Quicklisp until the Quicklisp load routines fires. Maybe I can do something fancy with :in-order-to clauses?
The resulting error as displayed by SLIME:
Invalid recursive use of (OPERATE #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "quicklisp">) while visiting (#<ASDF/LISP-ACTION:LOAD-OP >
. #<ASDF/SYSTEM:SYSTEM "quicklisp-abcl">) - please use proper dependencies instead..
Error loading /Users/evenson/quicklisp/setup.lisp at line 134 (offset 5035)
#<THREAD "interpreter" {3CF6138C}>: Debugger invoked on condition of type SIMPLE-ERROR
Invalid recursive use of (OPERATE #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "quicklisp">) while visiting (#<ASDF/LISP-ACTION:LOAD-OP > . #<ASDF/SYSTEM:SYSTEM "quicklisp-abcl">) - please use proper dependencies instead.
Restarts:
0: RETRY Retry completing load for #<ASDF/SYSTEM:SYSTEM "quicklisp-abcl">.
1: ACCEPT Continue, treating completing load for #<ASDF/SYSTEM:SYSTEM "quicklisp-abcl"> as having been successful.
2: RETRY Retry ASDF operation.
3: CLEAR-CONFIGURATION-AND-RETRY Retry ASDF operation after resetting the configuration.
4: RETRY Retry ASDF operation.
5: CLEAR-CONFIGURATION-AND-RETRY Retry ASDF operation after resetting the configuration.