Open
Description
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.
Metadata
Metadata
Assignees
Labels
No labels
Activity
quicklisp commentedon Dec 18, 2014
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 commentedon Dec 18, 2014
No problem, I work around this issue by loading cffi-grovel explicitly beforehand. Thanks for looking into it.
quicklisp commentedon Jan 13, 2015
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 commentedon Jan 20, 2015
I'm still getting an error. https://travis-ci.org/trivial-features/trivial-features/jobs/47704343#L834 Am I doing something wrong?
quicklisp commentedon Jan 20, 2015
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 commentedon Jun 10, 2015
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 commentedon Jun 10, 2015
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 commentedon Nov 26, 2015
I've just run into similar issue. Isolated test case: http://paste.lisp.org/display/160873#2
mtstickney commentedon Sep 11, 2016
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.Attempt to mitigate the Quicklisp problem (quicklisp/quicklisp-client…
MatthewRock commentedon Aug 25, 2017
I have this problem when trying to quickload my project:
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 inprojects.conf
file.My versions are:
The relevant path of asd file:
:defsystem-depends-on (:deploy)
After quickloading the system
deploy
manually, the error is fixed.fstamour commentedon Jan 18, 2018
I'm having the same problem with
:defsystem-depends-on (#:prove)
asprove
'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