Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ql-dist:dependency-tree signals no-applicable-method #97

Open
m-n opened this issue Mar 29, 2014 · 4 comments
Open

ql-dist:dependency-tree signals no-applicable-method #97

m-n opened this issue Mar 29, 2014 · 4 comments

Comments

@m-n
Copy link
Contributor

m-n commented Mar 29, 2014

On client 2014-01-30

dependency-tree expects calling ql-dist:find-system on an element of a system's required-systems to return a system object. This expectation is violated for at least "asdf", which leads to dependency-tree being called recursively on nil and signalling. Using asdf-finalizers as an example because it only has the one required system:

;(in-package ql-dist)
(required-systems (find-system "asdf-finalizers"))
("asdf")

;(in-package ql-dist)
(find-system "asdf")
NIL

;(in-package ql-dist)
(dependency-tree "asdf-finalizers") 

There is no applicable method for the generic function:
  #<STANDARD-GENERIC-FUNCTION DEPENDENCY-TREE #x3020008D131F>
when called with arguments:
  (NIL)
   [Condition of type CCL:NO-APPLICABLE-METHOD-EXISTS]
    Restarts:   [snip]

Backtrace:
  0: (#<CCL::STANDARD-KERNEL-METHOD NO-APPLICABLE-METHOD (T)> #<STANDARD-GENERIC-FUN$
      Locals:
        CCL::GF = #<STANDARD-GENERIC-FUNCTION DEPENDENCY-TREE #x3020008D131F>
        CCL::ARGS = (NIL)
  1: (NIL #<Unknown Arguments>)
      [No Locals]
  2: ((:INTERNAL (DEPENDENCY-TREE (SYSTEM))))                                                  Locals:                                                                                #:G8125 = (NIL)
         #:G8126 = (NIL)
        #:G8129 = ("asdf")
        #:G8127 = "asdf"
        SYSTEM = #<SYSTEM asdf-finalizers / asdf-finalizers-20130615-git / quicklisp$
@quicklisp
Copy link
Owner

dependency-tree is meant only for objects of type ql-dist:system, not ASDF systems. It can't be used on projects not indexed within a dist (e.g. your own projects).

@quicklisp
Copy link
Owner

It could be fixed to catch that NIL error, though...

@m-n
Copy link
Contributor Author

m-n commented Mar 31, 2014

To be clear, the above error is signaled from a code path that uses a ql-dist:system (see frame 2 of the trace).

I suspect that the actual bug here is that "asdf" is allowed as a member of a ql system's required-systems, but (ql-dist:find-system "asdf") does not produce a system. I believe changing that would fix dependency-tree.

If that is actually intended, then would the ideal behavior of dependency-tree be to remove the questionable nodes from its output?

@quicklisp
Copy link
Owner

Ugh. That's an indexing issue. ASDF shouldn't be in depends-on lists. It doesn't make a lick of sense. I'll have to think about it a bit more.

quicklisp pushed a commit that referenced this issue Jun 6, 2014
However, the index issue still remains: ASDF should not be listed by
name as a dependency of any system.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants