<div dir="auto"></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Faré</strong> <span dir="auto"><<a href="mailto:fahree@gmail.com">fahree@gmail.com</a>></span><br>Date: Thu, Dec 15, 2022, 04:02<br>Subject: Re: Lisp file and/or ASDF dependency analysis; trying to load asdf-dependency-grovel<br>To: Robert Dodier <<a href="mailto:robert.dodier@gmail.com">robert.dodier@gmail.com</a>><br></div><br><br><div dir="auto">asdf-dependency-grovel predates asdf 2, and probably bitrotted with asdf 3. My guess is that its dependency-op needs a prepare-dependency-op the same way that load-source-op has a prepare-load-source-op.<div dir="auto">The entire class hierarchy could probably be lifted the same way, except of course for the perform method.</div><div dir="auto"><br></div><div dir="auto">Sorry I have no time to dig into the code. Hope this helps.</div><div dir="auto"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 15, 2022, 02:08 Robert Dodier <<a href="mailto:robert.dodier@gmail.com" target="_blank" rel="noreferrer">robert.dodier@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, I'm interested in analyzing dependencies among a collection of<br>
Lisp files, or analyzing dependencies stated in a .asd file, or both.<br>
<br>
(1) Towards the goal of analyzing dependencies among Lisp files, I'm<br>
trying to load asdf-dependency-grovel, and I'm not having any luck. I<br>
obtained a tar.gz of the current version from Gitlab, from the project<br>
<a href="https://gitlab.common-lisp.net/xcvb/asdf-dependency-grovel" rel="noreferrer noreferrer noreferrer" target="_blank">https://gitlab.common-lisp.net/xcvb/asdf-dependency-grovel</a>. I found it<br>
necessary to patch tests/run-tests.sh to get anywhere (patch below)<br>
and I get the following error at this point:<br>
<br>
------------------------------------------------<br>
$ sh tests/run-tests.sh<br>
This is SBCL 2.1.6, an implementation of ANSI Common Lisp.<br>
<br>
WARNING: redefining UIOP/UTILITY:PARSE-BODY in DEFUN<br>
WARNING:<br>
   Deprecated recursive use of (ASDF/OPERATE:OPERATE 'ASDF/LISP-ACTION:LOAD-OP<br>
   '("test-serial-system")) while visiting<br>
   (ASDF-DEPENDENCY-GROVEL:DEPENDENCY-OP "test-serial"<br>
    "asdf-dependency-grovel-test/serial")<br>
   - please use proper dependencies instead<br>
<br>
debugger invoked on a SIMPLE-ERROR in thread<br>
#<THREAD "main thread" RUNNING {988AB081}>:<br>
  Just performed compiling #<INSTRUMENTED-CL-SOURCE-FILE<br>
"test-serial-system" "package"> but failed to mark it done<br>
------------------------------------------------<br>
<br>
Can anyone offer any advice about the "failed to mark it done" error?<br>
or the bit about "deprecated recursive use"?<br>
<br>
(2) About looking at dependencies stated in a .asd file, I have a .asd<br>
file which ASDF is refusing to load because it has a circular<br>
dependency. Is there a way to get ASDF to tell me what that circular<br>
dependency is? Failing that, can someone suggest any tools to extract<br>
a directed graph from a .asd file? I suppose it wouldn't be too hard<br>
to do it myself but no need to reinvent the wheel.<br>
<br>
I'm thinking I could find a graph analysis library to extract any<br>
cycles, if I had a directed graph in hand. I don't suppose someone has<br>
already automated looking for cycles in .asd files?<br>
<br>
Thanks in advance for any advice, I appreciate your help.<br>
<br>
best,<br>
<br>
Robert Dodier<br>
<br>
PS. Here's my patch for asdf-dependency-grovel.<br>
<br>
$ diff -u tests/run-tests.sh-original tests/run-tests.sh<br>
--- tests/run-tests.sh-original 2022-12-13 22:39:50.174826971 -0800<br>
+++ tests/run-tests.sh 2022-12-13 22:43:41.675974917 -0800<br>
@@ -5,7 +5,10 @@<br>
<br>
 ADG_TEST_DIR="$(dirname $0)"<br>
<br>
-$LISP --load ${ADG_TEST_DIR}/grovel-tests.lisp --eval '(uiop:quit<br>
(asdf-dependency-grovel-tester:test-result))'<br>
+$LISP --eval '(require (quote asdf))'\<br>
+ --eval '(push<br>
"/home/robert/by-others/asdf-dependency-grovel-master/"<br>
asdf:*central-registry*)'\<br>
+ --eval '(push<br>
"/home/robert/by-others/asdf-dependency-grovel-master/tests/"<br>
asdf:*central-registry*)'\<br>
+ --load ${ADG_TEST_DIR}/grovel-tests.lisp --eval '(uiop:quit<br>
(asdf-dependency-grovel-tester:test-result))'<br>
 STATUS=$?<br>
 rm -rf asdf-dependency-grovel-tmp-*<br>
 #$LISP --load ${ADG_TEST_DIR}/grovel-tests.lisp --eval<br>
'(asdf-dependency-grovel-tester:check-base-deps)' --eval '(uiop:quit)'<br>
<br>
</blockquote></div>
</div>