I've managed to get asdf-dependency-grovel to load. There is a comment in adg/tests/grovel-test.lisp that ASDF 3.1 is required. Okay, I have ASDF 3.1.5 laying around so I loaded that. Now SBCL can load adg.
The test script adg/tests/run-tests.sh runs (with modifications) but all of the tests fail -- it appears that no dependencies are identified. I enabled *DEBUG-TRACE* in variables.lisp, and I get some output which suggests something is happening, which is encouraging. Faré, can you say anything about what one should expect to see in the debug output if stuff is working correctly? Can you see anything amiss in the output shown below?
best,
Robert
PS. Here is the output for adg/tests/u-defconstant.lisp. That file contains just
(cl:in-package :asdf-dependency-grovel-test) (defvar test-defconstant-user.1 test-defconstant.1)
which references TEST-DEFCONSTANT.1, which is defined in p-defconstant.lisp, so that's the dependency that's supposed to be detected. The output for other tests is similar.
----- begin output ----- DEBUG: Perform load-source-op #<ASDF-DEPENDENCY-GROVEL:INSTRUMENTED-CL-SOURCE-FILE "test-serial-system" "u-defconstant"> DEBUG: Operating on (:ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) DEBUG: Operating on (:FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) DEBUG: Operating on ((:FORM 0 :FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) 0 "(IN-PACKAGE :ASDF-DEPENDENCY-GROVEL-TEST)") DEBUG: Done operating on ((:FORM 0 :FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) 0 "(IN-PACKAGE :ASDF-DEPENDENCY-GROVEL-TEST)") DEBUG: Operating on ((:FORM 1 :FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) 44 "(DEFVAR TEST-DEFCONSTANT-USER.1 ...)") DEBUG: Done operating on ((:FORM 1 :FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) 44 "(DEFVAR TEST-DEFCONSTANT-USER.1 ...)") DEBUG: Done operating on (:FILE
#P"/home/robert/by-others/asdf-dependency-grovel-master/tests/u-defconstant.lisp" :ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) DEBUG: Done operating on (:ASDF ("test-serial-system" "u-defconstant") :ASDF ("test-serial-system") . T) ----- end output -----
On Fri, Dec 16, 2022 at 2:08 AM Robert Dodier robert.dodier@gmail.com wrote:
I've managed to get asdf-dependency-grovel to load. There is a comment in adg/tests/grovel-test.lisp that ASDF 3.1 is required. Okay, I have ASDF 3.1.5 laying around so I loaded that. Now SBCL can load adg.
Or later. I recommend testing with the latest ASDF.
The test script adg/tests/run-tests.sh runs (with modifications) but all of the tests fail -- it appears that no dependencies are identified. I enabled *DEBUG-TRACE* in variables.lisp, and I get some output which suggests something is happening, which is encouraging. Faré, can you say anything about what one should expect to see in the debug output if stuff is working correctly? Can you see anything amiss in the output shown below?
This output doesn't help me. Are the files now visited by the perform method in order? It looks like that might be the case, but make sure.
If that still fails, rather than the asdf plumbing itself, can you identify if the dependency instrumentation is still working on the latest SBCL? IIRC, adg relies on some low-level SBCL interfaces that might have bitrotten.
Sorry, I haven't used that in production in over ten years and have no time to dive into CL code at the moment.
Good luck!
—♯ƒ • François-René Rideau • Co-Founder and President, MuKn.io “Welfare: when you love strangers so much you're willing to have government steal money from another stranger to help them out.” http://bit.ly/ahVPBj
On Fri, Dec 16, 2022 at 3:07 AM Faré fahree@gmail.com wrote:
Or later. I recommend testing with the latest ASDF.
I tried a later version (3.2 or 3.3, I forget which) and adg fails to load. I think I'll stick w/ the last known working version until I sort out getting it to run ...
This output doesn't help me. Are the files now visited by the perform method in order? It looks like that might be the case, but make sure.
I'll take a look to see in what order files are processed.
If that still fails, rather than the asdf plumbing itself, can you identify if the dependency instrumentation is still working on the latest SBCL?
How would I determine if the dependency instrumentation is working? It is not working in the sense that the known dependencies are not detected -- do you mean something else?
IIRC, adg relies on some low-level SBCL interfaces that might have bitrotten.
Okay, there is a warning about an internal SB-something function -- I'll look at whether the relevant code can be updated.
Thanks for your help,
Robert
I tried a later version (3.2 or 3.3, I forget which) and adg fails to load. I think I'll stick w/ the last known working version until I sort out getting it to run ...
It loads perfectly for me: sbcl --eval "'(#.(require :asdf) #.(in-package :asdf) #.(upgrade-asdf) #.(load-system :asdf-dependency-grovel))" --quit No error.
If that still fails, rather than the asdf plumbing itself, can you identify if the dependency instrumentation is still working on the latest SBCL?
How would I determine if the dependency instrumentation is working? It is not working in the sense that the known dependencies are not detected -- do you mean something else?
See if fine-grain-instrumented-load works with the expected side-effects, emitting the suitable signal-user, signal-provider, and other signal-* events.
At this point, you have to read the source code. I don't believe anyone is left to help you. But if you have specific questions, I can read the source code too and maybe remember more context. (NB: I didn't write that code, but I oversaw an intern who used it, and tweaked it a little bit to package it better.)
Okay, there is a warning about an internal SB-something function -- I'll look at whether the relevant code can be updated.
Again, good luck, and happy holidays!
—♯ƒ • François-René Rideau • Co-Founder and President, MuKn.io “If all values are relative, then cannibalism is a matter of taste.” — Leo Strauss
On Fri, Dec 16, 2022 at 2:25 PM Faré fahree@gmail.com wrote:
sbcl --eval "'(#.(require :asdf) #.(in-package :asdf) #.(upgrade-asdf) #.(load-system :asdf-dependency-grovel))" --quit No error.
I tried it again with ASDF 3.3 + SBCL 2.1.1, and I can load adg successfully, with a couple of (push "path/to/adg/" asdf:*central-registry*) to help it along. However, when I try to run the unit tests, I get an error from ASDF about "failed to mark it done". There is also a warning about "proper dependencies" as well.
* (asdf-dependency-grovel-tester:test-result)
WARNING: Deprecated recursive use of (ASDF/OPERATE:OPERATE 'ASDF/LISP-ACTION:LOAD-OP '("test-serial-system")) while visiting (ASDF-DEPENDENCY-GROVEL:DEPENDENCY-OP "test-serial" "asdf-dependency-grovel-test/serial") - please use proper dependencies instead
debugger invoked on a SIMPLE-ERROR in thread #<THREAD "main thread" RUNNING {1004E802F3}>: Just performed compiling #<INSTRUMENTED-CL-SOURCE-FILE "test-serial-system" "package"> but failed to mark it done
I think this error is the reason that I decided to use an earlier (3.1) version of ASDF -- sorry for getting mixed up in what I said about it.
I'll look at the other debugging hints you mentioned.
best,
Robert
I tried it again with ASDF 3.3 + SBCL 2.1.1, and I can load adg successfully, with a couple of (push "path/to/adg/" asdf:*central-registry*) to help it along.
I strongly recommend using the ASDF2-era source-registry instead.
However, when I try to run the unit tests, I get an error from ASDF about "failed to mark it done". There is also a warning about "proper dependencies" as well.
I see that the way that perform calls load-instrumented-systems that calls load-asd is very incompatible with asdf 3.3. I don't understand what this whole thing is about, but it smells very wrong to me. Presumably, these shenanigans should instead be replaced by some instrumentation of define-op (that failed to exist before asdf 3.3). And dependency-op should possibly be also replaced by the same instrumentation of load-source-op.
Deprecated recursive use of (ASDF/OPERATE:OPERATE 'ASDF/LISP-ACTION:LOAD-OP '("test-serial-system")) while visiting (ASDF-DEPENDENCY-GROVEL:DEPENDENCY-OP "test-serial" "asdf-dependency-grovel-test/serial")
- please use proper dependencies instead
Yup, this is very incompatible with ASDF 3.3, that both offers and requires much better ways to do things.
—♯ƒ • François-René Rideau • Co-Founder and President, MuKn.io “The fool considers that what he doesn't understand is either extremely stupid, or extremely intelligent, pending on how others react to it.” — Nassim Taleb