<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">OK, I think I understand now.  This happens when we need quicklisp not just to load, but to install and load, defsystem depends on systems.</p>

<p dir="auto">I just looked at Robert Dodier's bug fix, <a href="https://github.com/quicklisp/quicklisp-client/pull/128/" style="color:#3983C4">https://github.com/quicklisp/quicklisp-client/pull/128/</a> and I'm a little concerned that it could raise an error if <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf::missing-requires</code> isn't implemented on the error condition that is signaled by ASDF (and I don't see why it would be guaranteed to be implemented there).  Shouldn't this check the type of <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">(asdf::error-condition c)</code>? Or if there's something about the conditions under which this handler is invoked that guarantees that the call to <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">missing-requires</code> will not error out, I don't see it, so it's probably worthy of a comment.</p>

<p dir="auto">My guess is that if you checked for the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">error-condition</code> being a subtype of <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">missing-component</code> that would work in modern ASDF.  I have no idea whether it would work in ASDF 2 and I'm afraid that I don't have the time for the ASDF archaeology required to figure out how to "past-proof" this code.</p>

<p dir="auto">HtH,<br>
Best,<br>
r</p>

<p dir="auto">On 6 Apr 2018, at 4:20, Mark Evenson wrote:</p>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">On Apr 2, 2018, at 18:23, Robert Goldman <rpgoldman@sift.info> wrote:<br>
<br>
On 1 Apr 2018, at 7:57, Mark Evenson wrote:<br>
<br>
On Apr 1, 2018, at 14:20, Attila Lendvai attila@lendvai.name wrote:<br>
<br>
The usage of DEFSYSTEM-DEPENDS-ON to specify dependencies that will be<br>
satisfied by QL:QUICKLOAD no longer seems to be working in asdf-3.3.1.<br>
<br>
FTR, here's the history of this issue:<br>
<br>
<a href="https://github.com/quicklisp/quicklisp-client/pull/122#issuecomment-160419822" style="color:#999">https://github.com/quicklisp/quicklisp-client/pull/122#issuecomment-160419822</a><br>
<br>
<a href="https://github.com/quicklisp/quicklisp-client/issues/108" style="color:#999">https://github.com/quicklisp/quicklisp-client/issues/108</a><br>
<br>
Wow! Holy stale complications, batman!<br>
<br>
Robert apparently suggested something (apparently) much simpler in<br>
<br>
<a href="https://github.com/quicklisp/quicklisp-client/pull/128" style="color:#999">https://github.com/quicklisp/quicklisp-client/pull/128</a><br>
<br>
but without any commentary from Zach on that approach.<br>
<br>
Given asdf-3.3 is out, and recent sbcl’s ship with it, which is the preferred way forward from ASDF’s perspective?<br>
<br>
"From ASDF's perspective," this is all new to me, since it was filed as a bug against Quicklisp, and as far as I know, never raised as an issue for ASDF. I could use some help here:<br>
<br>
        • What's a minimal error case using quickload alone?<br>
        • What's a minimal case that arises with using ASDF as the entry point?<br>
It seemed like there was one where if Quicklisp is up and running, and you use asdf:load-system to load a system, this can also happen.<br>
Something I can type into a REPL verbatim is what I would like to see.</p>
</blockquote><p dir="auto">Not sure how to distinguish between your two requests for quickload alone versus ASDF as an entry point<br>
<br>
A minimal case would be the following ASDF definition<br>
<br>
--—depends.asd---<br>
<br>
(defsystem depends<br>
  :in-order-to ((test-op (test-op "depends/t"))))<br>
<br>
(defsystem depends/t<br>
  :defsystem-depends-on (prove-asdf)<br>
  :depends-on (prove)<br>
  :components ((:test-file "depends-test.lisp")))<br>
<br>
——depends-test.lisp——<br>
<br>
(in-package :cl-user)<br>
(prove:plan 1)<br>
(prove:pass "A test that always passes")<br>
(prove:finalize)<br>
<br>
----------------------<br>
<br>
(ql:quickload :depends) should pick up the depends/t secondary system to install PROVE from the network, which is needed to provide a CLOS for the TEST-FILE component.<br>
<br>
Component "prove-asdf" not found, required by NIL<br>
 0: (CONDITIONS::CONDITIONS-ERROR :INVISIBLEP T ASDF/FIND-COMPONENT:MISSING-DEPENDENCY (:REQUIRED-BY NIL :REQUIRES "prove-asdf"))<br>
  1: (ERROR ASDF/FIND-COMPONENT:MISSING-DEPENDENCY :REQUIRED-BY NIL :REQUIRES "prove-asdf")<br>
  2: (ASDF/FIND-COMPONENT:RESOLVE-DEPENDENCY-NAME NIL "prove-asdf" NIL)<br>
  3: ((SUBFUNCTION 1 ASDF/PARSE-DEFSYSTEM:REGISTER-SYSTEM-DEFINITION))<br>
…<br>
<br>
For ASDF3 alone, as long as PROVE is installed, there is no problem.<br>
</p>
</blockquote><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">Also, sounds like though this is an issue on all lisps, not just ABCL as the first post suggested</p>
</blockquote><p dir="auto">Yes, this issue effects all Common Lisp implementations.   I don’t think I even mentioned ABCL in my first message, so other than being an ABCL maintainer, I don’t see how you got that impression.<br>
<br>
</p>
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">Communications between ASDF and QL have been difficult since Zach dropped off this list (and, to be fair, I have never joined up to read quicklisp-devel, if there is such a thing).</p>
</blockquote><p dir="auto">Yes, we are certainly dealing with the resistance of Quicklisp to deprecate ASDF2 in favor of ASDF3, for which I neither really know nor want to go into the history thereof.  Rather than pointing fingers, and spreading blame, I am trying to find some compromise that works for both the ASDF and Quicklisp maintainers, as without getting ql:quickload to somehow include :defsystem-depends-on declarations as recognized load dependencies in the currently stable ASDF3, it means this useful feature for ASDF extensiblity is effectively unusable for inter-system cooperation within Quicklisp.<br>
<br>
In the January 2018 Quicklisp systems, there are 103 references to prove-asdf, so this issue effects quite a bit of the current Quicklisp distributed ecosystem for that use case alone.<br>
<br>
As I read the Quicklisp issues and pull-requests, Quicklisp would be willing to accept a “minimally invasive” patch if it would support asdf-2.26 as well as ASDF3.<br>
<br>
<br>
So, to put things more succintly, given the choice between Quicklisp pulls [122][] or [128][], and given that we have advanced to asdf-3.3.1 since these requests were issued, what would be the preferred manner to patch Quicklisp that would be the most forward-looking for future ASDF3 compatibility so that Quicklisp might continue to work with :DEFSYSTEM-DEPENDS-ON clauses like it used to?<br>
<br>
[122]: <a href="https://github.com/quicklisp/quicklisp-client/pull/122" style="color:#777">https://github.com/quicklisp/quicklisp-client/pull/122</a><br>
[128]: <a href="https://github.com/quicklisp/quicklisp-client/pull/128" style="color:#777">https://github.com/quicklisp/quicklisp-client/pull/128</a></p>
</blockquote></div>
<div style="white-space:normal">
</div>
</div>
</body>
</html>