Skip to content

:DEFSYSTEM-DEPENDS-ON dependencies #108

Open
@luismbo

Description

@luismbo

I get the following error if I don't have CFFI installed beforehand when attempting to load trivial-features-tests whose ASDF system depends on cffi-grovel via :defsystem-depends-on:

* (ql:quickload "trivial-features-tests")
Error while trying to load definition for system
trivial-features-tests from pathname
/Users/luis/src/lisp/trivial-features/trivial-features-tests.asd:

   Component ASDF/USER::CFFI-GROVEL not found, required by NIL
   [Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]

Restarts:
 0: [RETRY] Retry EVAL of current toplevel form.
 1: [CONTINUE] Ignore error and continue loading file "/Users/luis/src/lisp/trivial-features/trivial-features-tests.asd".
 2: [ABORT] Abort loading file "/Users/luis/src/lisp/trivial-features/trivial-features-tests.asd".
 3: [RETRY] Retry ASDF operation.
 4: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 5: [ABORT] Give up on "trivial-features-tests"
 --more--

Backtrace:
  0: ((FLET #:HANDLER1584 :IN ASDF/FIND-SYSTEM:LOAD-ASD) Component ASDF/USER::CFFI-GROVEL not found, required by NIL)
  1: (SIGNAL Component ASDF/USER::CFFI-GROVEL not found, required by NIL)
  2: (ERROR ASDF/FIND-COMPONENT:MISSING-DEPENDENCY :REQUIRED-BY NIL :REQUIRES ASDF/USER::CFFI-GROVEL)
  3: (ASDF/FIND-COMPONENT:RESOLVE-DEPENDENCY-NAME NIL ASDF/USER::CFFI-GROVEL NIL)
  4: ((LAMBDA NIL :IN ASDF/PARSE-DEFSYSTEM:REGISTER-SYSTEM-DEFINITION))
  5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/PARSE-DEFSYSTEM:DEFSYSTEM ASDF/USER::TRIVIAL-FEATURES-TESTS :DESCRIPTION "Unit tests for TRIVIAL-FEATURES." :DEFSYSTEM-DEPENDS-ON (ASDF/USER::CFFI-GROVEL) ...) #<NU..
  6: (EVAL-TLF (ASDF/PARSE-DEFSYSTEM:DEFSYSTEM ASDF/USER::TRIVIAL-FEATURES-TESTS :DESCRIPTION "Unit tests for TRIVIAL-FEATURES." :DEFSYSTEM-DEPENDS-ON (ASDF/USER::CFFI-GROVEL) ...) 1 #<NULL-LEXENV>)
  7: ((FLET SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ASDF/PARSE-DEFSYSTEM:DEFSYSTEM ASDF/USER::TRIVIAL-FEATURES-TESTS :DESCRIPTION "Unit tests for TRIVIAL-FEATURES." :DEFSYSTEM-DEPENDS-ON (ASDF/USER:..
  8: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /Users/luis/src/lisp/trivial-features/trivial-features-tests.asd" {100580C783}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
  9: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /Users/luis/src/lisp/trivial-features/trivial-features-tests.asd" {100580C783}> NIL)
 10: (LOAD #P"/Users/luis/src/lisp/trivial-features/trivial-features-tests.asd" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :UTF-8)
 11: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {100580845B}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
 12: ((LAMBDA NIL :IN ASDF/FIND-SYSTEM:LOAD-ASD))
 13: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN ASDF/FIND-SYSTEM:LOAD-ASD) {10058082FB}>)
 14: ((LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM))
 15: (ASDF/CACHE:CONSULT-ASDF-CACHE (ASDF/SYSTEM:FIND-SYSTEM "trivial-features-tests") #<CLOSURE (LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM) {10057F387B}>)
 16: (ASDF/CACHE:CALL-WITH-ASDF-CACHE #<CLOSURE (LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM) {10057F387B}> :OVERRIDE NIL :KEY (ASDF/SYSTEM:FIND-SYSTEM "trivial-features-tests"))
 17: ((:METHOD ASDF/SYSTEM:FIND-SYSTEM (STRING)) "trivial-features-tests" NIL) [fast-method]
 18: ((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "trivial-features-tests")
 19: ((LAMBDA NIL :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY)) [external]
 20: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA NIL :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) {10057F37DB}>)
 21: (QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY #<unavailable argument>)
 22: (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES "trivial-features-tests" :PROMPT NIL)
 23: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION (T T)) #<unavailable argument> #<CLOSURE (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {10057F073B}>) [fast-method]
 24: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION :AROUND (QL-IMPL:SBCL T)) #<QL-IMPL:SBCL {10038AE3F3}> #<CLOSURE (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {10057F073B}>) [fast-me..
 25: ((:METHOD QUICKLISP-CLIENT:QUICKLOAD (T)) #<unavailable argument> :PROMPT NIL :VERBOSE NIL) [fast-method]
 26: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA NIL :IN QUICKLISP-CLIENT:QUICKLOAD) {10057E541B}>)
 27: (SB-INT:SIMPLE-EVAL-IN-LEXENV (QUICKLISP-CLIENT:QUICKLOAD "trivial-features-tests") #<NULL-LEXENV>)
 28: (EVAL (QUICKLISP-CLIENT:QUICKLOAD "trivial-features-tests"))

I'm using quicklisp-client 2014-12-10 and ASDF 3.1.3.

Activity

quicklisp

quicklisp commented on Dec 18, 2014

@quicklisp
Owner

I chalked this up to not wrapping the load planning in the auto-load handler, but it's trickier than that. :DEFSYSTEM-DEPENDS-ON signals one kind of error on a missing component, and :DEPENDS-ON signals a completely different (and much more useful) error. In fact, the former error hides the "real" error in an un-exported slot on the condition.

So, I realize this is annoying, and I want to fix it, but it's a little trickier than I thought it might be at first glance, so it may take a while, and some unpleasant fudging with ASDF internals.

luismbo

luismbo commented on Dec 18, 2014

@luismbo
Author

No problem, I work around this issue by loading cffi-grovel explicitly beforehand. Thanks for looking into it.

quicklisp

quicklisp commented on Jan 13, 2015

@quicklisp
Owner

Ok, with the January 2015 release, the dependencies are more explicit in the indexes, and I believe this issue is fixed. If you have any trouble with the new release, please let me know.

quicklisp/quicklisp-controller@8d7a8b5 is the commit that cleaned it up.

luismbo

luismbo commented on Jan 20, 2015

@luismbo
Author

I'm still getting an error. https://travis-ci.org/trivial-features/trivial-features/jobs/47704343#L834 Am I doing something wrong?

quicklisp

quicklisp commented on Jan 20, 2015

@quicklisp
Owner

Ok, I see why that's happening, and why I thought it was fixed but it isn't (for this scenario).

The part I fixed is when loading trivial-features-tests (or certain iolib things) from Quicklisp. But the problem with the :defsystem-depends-on dependencies remains when the system is being overridden via ASDF. I'll keep digging for that solution.

Shinmera

Shinmera commented on Jun 10, 2015

@Shinmera

This also happens in the following case:
A local-projects system defsystem-depends-on another local-projects system. The dependencies of the second system are not fetched through quicklisp when the first system is quickloaded. I suppose this falls into the same "ASDF overrides" category as mentioned.

quicklisp

quicklisp commented on Jun 10, 2015

@quicklisp
Owner

There's another issue at play. The error signaled when a :depends-on system is absent is different from the error signaled when a :defsystem-depends-on system is absent. So my hoped-for fix (wrapping the handler over a bigger scope) doesn't work.

otwieracz

otwieracz commented on Nov 26, 2015

@otwieracz

I've just run into similar issue. Isolated test case: http://paste.lisp.org/display/160873#2

mtstickney

mtstickney commented on Sep 11, 2016

@mtstickney

You might already be aware of this, but loading a system that uses :defsystem-depends-on directly from quicklisp still yields an error: with the 2016-08-25 quicklisp dist and the 2016-02-22 client, (ql:quickload :quri-test) returns an error about :prove-asdf being a missing dependency, even though :prove-asdf can be quickload-ed directly.

MatthewRock

MatthewRock commented on Aug 25, 2017

@MatthewRock

I have this problem when trying to quickload my project:

Error while trying to load definition for system clox from
pathname /home/malice/Programming/Lisp/clox/clox.asd:
   Component :DEPLOY not found, required by NIL

Not only that, repeating the command yields no error, but the system is not loaded.

Quickloading :deploy (the dependency) fixes the issue.

The project, as you can see, is in the path supplied to asdf by :tree option in projects.conf file.

My versions are:

CL-USER> (ql:client-version)
"2016-02-22"
CL-USER> (ql:update-all-dists)
1 dist to check.
You already have the latest version of "quicklisp": 2017-07-25.
NIL

The relevant path of asd file:

:defsystem-depends-on (:deploy)

After quickloading the system deploy manually, the error is fixed.

fstamour

fstamour commented on Jan 18, 2018

@fstamour

I'm having the same problem with :defsystem-depends-on (#:prove) as prove's readme suggest to use.

Is there something somebody could do about this?

What's the error thrown by defsystem-depends-on and where would one look in quicklisp to (try to) fix that?

8 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      :DEFSYSTEM-DEPENDS-ON dependencies · Issue #108 · quicklisp/quicklisp-client