I've made still more progress on getting asdf-dependency-grovel running. At this point most of the unit tests are successful; there are only a couple of failed tests, both having to do with DEFTYPE.
Here's what I'm getting now. I am working on an ancient Ubuntu (14.04) system. In the interest of clarity I've suppressed the SBCL banner.
$ sbcl --no-userinit --script tests/run-tests.lisp This is SBCL 2.1.6, an implementation of ANSI Common Lisp. [...] WARNING: :SB-EVAL is no longer present in *FEATURES* ;;; TESTS failed: ;; u-deftype.satisfies should have: ("p-deftype"), has NIL ;; u-deftype.bar should have: ("p-deftype"), has NIL
The warning about :SB-EVAL is coming from loading ASDF.
The failed test cases are, respectively,
(in-package :asdf-dependency-grovel-test) (deftype uses-satisfies () `(satisfies satisfies-something))
and
(in-package :asdf-dependency-grovel-test) (deftype uses-bar () `(or (not bar) (and bar rational)))
while the corresponding provider is
(in-package :asdf-dependency-grovel-test)
(deftype foo () 'string) (deftype bar () 'integer) (defun satisfies-something (#1=#:a) (declare (ignore #1#)) t)
I wonder why the appropriate dependency wasn't detected, but I'm not too worried about it. ADG is still useful even if it misses these.
Here is the content of tests/run-tests.lisp, which I concocted after tinkering a bit.
(load "/home/robert/by-others/asdf-3.1.5/build/asdf.lisp") (push "/home/robert/by-others/asdf-dependency-grovel-master/" asdf:*central-registry*) (push "/home/robert/by-others/asdf-dependency-grovel-master/tests/" asdf:*central-registry*) (load "tests/grovel-tests.lisp") (load "handlers/00-standard-handlers.lisp") (asdf-dependency-grovel-tester:test-result)
There are various questionable aspects of that, which I'll point out, although they don't really bother me too much -- I'm not responsible for ADG.
(1) I was able to get ADG working only with this particular combination of SBCL (2.1.6) and ASDF (3.1.5). There might be other workable combinations, however, some or all later versions of ASDF trigger errors in ADG.
(2) Use of ASDF:*CENTRAL-REGISTRY* is terrible. Okay, well, it works.
(3) It appears the handlers file is supposed to be loaded by ASDF, which, I guess, is supposed to scan the handlers directory, but something in that process didn't work, so it's loaded by hand.
ADG constructs a new .asd file from the inferred dependencies (and writes it into the ASDF output cache -- maybe that could be mentioned in a readme or something) and I present it here as a kind of trophy.
All the best,
Robert Dodier
PS. groveled-components.lisp:
;;; This file contains -*- lisp -*- expressions. ;;; AUTO-GENERATED file from system definition of system (test-serial-system). Instead of directly editing this file, please edit the system definition and re-generate this file. ( ("test-serial-system" :components ( (:file "package" :encoding :utf-8) (:file "p-defmacro" :depends-on ("package") :encoding :utf-8) (:file "p-define-method-combination" :depends-on ("package") :encoding :utf-8) (:file "p-feature" :depends-on ("package") :encoding :utf-8) (:file "p-defvar" :depends-on ("package") :encoding :utf-8) (:file "p-define-setf-expander" :depends-on ("package") :encoding :utf-8) (:file "p-defsetf" :depends-on ("package") :encoding :utf-8) (:file "p-defclass" :depends-on ("package") :encoding :utf-8) (:file "p-defstruct" :depends-on ("package") :encoding :utf-8) (:file "p-defgeneric" :depends-on ("package") :encoding :utf-8) (:file "p-defmethod" :depends-on ("package") :encoding :utf-8) (:file "p-define-condition" :depends-on ("package") :encoding :utf-8) (:file "p-defpackage" :depends-on ("package") :encoding :utf-8) (:file "p-defun" :depends-on ("package") :encoding :utf-8) (:file "p-define-symbol-macro" :depends-on ("package") :encoding :utf-8) (:file "p-defconstant" :depends-on ("package") :encoding :utf-8) (:file "p-deftype" :depends-on ("package") :encoding :utf-8) (:file "u-defmacro" :depends-on ("p-defmacro" "package") :encoding :utf-8) (:file "u-defmacro.indirect" :depends-on ("p-defmacro" "package") :encoding :utf-8) (:file "u-define-method-combination" :depends-on ("p-define-method-combination" "package") :encoding :utf-8) (:file "u-feature" :depends-on ("p-feature" "package") :encoding :utf-8) (:file "u-defvar" :depends-on ("p-defvar" "package") :encoding :utf-8) (:file "u-defvar.vector" :depends-on ("p-defvar" "package") :encoding :utf-8) (:file "u-defvar.setf" :depends-on ("p-defvar" "package") :encoding :utf-8) (:file "u-defvar.push" :depends-on ("p-defvar" "package") :encoding :utf-8) (:file "u-define-setf-expander" :depends-on ("p-define-setf-expander" "package") :encoding :utf-8) (:file "u-defsetf" :depends-on ("p-defsetf" "package") :encoding :utf-8) (:file "u-defclass.defclass" :depends-on ("p-defclass" "package") :encoding :utf-8) (:file "u-defclass.defmethod" :depends-on ("p-defclass" "package") :encoding :utf-8) (:file "u-defgeneric" :depends-on ("p-defgeneric" "package") :encoding :utf-8) (:file "u-defmethod" :depends-on ("p-defmethod" "package") :encoding :utf-8) (:file "u-define-condition" :depends-on ("p-define-condition" "package") :encoding :utf-8) (:file "u-defstruct" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defstruct.type" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defstruct.defmethod" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defstruct.functions" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defstruct.functions.sharpquote" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defstruct.include" :depends-on ("p-defstruct" "package") :encoding :utf-8) (:file "u-defpackage" :depends-on ("p-defpackage") :encoding :utf-8) (:file "u-defpackage.1" :depends-on ("p-defpackage") :encoding :utf-8) (:file "u-defpackage.2" :depends-on ("p-defpackage") :encoding :utf-8) (:file "u-defpackage.3" :depends-on ("p-defpackage") :encoding :utf-8) (:file "u-defun" :depends-on ("p-defun" "package") :encoding :utf-8) (:file "u-defun.sharpquote" :depends-on ("p-defun" "package") :encoding :utf-8) (:file "u-define-symbol-macro" :depends-on ("p-define-symbol-macro" "package") :encoding :utf-8) (:file "u-defconstant" :depends-on ("p-defconstant" "package") :encoding :utf-8) (:file "u-deftype.foo" :depends-on ("p-deftype" "package") :encoding :utf-8) (:file "u-deftype.bar" :depends-on ("package") :encoding :utf-8) (:file "u-deftype.satisfies" :depends-on ("package") :encoding :utf-8) (:file "u-deftype.etypecase" :depends-on ("p-deftype" "package") :encoding :utf-8) (:file "u-deftype.typecase" :depends-on ("p-deftype" "package") :encoding :utf-8))) )